导语:服务器环境为centos7.3,安装完xampp后,希望在它的上面整合tomcat,由apache来管理网站的请求,将访问请求按照不同的类型分配给php或tomcat的jsp来处理。整合完成后,一个网站可以同时打开php和jsp的网页。下面是整合步骤。
安装XAMPP
访问官网下载XAMPP,官网地址为:https://www.apachefriends.org/index.html。直接下载最新的版本就可以了,目前linux最新版本为:xampp-linux-x64-7.2.11-0-installer.run。
可以先下载到本机,然后上传到服务器。或者直接使用wget命令在服务器上下载。
下载完成安装XAMPP:
chmod 755 xampp-linux-x64-7.2.11-0-installer.run ./xampp-linux-x64-7.2.11-0-installer.run
安装很简单,安装完成后,服务器上就有apache、mysql、php、phpmyadmin了,下一步安装jdk和tomcat。
如果要做成自启动服务,请参考文章:在阿里云centos7 64位服务器上安装、配置、优化XAMPP(apache+Mysql+php7)和如何在CENTOS 7.2中使用新的方式(systemctl)添加XAMPP服务使其开机启动。
安装JDK
tomcat运行需要使用jdk,首先我们访问oracle官网下载jdk 8。下载rpm版本,在centos中使用rpm安装。
下载地址为:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
centos 7.3自带有openjdk,我们需要先卸载后再安装oracle的jdk 8。
查看java版本,可以看到Openjdk。
java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
使用rpm来查看哪些java jdk是可以卸载的。
rpm -qa | grep java tzdata-java-2016g-2.el7.noarch javamail-1.4.6-8.el7.noarch javassist-3.16.1-10.el7.noarch java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 pki-base-java-10.3.3-10.el7.noarch java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 nuxwdog-client-java-1.0.3-5.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch
使用下面的命令来卸载Openjdk,一共四个。
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
然后再查看java版本会提示没有找到java了。
java -version bash: java: command not found...
安装jdk 8,先给jdk-8u181-linux-x64.rpm赋予执行权限,然后再使用rpm安装。
chmod +x jdk-8u181-linux-x64.rpm rpm -ivh jdk-8u181-linux-x64.rpm warning: jdk-8u181-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Preparing... ################################# [100%] Updating / installing... 1:jdk1.8-2000:1.8.0_181-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar...
jdk安装成功后,默认存放在/usr/java文件目录中,我们可以前往查看一下。
cd /usr/java ls default jdk1.8.0_181-amd64 latest
配置jdk的PATH,使用vi命令打开/etc/profile,在末尾添加以下内容。centos 7和centos 6 配置方法不一样,有点区别。
vi /etc/profile
- CentOS7
#java environment export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin
- CentOS6
#java environment export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
如果需要查看centos的版本,使用下面的命令:
cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
path配置文件是/etc/profile,可以使用vi直接编辑它,可以看到刚刚加的java路径放在文件的末尾。
设置完后,如果不重启机器的话,需要使用下面的命令来使配置生效。
source /etc/profile
查看PATH是否生效。
echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh-7.5p1/bin:/root/bin:/usr/java/jdk1.8.0_181-amd64/bin
安装tomcat
访问tomcat的官网下载tomcat,下载网址:
https://tomcat.apache.org/download-90.cgi
这里下载的是9.0版本的gz压缩包,直接将压缩包文件放在/opt/目录下面,然后解压。
tar -zxv -f apache-tomcat-9.0.12.tar.gz
删除压缩包。
rm -rf apache-tomcat-9.0.12.tar.gz
然后将目录apache-tomcat-9.0.12改名为tomcat。
mv apache-tomcat-9.0.12 tomcat
使用vi命令打开/etc/profile,在文件末尾添加tomcat的PATH。
vi /etc/profile #tomcat export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/tomcat export PATH=$PATH:${CATALINA_HOME}/bin
使用source命令使配置生效,使用echo查看是否生效。
source /etc/profile echo $PATH
打开tomcat安装目录下的/opt/tomcat/conf/server.xml文件,(大约在69行处)将8080端口的
cd /opt/tomcat/conf vi server.xml
修改后的内容片段。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <!-- A "Connector" using the shared thread pool--> <!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
启动tomcat
tomcat的启动文件为startup.sh,停止文件为shutdown.sh。
cd /opt/tomcat/bin startup.sh Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TMPDIR: /opt/tomcat/temp Using JRE_HOME: /usr/java/jdk1.8.0_181-amd64 Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Tomcat started.
如果启动失败,那么请检查是否有一个系统自带的tomcat在运行了,杀掉进程,然后再执行启动文件。
查看Tomcat。
ps -ef|grep java root 1995 1 0 Sep12 ? 00:38:19 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start root 18812 17494 0 13:14 pts/0 00:00:00 grep --color=auto java
如果你想直接直接杀死Tomcat进程(进程号: 7010),可以使用kill命令
kill -9 1995
然后再启动。
startup.sh
如果无法打开tomcat默认页面,提示无法访问,那么需要打开防火墙的8080端口。centos7.3自带的防火墙是firewall,执行以下命令。
firewall-cmd --permanent --zone=public --add-port=8080/tcp
或者直接打开/etc/firewalld/zones/public.xml配置文件修改。
vi /etc/firewalld/zones/public.xml
重启防火墙。
firewall-cmd --reload
添加tomcat自启动服务
centos 7.3使用systemctl来管理服务。由于centos 7.3可能会自带tomcat,我们需要将自带的服务关闭,然后添加自己的tomcat9。如果不关闭,那么自带的tomcat会抢占端口,这样的话安装的tomcat9就启动不起来了。
查看是否有tomcat服务文件。
cd /lib/systemd/system/ ls /lib/systemd/system/tomcat.service
查看一下有没有tomcat的包。
rpm -qa | grep tomcat
列出所有服务。
systemctl list-unit-files --type=service
禁止自带的tomcat服务。
systemctl disable tomcat.service
systemctl命令合集。
-
systemctl enable tomcat.service
-
systemctl start tomcat.service
-
systemctl stop tomcat.service
-
systemctl status tomcat.service
创建自己的tomcat9服务,先切换到/lib/systemd/system/,然后创建tomcat9.service文件,输入下面的内容。
cd /lib/systemd/system/ vi /lib/systemd/system/tomcat9.service
tomcat9.service文件的内容
[Unit] Description=Tomcat 9 After=network.target [Service] Type=forking ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh PrivateTmp=true [Install] WantedBy=multi-user.target
添加tomcat9服务。
systemctl enable tomcat9.service
启动tomcat9服务。
systemctl start tomcat9.service
查看tomcat是否启动。
ps -ef|grep java
安装Tomcat Connectors (mod_jk)
为xampp中的apache安装Tomcat Connectors控制器,登录网址下载控制器源码包:https://tomcat.apache.org/download-connectors.cgi。
cd /opt wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.44-src.tar.gz
解压源码包。
tar -xzvf tomcat-connectors-1.2.44-src.tar.gz
切换到源代码编译目录。
cd /opt/tomcat-connectors-1.2.44-src/native
configure配置安装脚本。
./configure --with-apxs=/opt/lampp/bin/apxs configure: tokens in APXSLDFLAGS have been prefixed with '-Wl,' checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating apache-2.0/Makefile config.status: creating apache-2.0/Makefile.apxs config.status: creating common/Makefile config.status: creating common/list.mk config.status: creating common/jk_types.h config.status: creating common/config.h config.status: executing depfiles commands config.status: executing libtool commands
如果不知道apxs位置,可以使用下面的命令查看。
whereis apxs apxs: /opt/lampp/bin/apxs
configure完成后,make代码。
make make[1]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native' target="all"; \ list='common apache-2.0'; \ for i in $list; do \ echo "Making $target in $i"; \ if test "$i" != "."; then \ (cd $i && make $target) || exit 1; \ fi; \ done; Making all in common make[1]: Entering directory `/opt/tomcat-connectors-1.2.44-src/native/common' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native/common' Making all in apache-2.0 make[1]: Entering directory `/opt/tomcat-connectors-1.2.44-src/native/apache-2.0' ../scripts/build/instdso.sh SH_LIBTOOL='/opt/lampp/build/libtool --silent' mod_jk.la `pwd` /opt/lampp/build/libtool --silent --mode=install cp mod_jk.la /opt/tomcat-connectors-1.2.44-src/native/apache-2.0/ libtool: install: warning: remember to run `libtool --finish /opt/lampp/modules' make[1]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native/apache-2.0'
make完成后,再安装编译代码。
make install Libraries have been installed in: /opt/lampp/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- chmod 755 /opt/lampp/modules/mod_jk.so Please be sure to arrange /opt/lampp/conf/httpd.conf... make[1]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native/apache-2.0' make[1]: Entering directory `/opt/tomcat-connectors-1.2.44-src/native' make[2]: Entering directory `/opt/tomcat-connectors-1.2.44-src/native' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native' make[1]: Leaving directory `/opt/tomcat-connectors-1.2.44-src/native'
mod_jk.so安装在/opt/lampp/modules/目录下面,需要赋予755权限。
配置apache和tomcat
上面所有需要的安装完成后,我们需要配置各种配置文件,使apache能够代理tomcat的服务请求。
这里将8080当作apache的监听端口,所以tomcat的监听端口改为8081。如果直接使用80端口,无需修改tomcat的监听端口。
将tomcat的监听端口改为8081。
vi /opt/tomcat/conf/server.xml <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <!-- A "Connector" using the shared thread pool--> <!-- <Connector executor="tomcatThreadPool" port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
重启tomcat。
systemctl stop tomcat9.service systemctl start tomcat9.service
在/opt/lampp/etc下新建文件worker.properties,内容为:
vi /opt/lampp/etc/worker.properties worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.lbfactor=1
在/opt/lampp/etc/extra/下新建文件mod_jk.conf,内容包含了刚刚新建的worker.properties文件,内容为:
vi /opt/lampp/etc/extra/mod_jk.conf LoadModule jk_module /opt/lampp/modules/mod_jk.so JkWorkersFile /opt/lampp/etc/worker.properties JkLogFile /opt/tomcat/logs/mod_jk.log JkLogLevel info JkshmFile /opt/tomcat/logs/mod_jk.shm JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " JkRequestLogFormat "%w %V %T" JkAutoAlias /opt/tomcat/webapps JkMount /servlet/* ajp13 JkMount /*.jsp ajp13 JkMount /*.do ajp13 JkMount /test/*.jsp ajp13
JkAutoAlias以下部分其实可以放在vhost.conf文件中为每个网站配置不同的目录路由。
编辑httpd.conf,在文件末尾添加mod_jk.conf文件,重启apache后生效。
vi /opt/lampp/etc/httpd.conf Include /opt/lampp/etc/extra/mod_jk.conf
重启lampp服务,也就是重启apache、mysql、php。
systemctl restart lampp.service
我们可以编辑/opt/lampp/etc/extra/httpd-vhosts.conf,使用JkMount为每个虚拟主机指定不同的tomcat目录路由。
<VirtualHost *:8080> DocumentRoot "/opt/lampp/htdocs/test" Header set Access-Control-Allow-Origin "http://134.166.70.6" DirectoryIndex index.php index.html index.html.var JkAutoAlias /opt/tomcat/webapps JkMount /*WEB-INF ajp13 JkMount /*.jsp ajp13 JkMount /servlet/* ajp13 JkMount /*.do ajp13 JkMount /*.action ajp13 JkMount /test/* ajp13 JkMount /tom/* ajp13 ErrorLog "logs/test-error_log" CustomLog "|/opt/lampp/bin/rotatelogs /opt/lampp/logs/test-access_log_%Y-%m-%d 86400 480" common </VirtualHost>
结束
xampp整合tomcat的过程比较长,希望本篇文章对大家的工作有所帮助。注意,这里另外创建了一个tomcat9.service,你也可以直接在tomcat.service上修改,这样tomcat服务启动的也就是你自己安装的tomcat9了。