Tomcat配置手册

snow chuai汇总、整理、撰写---2020/1/22

最后更新时间---2024/01/12


1. JDK安装及配置
1) 安装JDK
[root@tomcat ~]# yum install java-11-openjdk java-11-openjdk-devel -y
2) 设置JDK环境 [root@tomcat ~]# cat > /etc/profile.d/java11.sh <<EOF export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac))))) export PATH=\$PATH:\$JAVA_HOME/bin EOF
[root@tomcat ~]# source /etc/profile.d/java11.sh
3) 确认环境状态 [root@tomcat ~j# java --version openjdk 11.0.6 2020-01-14 LTS OpenJDK Runtime Environment 18.9 (build 11.0.6+10-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.6+10-LTS, mixed mode, sharing)
4) 如果有多个版本,可切换为当前安装的版本 [root@tomcat ~]# alternatives --config java There is 1 program that provides 'java'.
Selection Command ‌----------------------------------------------- *+ 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.6.10-1.el7_7.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number:
5) 创建一个测试程序,确认是否可以正常执行 [root@tomcat ~]# vim daytime.java import java.util.Calendar;
class daytime { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DATE); int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + minute); } }

[root@tomcat ~]# javac daytime.java [root@tomcat ~]# java daytime 2019/10/22 22:39
2. 安装及配置Tomcat
1) 安装Tomcat
[root@tomcat ~]# curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
[root@tomcat ~]# tar zxvf apache-tomcat-9.0.30.tar.gz
[root@tomcat ~]# mv apache-tomcat-9.0.30 /usr/libexec/tomcat9
[root@tomcat ~]# useradd -M -d /usr/libexec/tomcat9 tomcat
[root@tomcat ~]# chown -R tomcat. /usr/libexec/tomcat9
2) 添加tomcat服务文件 [root@tomcat ~]# vim /usr/lib/systemd/system/tomcat.service [Unit] # 对service单元的说明 Description=Apache Tomcat 9 # 等待指定的service/target启动后在启动本服务 After=network.target
[Service] # Type的类型如下: Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。
# onehost用于只需要执行一次性动作而不需要持久运行的单元.即: 在启动后一直等待指定的动作完成,在回到停止状态.状态为: active (exited) Type=oneshot # 启动此服务所需要的命令及参数 ExecStart=/usr/libexec/tomcat9/bin/startup.sh # 停止此服务所需要的命令及参数 ExecStop=/usr/libexec/tomcat9/bin/shutdown.sh # 使用RemainAfterExit=yes服务,它以某种方式改变系统的状态。当想要恢复状态时,只需停止服务。然后即可重新开始,但不是没有先停下来。一个例子就是在文件系统中创建一个标志以供其他应用程序使用的服务。在开始时,它创建标志文件,然后存在,但服务由systemd保持为活动状态。然后你可以停止它,它会删除标志文件。 对服务使用RemainAfterExit=no,这些服务会执行某些操作,但不会更改系统的状态。一个例子是一个清理/tmp的服务。你开始它,它会做它的工作,然后不活动(不需要停止它)。而且您可以随时重新启动并重新开始工作(清理)。 # 即使服务启动之后为exited状态,也认为此服务进程是存在并激活. RemainAfterExit=yes # 执行此进程的属主 User=tomcat # 执行此进程的属组 Group=tomcat
# 把指定的Unit安装到指定的target上,以实现开机自启 [Install] # WantedBy=multi-user.target指的是服务归属的Target是multi-user.target WantedBy=multi-user.target

[root@tomcatl ~]# systemctl enable --now tomcat
3. 访问Tomcat
[root@client ~]# lynx http://tomcat.1000cc.net:8080
4. 测试Tomcat
1) 设定及配置
[root@tomcat ~]# mkdir /usr/libexec/tomcat9/webapps/ROOT/WEB-INF/classes
[root@tomcat ~]# chown tomcat. /usr/libexec/tomcat9/webapps/ROOT/WEB-INF/classes
[root@tomcat ~]# cd /usr/libexec/tomcat9/webapps/ROOT/WEB-INF/classes
[root@tomcat classes]# vim daytime.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Calendar;
public class daytime extends HttpServlet { public void doGet(HttpServletRequest request ,HttpServletResponse response)
throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); Calendar cal = Calendar.getInstance(); out.println("<html>\n<head>\n<title>DayTime</title>\n</head>\n<body>"); out.println("<div style=\"font-size: 40px; text-align: center; font-weight: bold\">"); out.println(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE)); out.println("</div>\n</body>\n</html>"); } }

[root@tomcat ~]# javac -classpath /usr/libexec/tomcat9/lib/servlet-api.jar daytime.java [root@tomcat ~]# vim /usr/libexec/tomcat9/webapps/ROOT/WEB-INF/web.xml ...... ...... ...... ...... ...... ......
# 添加如下内容从<web-app>至</web-app>区段 <servlet> <servlet-name>daytime</servlet-name> <servlet-class>daytime</servlet-class> </servlet> <servlet-mapping> <servlet-name>daytime</servlet-name> <url-pattern>/daytime</url-pattern> </servlet-mapping>

[root@tomcat classes]# cd [root@tomcat ~]# systemctl restart tomcat
2) 客户端访问测试 [root@client ~]# lynx http://tomcat.1000cc.net:8080/daytime 2020/1/22 23:53
5. Apache+Tomcat
1) 确认8009端口是否开放
[root@tomcat ~]# netstat -lantp | grep 8009
tcp6       0      0 :::8009                 :::*                    LISTEN      1927/java 
2) 如果没有开放,请修改 [root@tomcat ~]# vim /usr/libexec/tomcat9/conf/server.xml # 于122行,添加如下内容 <Connector address="::" port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
[root@tomcat ~]# systemctl restart tomcat 3) 配置apache [root@websrv ~]# vim /etc/httpd/conf.d/proxy_ajp.conf ProxyPass /tomcat ajp://tomcat.1000cc.net:8009/
[root@websrv ~]# systemctl restart httpd
4) 客户端测试 [root@client ~]# lynx http://websrv.1000cc.net/tomcat ---结果显示--- Tomcat 页面

 

如对您有帮助,请随缘打个赏。^-^

gold