42、Tomcat部署

Tomcat部署

一、补充,

1. system启动和绝对路径启动

1.绝对路径使用脚本启动,使用which命令可以查看路径
        [root@haoxx ~]# which nginx  
        /usr/sbin/nginx

2.使用systemctl启动,有的程序有,有的没有
        也是调用绝对路径,可以使用systemctl cat nginx查看
        [root@haoxx ~]# systemctl stop nginx

3.如果程序自带没有system控制,可以自己编写
        具体操作看文章以下内容(二、3.1)

2. location匹配规则default;

  • 访问nginx服务,如果匹配不到,默认会访问第一个.conf配置
  • 如何指定能,如下
server {
    listen 80 default;   ### 如果匹配不到,则匹配www.wp.com
    server_name www.wp.com;
    root /soft;

    location / {
    index index.html;
    }
}

3. 截止现在二阶段面试题总结

重点:

1.backup服务(rsync,lsync)
2.nfs服务,公有云NAS OSS
3.nginx服务
        负载均衡调度算法
        LVS的四种网络模式
        会话保持如何做
        loction匹配优先级
        你优化过nginx那些东西
        如何实现的负载均衡

4.HTTP状态码
5.HTTPS加密流程
6.网站访问流程:
        DNS解析
        TCP三次握手
        HTTP请求
        HTTP响应
        nginx 动态处理流程+静态处理流程
        TCP的四次挥手

7....待补充

二、部署tomcat

注意点:

对应的tomcat的版本,要安装对应的java环境(jdk)

去tomcat官网找Please see the README file for packaging information说明文档

1.安装对应版本java环境

  • 本次安装tomcat,需要java8以上版本,如果只想装jdk可以查看java8里的jdk版本
安装jdk1.8-1.8.0_181-fcs.x86_64

2.下载部署tomcat

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
mkdir /soft/
tar xf apache-tomcat-9.0.98.tar.gz -C /soft
ln -s /soft/apache-tomcat-9.0.98  /soft/tomcat

启动:/soft/tomcat/bin/startup.sh
查看:netstat -tupln | grep :8080
停止:/soft/tomcat/bin/shutdown.sh

3.配置tomcat以system启动控制

  • 注意如果使用system控制,则无法使用绝对路径控制
  • 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本

cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF

##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试

三、tomcat的配置文件

tomcat目录:

tomcat软件目录结构:
bin ---主要包含启动和关闭tomcat的脚本(启停java脚本依赖jar包文件)
conf ---tomcat配置文件的目录(站点配置:server.xml)
lib ---tomcat运行时需要加载的jar包
logs ---tomcat日志存放位置
temp ---tomcat临时存放文件路径
webapps ---tomcat默认站点目录
work ---tomcat运行时产生的缓存文件

tomcat主配置文件:

/tomcat/conf/server.xml ,是xml格式 \

[root@oldboyedu ~]# cat /soft/tomcat/conf/server.xml 

<?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" />
  <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"
               maxParameterCount="1000"
               />

    <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>


      <Host name="diy.tomcat.com"  appBase="/code/tomcat"
            unpackWARs="true" autoDeploy="true">

            <Context docBase="/code/tt" path="/abc" reloadable="true" />

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="diy_tomcat" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

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


------------------------------------------------
如果想增加类似于nginx的server区块则,复制粘贴以下模块,修改一些参数即可
域名diy.tomcat.com、代码目录/code/tomcat、日志文件名称diy_tomcat.log

      <Host name="diy.tomcat.com"  appBase="/code/tomcat"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="diy_tomcat" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
---------------------------------------------下方配置文件详解
1. server区块
<?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" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

1. `<Server>`:这是配置文件的根元素,代表整个Tomcat服务器的配置。

2. `port="8005"`:指定Tomcat服务器关闭端口,通过这个端口发送SHUTDOWN命令可以安全地关闭服务器。

3. `shutdown="SHUTDOWN"`:这是关闭服务器时使用的命令。

4. `<Listener>`:定义了服务器启动时需要加载的监听器。例如:
   - `VersionLoggerListener`:记录Tomcat版本信息。
   - `AprLifecycleListener`:用于处理Apache Portable Runtime库的生命周期事件。
   - `JreMemoryLeakPreventionListener`:防止JRE内存泄漏。
   - `GlobalResourcesLifecycleListener`:管理全局资源的生命周期。
   - `ThreadLocalLeakPreventionListener`:防止线程局部变量(ThreadLocal)内存泄漏。
2. Globa区块
  <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>


全局资源限制,tomcat自带监控等等
`<GlobalNamingResources>`:定义全局命名资源,这些资源可以被整个服务器访问。

`<Resource>`:定义了一个名为"UserDatabase"的资源,这是一个用户数据库,可以被更新和保存。它使用`MemoryUserDatabaseFactory`工厂类,并指向`conf/tomcat-users.xml`文件。
3. service区块
  <Service name="Catalina">

