Tomcat7安装在公网IP为x.x.x.x的服务器上
tomcat安装
第一步,下载server-jre-7u80-linux-x64.tar.gz和apache-tomcat-7.0.90.tar.gz安装包。
登录地址:https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html下载server-jre-7u80-linux-x64.tar.gz安装包。登录地址:https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.90/bin下载apache-tomcat-7.0.90.tar.gz压缩包。然后使用WinSCP将安装包上传到/usr/local/src文件夹中。也可以使用wget命令下载。
命令:cd /usr/local/src
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz
第二步,解压server-jre-7u80-linux-x64.tar.gz和apache-tomcat-7.0.90.tar.gz安装包。
命令:cd /usr/local/src
tar -zxvf server-jre-7u80-linux-x64.tar.gz -C /usr/local
tar -zxvf apache-tomcat-7.0.90.tar.gz -C /usr/local
cd /usr/local
mv apache-tomcat-7.0.90 tomcat1
第三步,将/usr/local/jdk1.7.0_80和/usr/local/tomcat1的所有者及所属组改为tomcat。
命令:useradd tomcat
chown -R tomcat:tomcat /usr/local/jdk1.7.0_80
chown -R tomcat:tomcat /usr/local/tomcat1
第四步,配置环境变量。
配置/etc/profile文件,在文件添加下面的代码:
export JAVA_HOME=/usr/local/jdk1.7.0_80
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 刷新profile文件
命令:source /etc/profile
第五步,测试server-jre是否配置成功。
# 查看jdk版本
命令:java -version
若结果显示server-jre的版本,则说明server-jre配置成功。
tomcat配置及启动
第一步,编辑配置/usr/local/tomcat1中的server.xml文件。
进入文件夹/usr/local/tomcat1/conf,server.xml编辑完成后代码如下:
<?xml version="1.0" encoding="UTF-8"?>
...
<Server port="8105" shutdown="SHUTDOWN"> #port设置为8105
...
<!--线程池优化/>
<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" maxThreads="1000"
minSpareThreads="100" maxSpareThreads="200"
acceptCount="900" disableUploadTimeout="ture"
URIEncoding="UTF-8" enableLookups="false"
compression="on" compressionMinSize="1024"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
...
</Server>
第二步,编辑配置/usr/local/tomcat1/bin下的 catalina.sh文件。
为防止出错,先提前备份一下,然后在第117行添加下面的代码:
JAVA_HOME=/usr/local/jdk1.7.0_80
JRE_HOME=/usr/local/jdk1.7.0_80/jre
# 内存空间优化
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m"
# 赋予catalina.sh执行权限
命令:cd /usr/local/tomcat1/bin
chmod a+x catalina.sh
第三步,测试tomcat1是否配置成功。
命令:cd /usr/local/tomcat1/bin
./startup.sh
netstat -ntl | grep 8081
若结果成功显示“Tomcat started”,则说明tomcat成功启动。
若tomcat启动失败,则可能是启动时使用的端口被其他应用程序占用了,可以查看端口被哪个应用程序占用了。
命令:netstat -nap | grep [tomcat端口号]
或 lsof -i:[tomcat端口号]
或 netstat -ntl | grep [tomcat端口号]
tomcat成功启动后,然后直接根据http://x.x.x.x:8081(http://x.x.x.x/index.jsp)在本地浏览器访问。
若页面成功显示“Apache Tomcat/7.0.90”,则说明tomcat配置成功。
若发现访问不到,则可以查看防火墙是否开着。
# 查看防火墙的状态
命令:systemctl status firewalld.service
# 临时将防火墙关闭
命令:systemctl stop firewalld.service
# 关闭tomcat
命令:./shutdown.sh
第四步,复制tomcat1文件夹1次并都粘贴在/usr/local/文件夹中。
命令:cp -pr /usr/local/tomcat1 /usr/local/tomcat2
第五步,重复“tomcat配置及启动”中的第一、二和三步。
在配置文件server.xml中更改端口号,编辑配置 catalina.sh文件。
不进入tomcat根目录即可进行相应的操作
第一步,进入/etc/rc.d/init.d文件夹,新建文件,命名为tomcat1,并在文件中编写脚本。文件的脚本如下:
#!/bin/bash
#
# tomcat1 startup script for the Tomcat1 server
#
#
# chkconfig: 2345 80 20
# description: start the tomcat1 deamon
#
# Source function library
. /etc/rc.d/init.d/functions
prog=tomcat1
case "$1" in
start)
echo "Starting Tomcat1..."
/usr/local/tomcat1/bin/startup.sh
;;
stop)
echo "Stopping Tomcat1..."
/usr/local/tomcat1/bin/shutdown.sh
;;
res)
echo "Stopping Tomcat1..."
/usr/local/tomcat1/bin/shutdown.sh
sleep 60
echo "Starting Tomcat1..."
/usr/local/tomcat1/bin/startup.sh
;;
*)
echo "Usage: $prog {start|stop|res}"
;;
esac
exit 0
第二步,添加执行权限并设置开机自启。
命令:chmod +x /etc/init.d/tomcat*
# 设置开机自启
命令:chkconfig --add tomcat1
chkconfig tomcat1 on
# 检查tomcat1命令
命令:service tomcat1
Usage: tomcat1 {start|stop|res}
第三步,检查一下脚本是否有用。
命令:/sbin/chkconfig tomcat1 on
sudo /sbin/chkconfig --list tomcat1
如果结果显示“tomcat1 0:off 1:off 2:on 3:on 4:on 5:on 6:off”,则说明脚本文件有用。
第四步,tomcat启动、关闭以及重启命令。
命令:service tomcat1 start
service tomcat1 stop
service tomcat1 restart
第五步,再新建1个文件,命名为tomcat2,重复执行第一、二、三和四步。
第六步,重启服务器,然后查看tomcat是否启动。
命令:reboot
或 shutdown -r now
或 shutdown -r 10
或 init 6
# 查看tomcat是否启动
命令:netstat -nap | grep [tomcat端口号]
或 lsof -i:[tomcat端口号]
或 netstat -ntl | grep [tomcat端口号]
tomcat配置私人共享
第一步,配置/etc/nginx/nginx.conf文件。
keepalive_timeout 65;
upstream mytomcat {
server x1.x1.x1.x1:8081 weight=1;
server x1.x1.x1.x1:8082 weight=1;
}
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://mytomcat;
}
}
第二步,重启nginx服务。
命令:nginx -t
service nginx reload
ps -ef | grep nginx
第三步,分别编辑配置/usr/local/tomcat1/conf/server.xml和/usr/local/tomcat2/conf/server.xml文件。
分别进入文件夹/usr/local/tomcat1/conf和/usr/local/tomcat2/conf,只需配置 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 节点,或者把Cluster节点的注释打开,server.xml编辑完成后代码如下:
<?xml version="1.0" encoding="UTF-8"?>
...
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="x1.x1.x1.x1"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
...
</Server>
第四步,进入/usr/local/tomcat1/conf/Catalina/localhost和/usr/local/tomcat2/conf/Catalina/localhost文件夹,分别创建manager.xml文件。
命令:vim /usr/local/tomcat1/conf/Catalina/localhost/manager.xml
vim /usr/local/tomcat2/conf/Catalina/localhost/manager.xml
将下面的代码复制到manager.xml文件中:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
第五步,进入/usr/local/tomcat1/webapps/manager/WEB-INF和/usr/local/tomcat1/webapps/manager/WEB-INF,分别在web.xml文件中加入下面的标签。
<distributable/>
</web-app>
第六步,进入/usr/local/tomcat1/webapps/manager和/usr/local/tomcat2/webapps/manager,分别创建session.jsp文件。
命令:vim /usr/local/tomcat1/webapps/manager/session.jsp
将下面的代码复制到session.jsp文件中:
<h1>18080</h1>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<BR>
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<BR>
vim /usr/local/tomcat2/webapps/manager/session.jsp
将下面的代码复制到session.jsp文件中:
<h1>28080</h1>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<BR>
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<BR>
第七步,重启tomcat服务,然后查看tomcat是否启动。
命令:service tomcat1 restart
service tomcat2 restart
# 查看tomcat是否启动
命令:netstat -nap | grep [tomcat端口号]
或 lsof -i:[tomcat端口号]
或 netstat -ntl | grep [tomcat端口号]
第八步,查看两个session域是否共享。
直接在本地浏览器访问配置的nginx ip地址+项目名+页面名,即http://x.x.x.x/manager/session.jsp,就可以查看两个session域是否共享,即SessionID是否一样。