ubuntu tomcat9安装及远程部署

一、创建一个系统用户

以 root 用户运行 Tomcat 有一个安全风险。我们将会创建一个系统用户和用户组,其主目录为/opt/tomcat。我们将会使用这个用户来运行 Tomcat 服务。想要这么做,输入下面的命令:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

二、下载 Tomcat

使用wget来下载 Tomcat zip 文件到/tmp目录:

VERSION=9.0.45
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz -P /tmp
一旦下载完成,解压 tar 文件到/opt/tomcat目录:

sudo tar -xf /tmp/apache-tomcat-9.0.45.tar.gz -C /opt/tomcat/

前面创建的系统用户必须对 tomcat 安装目录有访问权限。修改目录归属到用户和用户组 tomcat:

sudo chown -R tomcat: /opt/tomcat

在 Tomcat bin目录下的 shell 脚本必须可执行:

sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'

这些脚本将会被用来启动,停止,以及其他对 Tomcat 的管理操作。

三、创建 SystemD 单元文件

与使用 shell 脚本来启动和停止 Tomcat 服务器相比,我们将会将它作为服务来运行。

打开你的文本编辑器,并且在/etc/systemd/system/目录下创建一个 tomcat.service 单元文件。

sudo nano /etc/systemd/system/tomcat.service

粘贴下面的配置文件:

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat9/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat9
Environment=CATALINA_BASE=/opt/tomcat9
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/urandom'

ExecStart=/opt/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat9/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

如果你的 Java 安装路径不一样,请修改JAVA_HOME环境变量。
保存并且关闭文件,通知 systemd 一个新的单元文件存在:

sudo systemctl daemon-reload

启用并且启动 Tomcat 服务:

sudo systemctl enable --now tomcat

检查服务状态:

sudo systemctl status tomcat

输出应该显示 Tomcat 服务器已经启用,并且运行了:

● tomcat.service - tomcat9
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-04-22 20:45:57 CST; 14min ago
    Process: 7422 ExecStart=/opt/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 7446 (java)
      Tasks: 33 (limit: 2219)
     Memory: 206.0M
     CGroup: /system.slice/tomcat.service
             └─7446 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat9/conf/logging.pr>

...

你可以 像其他 systemd 服务一样 启动,停止和重启 Tomcat:

sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat

四、配置防火墙

如果你的服务器被防火墙保护,并且你想从外面访问你的Tomcat,你需要打开8080端口。

使用下面的命令打开必要的端口:

sudo ufw allow 8080/tcp

五、配置 Tomcat 网页管理界面

正在此时,你应该通过一个浏览器在8080端口访问 Tomcat。网页管理界面不能访问,因为我们还没有创建一个用户。

Tomcat 用户和角色被定义在 tomcat-users.xml。这个文件是一个带有注释和示例的模板,展示如何创建一个用户和角色。

在这个例子中,我们将会创建一个用户“admin-gui” 和 “manager-gui” 角色。这个 “admin-gui”角色允许用户访问/host-manager/htmlURL 来创建,删除和其他对虚拟主机的管理。这个“manager-gui”角色允许用户部署和解除部署 web 应用,而不用通过/host-manager/html界面重启整个容器。

打开tomcat-users.xml文件,创建一个新用户,像下面这样:

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

确保你将用户名和密码修改得更加安全。

默认情况下,Tomcat 网页管理界面被配置仅仅从 localhost 访问 Manager 和 Host Manager 应用。想要从远程 IP 访问网页界面,你需要移除这些限制。

这可能会有一些安全隐患,我们不推荐在生产系统中这么做。

想要从任何地方都能访问网页界面,打开配置的两个文件,注释或者移除注释的部分。

对于 Manager:

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

对于 Host Manager:

sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

如果你只想从指定的 IP 访问网页界面,不要注释这一段,而是将你的公网 IP 地址加进去。(如果想在其它地方访问,则注释掉…)

假如说你的公网 IP 是41.41.41.41,并且你想允许从那个 IP 访问网页界面:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>

被允许的 IP 列表以|来分隔。你可以添加一个简单的 IP 地址,或者使用正则表达式。

一旦完成,重启 Tomcat 服务,使应用生效:

sudo systemctl restart tomcat

六、测试 Tomcat 安装

打开你的浏览器,输入:http://<your_domain_or_IP_address>:8080

Tomcat 网页应用管理在:

http://<your_domain_or_IP_address>:8080/manager/html

Tomcat 虚拟主机管理在:

http://<your_domain_or_IP_address>:8080/host-manager/html

七、IDEA远程部署tomcat9

  • 1.找到tomcat的bin目录下的catalina.sh
vim /opt/tomcat/bin/catalina.sh

添加以下内容

JAVA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.rmi.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=你的服务器地址"
export JAVA_OPTS

此处有坑,如果是windows复制过去的,请删除**-Dcom前的回车**

  • 2.修改完后记得重启tomcat并在防火墙开放对应端口
firewall-cmd --list-ports # 查看已开放的端口
firewall-cmd --zone=public --add-port=1099/tcp --permanent  # 开放1099端口
firewall-cmd --reload # 重启防火墙

如果你用的是阿里云,记得在阿里云的安全管理组中开放对应的端口,血泪教训!

  • 3.bug报错
Error running 'tomcat remote run': Unable to connect to the 10.132.12.25:1099, reason: java.rmi.ConnectException: Connection refused to host: 10.132.12.25; nested exception is: java.net.ConnectException: Connection timed out: connect

请检查1099端口是否开放(阿里云安全组是否开放),或者后台是否占用kill掉

4.IDEA报Unable to connect to the xxx.xx.xx.xx:1099
请检查catalina.sh是否有误(如回车,空格)

JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=你的服务器ip"
export JAVA_OPTS
# 直接关闭防火墙
 service firewalld stop
 # 修改防火墙允许的端口号
 firewall-cmd --add-port=8080/tcp --permanent
 # 重新加载防火墙
 firewall-cmd --reload
 # 查看防火墙 是否有8080端口
 firewall-cmd --list-all
吐槽一下:
1.	tomcat启动关闭
报错提示权限有问题,可以将tomcat.service里面的(User=tomcat、Group=tomcat)改为root,让root去执行service(安全方面我就不晓得了哈,我无所畏惧)
2.端口问题
10998080防火墙是否允许,阿里云的安全组是否添加
3.

原文来自:(如何在 Ubuntu 20.04 上安装 Tomcat 9.0)https://zhuanlan.zhihu.com/p/143981355

8.访问

浏览器地址输入服务器ip即可
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值