`<Service>`:定义了一个服务,服务名是"Catalina",这是Tomcat的默认服务
4. Connector区块
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />

类似linten 8080;
`<Connector>`:定义了一个连接器,用于处理HTTP请求。参数包括:
- `port="8080"`:HTTP请求的端口。
   - `protocol="HTTP/1.1"`:使用的HTTP协议版本。
   - `connectionTimeout="20000"`:连接超时时间(毫秒)。
   - `redirectPort="8443"`:当使用SSL时,重定向到的端口。
   - `maxParameterCount="1000"`:允许的最大参数数量。
5. Engine区块
    <Engine name="Catalina" defaultHost="localhost">

`<Engine>`:定义了一个引擎,引擎名是"Catalina",这是Tomcat的默认引擎。默认本机localhost
6. Realm区块
 <Realm className="org.apache.catalina.realm.LockOutRealm">

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>


`<Realm>`:定义了一个Realm,用于安全控制。这里有两个Realm:
7. host区块
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

      </Host>



## 如果不是自动解压war包,必须在代码目录下创建一个ROOT目录,资源放到ROOT下,固定写法
cat webapps/ROOT/index.html
## 定义代码目录,

`<Host>`:定义了一个虚拟主机,主机名是"localhost",应用基础路径是"webapps"。参数包括:
    - `appBase="webapps"`:应用程序的基础目录。
    - `unpackWARs="true"`:是否自动解压WAR文件。
    - `autoDeploy="true"`:是否自动部署应用程序。
8. Valve区块
        <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" />


`<Valve>`:定义了一个阀门,用于访问日志记录。参数包括:
    - `className="org.apache.catalina.valves.AccessLogValve"`:阀门的类名。
    - `directory="logs"`:日志文件的目录。
    - `prefix="localhost_access_log"`:日志文件的前缀。
    - `suffix=".txt"`:日志文件的后缀。
    - `pattern="%h %l %u %t \"%r\" %s %b"`:日志记录的格式。
9.Context区块
用户访问diy.oldboy.com:8080/abc去服务器/code/tt找资源,类似于 location /abc {


<!--访问diy.oldboy.com:8080/tt这个uri,获取/code/tt中页面资源,不存在该目录会报错 无
法启动Tomcat 需要提前创建-->

<Context docBase="/code/tt" path="/abc" reloadable="true" />
10.配置启动,测试
配置:<Host name="diy.tomcat.com"  appBase="/code"

操作:
mkdir /code/ROOT/
在/code/ROOT/新建资源,或者把war包放到/code下,会自动解压


hosts劫持
访问测试

四、tomcat自带管理页面

  • 默认不可以使用,需要配置
  • 需要在配置文件里,给用户授权角色

配置:

  • 打开默认页的全局资源限制:
  • 默认不可以使用,需要配置
  • 需要在配置文件里,给用户授权角色
# 添加角色,授权用户角色,可以参考上方官方配置说明图片

Tomcat自带的管理页面
管理功能
监控功能
1.所有的管理页面,都将权限赋予给了角色,而角色的名称是固定的: manager-gui admin-gui
2.需要添加一个用户,将用户捆绑至对应的角色,这样用户就可以访问到对应的页面

[root@web01 ROOT]# vim /soft/tomcat/conf/tomcat-users.xml
...
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>
</tomcat-users>

3.由于项目默认允许127.0.0.1访问,所以配置好了角色和用户也无法正常访问:
[root@web01 ROOT]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml
[root@web01 ROOT]# vim /soft/tomcat/webapps/manager/META-INF/context.xml
默认状态,
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />


修改后的状态:10\.0\.0\.\d  
或者:d+\.\d+\.\d+\.\d+|
#允许所有ip或者10网段的ip

4. 重启tomcat并访问

5.浏览器可以管理,点点也可以增加server业务(不过web页面配置的是临时的,不写入主配置文件)

五、Tomcat部署zrlog项目

1.配置tomcat文件

配置tomcat文件,加一个<Host模块,配置
vim /soft/tomcat/conf/server.xml

...

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

.......

2.下载代码.war包,部署

zrlog官网: https://zrlog.com/

1.wget下载war包,

2.mv改名为ROOT.var

3.然后mv移动到/zrlog下,会自动解压
            也不用新建ROOT目录了,一箭双雕

4.ls查看是否解压

5.去数据库服务器创建zrlog库
            如果配置了数据库远程授权部分省略直接创建zrlog库即可
            MariaDB [(none)]> create database zrlog charset utf8;
            MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';

6.重启服务,hosts劫持浏览器访问,安装代码
            http://zrlog.oldboy.com:8080/

7.登录,发表文章测试
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