Linux安装Tomcat

Tomcat简介

Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。Java 的 Web 应用经常会选择它作为应用服务器来提供 Web 服务。由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。
在这里插入图片描述

官网:http://tomcat.apache.org

安装Tomcat

Tomcat国内下载地址:https://mirrors.cnnic.cn/apache/tomcat

Tomcat官方下载地址:https://tomcat.apache.org/download-90.cgi

1、安装java

Tomcat 9需要Java SE 8或更高版本。安装OpenJDK 11(Java平台的开源实现)。

yum install -y java-11-openjdk-devel

java -version

2、创建系统用户

在root用户下运行Tomcat存在安全风险。我们将使用主目录/opt/tomcat/创建一个新的系统用户和组,该用户和组将运行Tomcat服务。

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

3、下载安装tomcat

VERSION=9.0.39
wget --no-check-certificate https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
mkdir -p /opt/tomcat/
tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

4、Tomcat会定期进行更新。为了更好地控制版本和更新,我们将创建一个名为的符号链接latest,该链接指向Tomcat安装目录:

ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

5、先前创建的系统用户必须有权访问tomcat安装目录。将目录所有权更改为用户和组tomcat:

chown -R tomcat: /opt/tomcat

6、使bin目录内的shell脚本可执行:

chmod +x /opt/tomcat/latest/bin/*.sh

7、创建tomcat服务启动文件

cat > /etc/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
EOF

8、启动tomcat服务

systemctl enable --now tomcat

systemctl status tomcat

9、此时应该能够使用Web浏览器8080端口访问Tomcat

http://192.168.92.30:8080/

浏览器访问:

在这里插入图片描述

查看tomcat版本

sh /opt/tomcat/latest/bin/version.sh 

配置Tomcat Web管理界面

由于尚未创建用户,因此无法访问Web管理界面。Tomcat用户和角色在tomcat-users.xml文件中定义。

vim /opt/tomcat/latest/conf/tomcat-users.xml

要创建可以访问tomcat Web界面(manager-gui和admin-gui)的新用户,请编辑文件,如下所示。确保将用户名和密码更改为更安全的名称:

<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 Web管理界面配置为仅允许从本地主机访问,如果您需要从任何地方访问Web界面,需要修改以下文件。

打开manager文件

vim /opt/tomcat/latest/webapps/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>

打开host-manager文件

vim /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访问Web界面,而不是注释这些块,则将您的公共IP添加到列表中。

假设您的公用IP是,41.41.41.41并且您只想允许从该IP访问:

修改/opt/tomcat/latest/webapps/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|41.41.41.41" />
</Context>

修改/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|41.41.41.41" />
</Context>

允许的IP地址列表是用竖线分隔的列表|。您可以添加单个IP地址或使用正则表达式。

完成后,重新启动Tomcat服务以使更改生效:

sudo systemctl restart tomcat

测试访问tomcat管理界面

访问tomcat主界面:

http://192.168.92.30:8080

在这里插入图片描述

Tomcat Web应用程序管理器状态:

http://192.168.92.30:8080/manager/status

在这里插入图片描述

Tomcat Web应用程序管理器仪表板允许您部署,取消部署,启动,停止和重新加载应用程序。可在以下网址获得:

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

在这里插入图片描述

Tomcat虚拟主机管理器仪表板允许您创建,删除和管理Tomcat虚拟主机。可在以下网址获得:

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

host-manager界面:

在这里插入图片描述
参考:https://linuxize.com/post/how-to-install-tomcat-9-on-centos-8/

tomcat部署web应用

Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。

也可以将JSP程序打包成一个war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。

一个war包就是有特性格式的jar包,它是将一个Web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse、NetBeans、ant、JBuilder等。

下载示例war包:https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/

webapps默认目录

[root@localhost ~]# ll /opt/tomcat/latest/webapps/
total 20
drwxr-x--- 15 tomcat tomcat 4096 Oct 28 19:26 docs
drwxr-x---  6 tomcat tomcat   83 Oct 28 19:26 examples
drwxr-x---  5 tomcat tomcat   87 Oct 28 19:26 host-manager
drwxr-x---  6 tomcat tomcat  114 Oct 28 19:26 manager
drwxr-x---  3 tomcat tomcat  283 Oct 28 19:26 ROOT

复制sample.war到webapps目录下:

cd /opt/tomcat/latest/webapps/
wget https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war

重启tomcat:

systemctl restart tomcat

webapps目录下会解压war到当前目录

[root@localhost ~]# ll /opt/tomcat/latest/webapps/
total 20
drwxr-x--- 15 tomcat tomcat 4096 Oct 28 19:26 docs
drwxr-x---  6 tomcat tomcat   83 Oct 28 19:26 examples
drwxr-x---  5 tomcat tomcat   87 Oct 28 19:26 host-manager
drwxr-x---  6 tomcat tomcat  114 Oct 28 19:26 manager
drwxr-x---  3 tomcat tomcat  283 Oct 28 19:26 ROOT
drwxr-x---  5 tomcat tomcat   86 Oct 28 20:52 sample
-rw-r--r--  1 root   root   4606 Oct 28 20:52 sample.war

通过路径访问sample应用

http://192.168.92.30:8080/sample/

sample访问页面:

在这里插入图片描述

docker运行tomcat应用

准备war包应用

mkdir -p /data/tomcat/app1
cd /data/tomcat/app1
wget https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war

运行tomcat应用

docker run -d --name tomcat-app \
  --restart always \
  -p 8001:8080 \
  -e TZ=Asia/Shanghai \
  -v /data/tomcat/app1:/usr/local/tomcat/webapps \
  tomcat

访问tomcat应用

http://192.168.92.30:8080/sample/

tomcat部署多项目

在同一台服务器上部署多个tomcat服务有如下两种方法:

  • 单Tomcat 同一个端口部署多个项目,默认tomcat支持多应用部署,将多个war包放置在tomcat下的webapps下即可,这种方式启动停止tomcat服务所有项目都会受影响。
  • 单Tomcat不同端口部署多项目,需要修改conf/server.xml配置文件,彼此互不影响,配置稍微复杂。
  • 多Tomcat部署多项目建议使用容器方式。

应用使用相同端口

多个应用war包直接放在webapps目录下,webapps目录下有sample.war和sample1.war两个应用,tomcat会将2个war包解压到当前目录,目录名以war包名称命名。

[root@localhost ~]# cd /opt/tomcat/latest/webapps

[root@localhost webapps]# ll
total 20
drwxr-x--- 15 tomcat tomcat 4096 Oct 28 19:26 docs
drwxr-x---  6 tomcat tomcat   83 Oct 28 19:26 examples
drwxr-x---  5 tomcat tomcat   87 Oct 28 19:26 host-manager
drwxr-x---  6 tomcat tomcat  114 Oct 28 19:26 manager
drwxr-x---  3 tomcat tomcat  283 Oct 28 19:26 ROOT
drwxr-x---  5 tomcat tomcat   86 Oct 28 20:52 sample
drwxr-x---  5 tomcat tomcat   86 Oct 28 20:54 sample1
-rw-r--r--  1 root   root   4606 Oct 28 20:54 sample1.war
-rw-r--r--  1 root   root   4606 Oct 28 20:52 sample.war

浏览器访问时,使用路径访问不同应用:

http://192.168.92.30:8080/sample/
http://192.168.92.30:8080/sample1/

应用使用不同端口

mkdir -p /opt/tomcat/latest/webapps1
cp sample.war /opt/tomcat/latest/webapps1

修改server.xml,复制一份service部分

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
  <Service name="Catalina2">
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina2" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps1"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

修改以下选项

  • Service name
  • Connector port
  • Engine name
  • Host appBase

重启tomcat

systemctl restart tomcat

应用访问方式

http://192.168.92.30:8080/sample/
http://192.168.92.30:8081/sample/
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值