下面是详细的攻略:
环境准备
- 确保已经安装了Java环境,Tomcat需要依赖Java运行
sudo apt install default-jdk
- 下载Tomcat
可以在官网下载Tomcat https://tomcat.apache.org/download-90.cgi。
这里以apache-tomcat-9.0.52.tar.gz为例,在终端中执行以下命令进行下载:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz
- 安装Tomcat
先将下载的压缩包解压缩到 /usr/local 下,将其目录改名为 tomcat。
sudo tar -zxvf apache-tomcat-9.0.52.tar.gz -C /usr/local
sudo mv /usr/local/apache-tomcat-9.0.52 /usr/local/tomcat
- 添加Tomcat用户
sudo groupadd tomcat
sudo useradd -g tomcat -s /bin/false -d /usr/local/tomcat tomcat
- 设置Tomcat目录权限
sudo chgrp -R tomcat /usr/local/tomcat/
sudo chmod -R g+r /usr/local/tomcat/conf
sudo chmod -R g+x /usr/local/tomcat/conf
sudo chown -R tomcat /usr/local/tomcat/webapps/
sudo chown -R tomcat /usr/local/tomcat/work/
sudo chown -R tomcat /usr/local/tomcat/temp/
sudo chown -R tomcat /usr/local/tomcat/logs/
配置Tomcat服务
- 新建tomcat.service文件
sudo vim /etc/systemd/system/tomcat.service
- 编写文件内容
[Unit]
Description=Tomcat9
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/default-java
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat
ExecStart=/usr/local/tomcat/bin/catalina.sh start
ExecStop=/usr/local/tomcat/bin/catalina.sh stop
[Install]
WantedBy=multi-user.target
其中JAVA_HOME、CATALINA_PID、CATALINA_HOME、CATALINA_BASE的路径需要根据实际情况修改。
- 更新systemd配置
sudo systemctl daemon-reload
- 启动并设置Tomcat自启动
sudo systemctl start tomcat
sudo systemctl enable tomcat
执行 systemctl status tomcat 可以查看Tomcat服务的状态。
示例
- 部署一个hello world的Servlet。
我们在 $CATALINA_HOME/webapps 下新建一个目录 helloworld,然后在这个目录下新建 WEB-INF 目录。在 WEB-INF 目录下新建一个 web.xml 文件,在该文件中进行 Servlet 的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>helloworld</display-name>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
在 helloworld 目录下新建 HelloWorld.java 文件,编写如下类:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World</h1>");
out.println("</body>");
out.println("</html>");
}
}
当我们访问 /helloworld/hello 的时候,就可以看到输出了。
另外,还可以使用 /usr/share/tomcat9-examples/examples 中的一些示例来测试Tomcat是否正常运行。
例如,在 $CATALINA_HOME/webapps 下新建一个目录 examples,然后将 $CATALINA_HOME/webapps/examples.war 解压缩到该目录下,在浏览器中输入 http://localhost:8080/examples 可以看到 Tomcat 示例应用的主页。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于Ubuntu Server 18.04 LTS 安装Tomcat并配置systemctl管理Tomcat服务的问题 - Python技术站