美文网首页
RedHat/CentOS8【Tomcat】部署 JavaWeb

RedHat/CentOS8【Tomcat】部署 JavaWeb

作者: 张毅SOHO | 来源:发表于2020-05-08 16:10 被阅读0次

Tomcat 是一个开源的(遵循 Apache 2.0 协议)轻量级 Web 应用服务器中间件,在中小型系统和并发量小的场景中普遍使用,是开发和调试 Servlet 和 JSP 程序的首选中间件。

本方案基于CentOS8系统设计,建议在RedHat/CentOS系统中使用。


1.安装 Tomcat 中间件

注意:安装 Tomcat 前,应确保系统已经正确安装配置 JDK 。如何安装配置 JDK,请阅读文件《RedHat/CentOS8 安装配置 OracleJDK 8 和 OpenJDK 1.8》【https://www.jianshu.com/p/208cc5b8688b

第一步,打开 Tomcat 官方网站下载页面【https://tomcat.apache.org/download-90.cgi】,下载 Tomcat 的编译程序 tar 包到用户主目录中。

Tomcat 下载页面

第二步,解压缩编译程序 tar 包到"/usr/local"目录中。

[centos@host ~]$ sudo tar zxvf apache-tomcat-9.0.34.tar.gz -C /usr/local
[centos@host ~]$ sudo mv /usr/local/apache-tomcat-9.0.34 /usr/local/tomcat-9.0.34

第三步,创建 Tomcat 管理用户和组,并设置为程序安装目录的拥有者。

[centos@host  ~ ]$ sudo id tomcat
id: “tomcat”:无此用户
[centos@host  ~ ]$ sudo groupadd tomcat
[centos@host  ~ ]$ sudo useradd -g tomcat -s /bin/false tomcat
[centos@host  ~ ]$ sudo chown -R tomcat:tomcat /usr/local/tomcat-9.0.34

第四步,创建 Tomcat 开机启动服务配置文件。

使用文本编辑器打开配置文件:

[centos@host ~]$ sudo gedit /usr/lib/systemd/system/tomcat.service

修改或验证文件中的以下参数并保存:

[Unit]
Description=Tomcat Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/local/jdk1.8.0_261
Environment=JRE_HOME=/usr/local/jdk1.8.0_261/jre

ExecStart=/usr/local/tomcat-9.0.34/bin/startup.sh
ExecStop=/usr/local/tomcat-9.0.34/bin/shutdown.sh
ExecReload=/usr/local/tomcat-9.0.34/bin/shutdown.sh

第五步,启动 Tomcat 服务,并设置为开机自动启动。

[centos@host ~]$ sudo systemctl daemon-reload
[centos@host ~]$ sudo systemctl enable tomcat.service
[centos@host ~]$ sudo systemctl start tomcat.service

第六步,设置防火墙端口(CentOS8默认安装firewall防火墙),允许"8080"端口(Tomcat 默认端口)访问服务器。

[centos@host ~]$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
[centos@host ~]$ sudo firewall-cmd --reload

第七步,验证安装,在浏览器中输入"http://127.0.0.1:8080"来访问 Tomcat 默认主页。

Tomcat 验证页面

2.Tomcat 主配置文件详解

Tomcat 的主配置文件是 "/程序安装目录/conf/server.xml",该文件定义了 Tomcat 的监听服务,站点,虚拟目录信息。

Tomcat 的主配置文件结构如下:

<Server>
    <Listener />  
    <GlobaNamingResources></GlobaNamingResources>
    <Service>  
        <Connector />  
        <Engine>  
            <Realm />  
            <host>  
                <Context /> 
                <Value />  
             </host>  
        </Engine>  
    </Service>  
