我之前的技术方向是PHP,现在是做java,暂且不提两门语言谁优谁劣,我就是感觉什么方便就用什么,适合用什么就用什么.现在做的NLP项目是基于java的web项目,想要在PHP的官网上面挂出来,方法有很多,比如:后端json API转化;无视端口的不一样,前端直接jsonp,当然最简单的办法就是今天提到的apache跟tomcat的整合.博主本身只是刚刚学会了,过程太顺利了,反而害怕以后会不会有什么隐患.遇到问题,以后继续更新在这里.
由于是tomcat跟apache的整合,那我就默认环境中已经有了这两个服务器软件,单纯运行的服务器配置就不再讲解了,只着重讲整合中需要做的工作.
首先打开apache的配置文件:http.conf
在http.conf中打开模块支持:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
如果在你的Apache/modules路径下没有这两个模块,请从我提供的百度云盘上面下载.百度云盘-php-apache-module,我这一步配置走的很顺,如果做完这一步apache启动不起来,就自己找匹配的模块吧.我用的集成环境,没有花时间在这个上面折腾.
然后配置转发请求到tomcat.
在http.conf中引入一个额外的配置文件httpd-proxy.conf,引入方式:Include conf/extra/httpd-proxy.conf,注意路径跟你放置的文件匹配起来.在配置文件中写入你要转发的请求.比如我现在的配置是:
ProxyPass /java/ ajp://127.0.0.1:8009/java/
ProxyPassReverse /java/ ajp://127.0.0.1:8009/java/
这个配置文件的意思是当我收到/java/的请求的时候通过ajp协议转发到ajp://127.0.0.1:8009/java/的URL请求中,其他的就没有什么可玩的了.具体的ProxyPass和ProxyPassReverse使用可以参看这里Apache配置中的ProxyPass 和 ProxyPassReverse .
总结以下:其实来讲这些东西思路都是一样的,就是代理的思想,我们平时遇到的负载均衡,cname请求转发,fq软件都是这个道理,只不过在服务器层间的转发或者封装了的转发要省很多事.需要注意的是路径的映射,从apache中配置的路径转发到tomcat的路径的时候需要对应起来,如果有同名的注意会不会覆盖请求.
参考文章:
Tomcat: Connector中HTTP与AJP差别与整合 – arun_yh – 博客园
整合apache和tomcat构建Web服务器 – iTech – 博客园
这里我选择的是阿里云提供的镜像站点http://mirrors.aliyun.com/,选择了centos6.7的操作系统,因为centos7之后很多的指令不一样了,所以还是不敢冒险尝试的.
附加: 如果主机名不是localhost,请在/etc/hosts 的127.0.0.1 后面加上主机名(查看主机名cat /etc/sysconfig/network 中HOSTNAME=****)
IP的设置通常情况下是需要谨慎的,一旦设置错误了,就可能网络直接断开,只能强行重启物理机了.
如果物理机本身就在身边而且有图形界面的话,可以使用linux的界面操作,怎样都不会出问题,如果物理机不在身边,则需要使用指令了.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
在linux中有两个网卡,一个是eth0,一个是lo,lo是回环网卡.127.0.0.1就是走的这个网卡.
默认的网络应该是DHCP(动态分配),因为我是用的是图形化界面直接设置的,所以下图仅供参考
修改之后使用ifconfig查看以下是否是生效,不生效则重启.不过因为我是采用的界面设置的,所以还是不要参考我的配置.
备份CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
更新缓存
yum makecache
我懒,用的是rpm的安装.为了节省时间.
先使用java -version 查看以下有没有java环境,我的是有的,1.7版本的,所以我需要把这个版本的给替换成我需要的1.8的
[root@admin ~]# rpm -qa | grep java
tzdata-java-2012c-1.el7.noarch
java-1.6.0-openjdk-1.7.0.0-1.45.1.11.1.el6.x86_64
卸载之前的JDK
使用FTP上传工具上传你的JDK文件包,然后使用以下指令安装:
[root@admin ~]# rpm -e --nodeps tzdata-java-2012c-1.el6.noarch
[root@admin ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64
[root@admin local]# rpm -ivh jdk-8-linux-i386.rpm
JDK默认安装在/usr/java中。
配置环境变量
vi + /etc/profile |
修改系统环境变量文件
JAVA_HOME=/usr/java/jdk全名 JRE_HOME=/usr/java/jdk全名/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH |
向文件里面追加以下内容:
使修改生效
[root@admin local]# source /etc/profile //使修改立即生效 |
使用FTP上传工具把tomcat的tar.gz安装包上传,使用以下指令解压
tar -zxvf tomcatXXXX.tar.gz
因为tomcat是绿色版,所以直接解压,然后移动到/usr/tomcat 目录就行了
把以下文本放置到/etc/init.d/tomcat里面.
#!/bin/bash # /etc/rc.d/init.d/tomcat # init script for tomcat precesses # processname: tomcat # description: tomcat is a j2se server # chkconfig: 2345 86 16 # description: Start up the Tomcat servlet engine. if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions else echo -e "\atomcat: unable to locate functions lib. Cannot continue." exit -1 fi RETVAL=$? CATALINA_HOME="/usr/tomcat" #tomcat安装目录,你安装在什么目录下就复制什么目录 case "$1" in start) if [ -f $CATALINA_HOME/bin/startup.sh ]; then echo $"Starting Tomcat" $CATALINA_HOME/bin/startup.sh fi ;; stop) if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then echo $"Stopping Tomcat" $CATALINA_HOME/bin/shutdown.sh fi ;; *) echo $"Usage: $0 {start|stop}" exit 1 ;; esac exit $RETVAL Linux
给脚本加上权限chmod +x /etc/init.d/tomcat
然后测试service tomcat (start | stop)是否能够成功,另外还可以使用chkconfig –add tomcat 添加到启动项
添加防火墙开放端口
#/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
保存防火墙端口
/etc/rc.d/init.d/iptables save
重启防火墙
/etc/init.d/iptables restart
参考资料:
http://xtgly.blog.51cto.com/3159418/1595977
http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891608.html
http://blog.sina.com.cn/s/blog_3eba8f1c0100tsox.html
http://www.cnblogs.com/marsprj/archive/2013/02/08/2893519.html (postgresql)
http://www.cnblogs.com/licheng/archive/2008/01/23/1050116.html