1.安装JDK
下载到/software文件夹中
# cd /software
# wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz
# cd /software; tar xvf jdk-8u192-linux-x64.tar.gz; mkdir /usr/local/java; mv /software/jdk1.8.0_192 /usr/local/java/; echo "export PATH=\$PATH:/usr/local/java/jdk1.8.0_192/bin" >> /etc/profile; source /etc/profile;
# java -version
检查版本
java version "1.8.0_192"
注:在一台机器上如果有多个JDK版本
则环境变量字符串前面的JDK是使用版本。例如:
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
这句话表示使用JAVA_HOME下的java版本。若:
export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin
这句话表示使用原有版本的java版本(若存在),因为谁在前用谁。
2.安装tomcat
# cd /software
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.29/bin/apache-tomcat-9.0.29.tar.gz
# tar xf apache-tomcat-9.0.29.tar.gz -C /usr/local/
# mv /usr/local/apache-tomcat-9.0.29/ /usr/local/tomcat
启动tomcat
# vim /usr/local/tomcat/bin/startup.sh
停止tomcat
# vim /usr/local/tomcat/bin/shutdown.sh
如果前面在环境变量中加入java不方便(例如别的项目需要另一个版本的java)。
则可以在这两个.sh文件的开始加入
export JAVA_HOME=/usr/local/jdk1.8.0_191/
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
...
其他的原有代码
# ss -nltp
启动后占用8080端口,成功
3.访问tomcat网页服务
# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
注释两行
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
# vim /usr/local/tomcat/conf/tomcat-users.xml
该加的地方加上
<role rolename="manager-gui"/>
<user username="tomcat" password="123" roles="manager-gui"/>
# vim /usr/local/tomcat/conf/server.xml
不喜欢8080就修改
<Connector port="80" protocol="HTTP/1.1" ...
重启
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
访问 IP:8080 成功。
4. tomcat目录结构
# cd /usr/local/tomcat/webapps/ROOT/
这个文件夹是项目文件放置位置。
特别的地方,如果
http://IP:8080/xxx/x.jsp
这种格式,那么xxx文件夹可以放在ROOT里,也可以放在ROOT平级。
都可以通过上面的地址访问。
如果ROOT和平级同时有同样的目录和同样的文件,则访问首先访问平级目录内容。
5.nginx+tomcat
安装nginx:https://blog.csdn.net/VegetandBird_s/article/details/102734071
修改nginx配置文件
# vim /usr/local/nginx/conf/nginx.conf
将下面一段加到http {}配置段里但是不要在server {}配置段里
upstream tomcat {
server 10.1.1.12:8080 weight=1;
server 10.1.1.13:8080 weight=1;
}
此处配置属于nginx部分
https://blog.csdn.net/VegetandBird_s/article/details/103049393
把server {}配置段里下面一段修改
location / {
}
修改成
location ~ .*\.jsp$ {
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
# systemctl restart nginx
6.tomcat利用memcache的session共享
安装memcache:https://blog.csdn.net/VegetandBird_s/article/details/103091765
下载MSM相关的jar包,并拷贝到所有tomcat节点的/usr/local/tomcat/lib/
MSM依赖包
spymemcached-2.12.3.jar
reflectasm-1.11.7.jar
objenesis-3.0.1.jar
msm-kryo-serializer-2.3.2.jar
minlog-1.3.0.jar
memcached-session-manager-tc9-2.3.2.jar --tc9为tomcat的版本号。不同版本号tomcat,对应的包不同。此处为tomcat9的jar包
memcached-session-manager-2.3.2.jar
kryo-serializers-0.42.jar
kryo-4.0.2.jar
asm-7.0.jar
我的git里有这一套。
拷贝到所有tomcat节点的/usr/local/tomcat/lib/目录下
官方组件:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
或我的:https://codeload.github.com/13331033844/msm_jar/zip/master
在所有的tomcat服务器操作
# vim /usr/local/tomcat/conf/context.xml
加入
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:Memcachedd的IP:11211"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
copyCollectionsForSerialization="true"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
测试样例
# vim /usr/local/tomcat/webapps/ROOT/session.jsp
SessionID:<%=session.getId()%> <BR>
SessionIP:<%=request.getServerName()%> <BR>
SessionPort:<%=request.getServerPort()%>
通过session.id判断是否正确。