</Server>  
  • Server(服务器)节点:Server 定义了一个提供完整的JVM的独立组件,服务器在指定的端口上监听shutdown命令。 Server 代表根容器,它是唯一的,且不能做为任何元素的子元素。属性如下:
    -- port:指定监听 shutdown 命令端口,终止 Tomcat 时需要在服务器上发出 shutdown 命令,必须设置。
    -- shutdown:指定终止 Tomcat 时,发给服务器的 shutdown 监听端口的字符串,必须设置。

  • Service(服务)节点:Service 定义了一个或多个 Connectors 共享一个 Engine 的组合。 Server 可以包含一个或多个 Service 。
    -- name:指定 Service 的名字。

  • Connector(连接器)节点: Connector 定义请求被接收和应答所需要的端口。每个 Connector 通过共享的 Engine 处理请求。
    -- port:指定服务器端创建的端口号,这个端口监听来自客户端的请求。
    -- protocol:指定 HTTP 协议。
    -- redirectPort:指定服务器正在处理 HTTP 请求时收到了一个 SSL 传输请求后重定向的端口号。
    -- connectionTimeout:指定超时的时间数(以毫秒为单位)。

  • Engine(引擎)节点:Engine 定义处理每个请求的入口点。每个 Service 只能有一个 Engine,处理所有 Connector 接收到的客户请求。每个 Engine 可以包含一个或多个 Host 。
    -- name:指定 Engine 的名字。
    -- defaultHost:指定默认 Host 的名字。

  • Host(主机)节点:Host 定义虚拟主机,它包含了一个或多个 Web 应用。
    -- name:指定 Host 的名字。
    -- appBase:应用程序基本目录,即存放应用程序(WAR 文件)的目录。
    -- unpackWARs:指定为"true",则自动将WAR文件解压;指定为"false",则不解压直接从WAR文件中运行应用程序。
    -- autoDeploy:指定为"true",在 Tomcat 服务处于运行状态时,能够自动监测 appBase 下的 Web 应用,如果发现新的 Web 应用会自运发布这个 Web 应用;指定为"false",则不自动检测。

  • Context(应用程序)节点:Context 定义单个 Web 应用程序,每个 Host 可以包含一个或多个 Context 。
    -- docBase:指定应用程序(WAR 文件)的物理目录。
    -- path:指定应用程序的虚拟目录。 URL 请求的形式是"http://IP:PORT/虚拟目录"。
    -- debug:指定输出的调试信息,允许设置"0-9","0"表示提供最少的信息,"9"表示提供最多的信息。
    -- reloadable:指定为"true",则 Tomcat 会自动检测应用程序的"/WEB-INF/lib"和 "/WEB-INF/classes"目录的更新,自动装载新的应用程序;指定为"false",则不会。

  • Value(日志)节点:定义调试和错误信息。
    -- className:指定实现类,默认是"org.apache.catalina.valves.AccessLogValve",用于记录应用程序的访问信息。
    -- directory:指定日志文件存放的位置。
    -- prefix:指定日志文件名的前缀。
    -- suffix:指定日志文件名的后缀。
    -- pattern:指定日志文件记录的内容和格式,通过通配符脚本表示。

  • Realm(认证)节点:Realm 定义存放用户名,密码及角色的数据库。
    -- className:指定实现类。


3.使用 Ecplise 发布 WAR 包

第一步,在需要发布的项目上右击,选择"Export..."。

第二步,选择"Web"下的"WAR file"选项,点击"Next>"按钮。

第三步,点击"Browse"按钮,设置 WAR 文件存放位置。

第四步,设置 WAR 包文件部署的服务器运行环境,如:Tomcat;设置是否将源文件一并导出到 WAR 文件中(不选择则只导出编译文件,不建议选择),点击“Finish”按钮等待导出进度完成。


4.在 Tomcat 中部署 WAR 包

方案一:在默认站点中的应用程序目录中部署。(最简部署)

将已发布的 WAR 文件拷贝到"/程序安装目录/webapps"目录中即可,Tomcat 会自动检测部署,用户通过"http://ip:port/WAR文件名"即可访问,默认的端口是8080。

方案二:在默认站点中建立虚拟目录的方式部署。

① 修改主配置文件 "/程序安装目录/conf/server.xml",在默认 Host(站点)中增加 Context(应用程序)的定义。

使用文本编辑器打开配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service>  
        <Engine>
           <Host name="localhost" appBase="webapps" autoDeploy="true">
              <Context path="/virtualdirectory" docBase="physicaldirectory" reloadable="true" debug="0" />
           </Host>
        </Engine>  
    </Service>  
</Server>

② 在"/程序安装目录/webapps"中创建"physicaldirectory"目录。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/webapps/physicaldirectory

③ 并将已发布的 WAR 文件拷贝到该目录中,Tomcat 会自动检测部署,用户通过"http://ip:port/virtualdirectory/WAR文件名"即可访问,默认的端口是8080。

方案三:建立新的站点部署(主机头部署)。

① 修改主配置文件 "/程序安装目录/conf/server.xml",在默认的 Service (服务)中增加自定义 Host 的定义。

使用文本编辑器打开配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service>  
        <Engine>
           <Host name="www.host.com" appBase="hostapps" autoDeploy="true">
               <Valve className="org.apache.catalina.valves.AccessLogValve" directory="hostlogs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>
         </Engine>  
    </Service>  
</Server>

② 在"/程序安装目录"中创建"hostapps"和"hostlogs"目录。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/hostapps
[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/hostlogs

③ 将已发布的 WAR 文件拷贝到该目录中,Tomcat 会自动检测部署,用户通过"http://www.host.com:port/WAR文件名"即可访问,默认的端口是8080。

④ 在 DNS 服务器上建立域名"www.host.com"与服务器 IP 地址的解析记录。**

方案四:建立新的监听端口部署。

① 修改主配置文件 "/程序安装目录/conf/server.xml",增加新的 Service(服务)的定义。

使用文本编辑器打开配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service name="Catalina_New">
        <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" appBase="webapps_new" autoDeploy="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs_new"
                    prefix="localhost_access_log" suffix=".txt"
                    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>
         </Engine>
    </Service>
</Server>

② 在"/程序安装目录"中创建"webapps_new"和"logs_new"目录。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/webapps_new
[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/logs_new

重启启动 Tomcat 后,会监听8081端口。在新的 Service(服务)中,继续选择方案一、方案二、方案三的方式部署站点和应用程序,但是在访问时应使用新的端口号。

相关文章

网友评论

      本文标题:RedHat/CentOS8【Tomcat】部署 JavaWeb

      本文链接:https://www.haomeiwen.com/subject/ydifnhtx.html