美文网首页
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