0
点赞
收藏
分享

微信扫一扫

docker容器迁移操作记录

爱情锦囊 1天前 阅读 0
tomcat运维

Tomcat服务

安装

  1. 安装java环境
yum install -y java-1.8.0-openjdk
java -version  # 看是否成功
  1. 安装Tomcat,这里以apache-tomcat-8.0.30.tar.gz为例
tar -xvf apache-tomcat-8.0.30.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-8.0.30 /usr/local/tomcat

: << 'EOF'
# 相关目录介绍
tomcat
├── bin  # 存放主程序
├── conf  # 存放配置文件
├── lib  # 存放库文件
├── LICENSE
├── logs  # 存放日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps  # 存放网站页面
└── work  # 存放编译后页面文件

EOF
  1. 启动Tomcat
# 在启动tomcat之前,做下面两个方案之一即可,不然有可能会出现8005端口启动非常慢
# 方案一
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random

# 方案二
yum install rng-tools
systemctl start rngd && systemctl enable rngd

# 启动tomcat
/usr/local/tomcat/bin/startup.sh

# 关闭tomcat(如果配置文件有问题,关闭tomcat的时候会提示)
/usr/local/tomcat/bin/shutdown.sh

相关配置

  • 配置文件存放路径:/usr/local/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" 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">
    <!-- 网页端口,默认是8080 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <!-- 开启https,keystoreFile:公私钥文件路径、keystorePass:公私钥文件密码 -->
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" />
    
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <!-- 网站配置开始,name:域名、appBase:网站页面位置、unpackWARs:自动解压war、autoDeploy:自动部署 -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        
        <!-- 自定义访问路径与页面位置,path:匹配用户访问路径,docBase:定义页面位置 -->
        <Context path="/test" docBase="test_dir" />
        
        <!-- 日志配置,className:默认即可、directory:日志存放目录、prefix:日志文件名称前缀、suffix:日志文件名称后缀、pattern:日志格式 -->
        <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>

示例

  1. tomcat的默认端口改为80
# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
# 这里修改成80
<Connector port="80" protocol="HTTP/1.1"
...
EOF

# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
  1. 访问http://www.a.com/xxx文件,实际命中的是/data/www_a_com/中的xxx文件
# 修改/etc/hosts文件
echo "192.168.3.200 www.a.com" >> /etc/hosts

# 准备测试页面,这里使用index.html为例
mkdir -p /data/www_a_com
echo "/data/index.html" > /data/index.html

# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
<Engine name="Catalina" defaultHost="localhost">
      ...
      <!-- 添加新的虚拟主机 -->
      <Host name="www.a.com" appBase="/data/www_a_com"
            unpackWARs="true" autoDeploy="true">
        <!-- 下面这行如果不加,会命中/data/www_a_com/ROOT/xxx -->
        <Context path="" docBase="" />
      </Host>
      
      <!-- 默认的不动 -->
      <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>
EOF

# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

# 测试
curl http://www.a.com/index.html
# 输出: /data/www_a_com/index.html
  1. 访问http://www.a.com/test/index.html,实际命中的是/var/www/html/index.html,并且给www.a.com虚拟主机添加日志功能,日志存放在/data/www_a_com/logs/www_a_com.log
# 准备index.html
echo "/var/www/html/index.html" > /var/www/html/index.html

# 准备日志存放目录
mkdir /data/www_a_com/logs

# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
      <Host name="www.a.com" appBase="/data/www_a_com"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="" />
        
        <!-- 添加下面几行,这里的directory需要配置绝对路径才行,不然会出现/usr/local/tomcat/logs/中 -->
        <Context path="/test" docBase="/var/www/html" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/www_a_com/logs"
               prefix="www_a_com" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        
      </Host>
EOF

# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

# 测试
curl www.a.com/test/index.html
# 输出: /var/www/html/index.html
  1. war包直接丢/usr/local/tomcat/webapps/下,测试会不会自动解压
# 准备war包
echo "test war" > index.html
yum install -y  java-1.8.0-openjdk-devel  # 安装jar,使用方法跟tar类似
jar -cf project.war index.html

# 将war包复制到/usr/local/tomcat/webapps下
cp project.war /usr/local/tomcat/webapps/

# 查看是否自动解压(此时如果删除war包,相应的目录也会自动删除)
ls /usr/local/tomcat/webapps/
# 其中包含: project project.war

# 编辑配置文件,测试是否能够正常访问
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
      <!-- 这里使用的是默认的进行测试 -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!-- 只需添加这一行即可,这样访问localhost的会自动命中project目录,不会使用ROOT -->
        <Context path="" docBase="project" />


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

# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

# 测试
curl 192.168.3.200/index.html
# 输出: test war
  1. 开启https
# 修改配置文件
vim /usr/local/tomcat/conf/server.xml
: << 'EOF'
    <!-- 将这一段的注释去掉,然后在最后加上keystoreFile和keystorePass -->
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" />
EOF

# 生成公私钥,创建密钥对,alias设置别名tomcat,keyalg设置加密算法RSA,keystore设置存储位置
cd /usr/local/tomcat/
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
: << 'EOF'
输入密钥库口令:  # 填配置文件中keystorePass定义的字符串
再次输入新口令:  # 再次输入
您的名字与姓氏是什么?
  [Unknown]:  lu  # 任意
您的组织单位名称是什么?
  [Unknown]:  test # 任意
您的组织名称是什么?
  [Unknown]:  test # 任意
您所在的城市或区域名称是什么?
  [Unknown]:  Wuxi  # 任意
您所在的省/市/自治区名称是什么?
  [Unknown]:  JiangSu  # 任意
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn  # 任意
CN=lu, OU=test, O=test, L=Wuxi, ST=JiangSu, C=cn是否正确?
  [否]:  y  # y

输入 <tomcat> 的密钥口令
	(如果和密钥库口令相同, 按回车):  # 回车即可
EOF

# 重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

# 准备测试页码并测试
echo "test https" > webapps/ROOT/index.html
curl -k https://192.168.3.200:8443
# 输出: test https
  1. 使用systemctl命令控制
# 先关闭tomcat
/usr/local/tomcat/bin/shutdown.sh

# 编写Unit文件
vim /usr/lib/systemd/system/tomcat.service
: << 'EOF'
[Unit]
Description=The Apache Tomcat Server  # 描述
After=network.target remote-fs.target nss-lookup.target  # 在这些服务启动之后才能启动这个服务

[Service]
Type=forking  # 多进程类型程序,就设置forking
ExecStart=/usr/local/tomcat/bin/startup.sh  # systemctl start tomcat执行命令
ExecStop=/bin/kill -s QUIT ${MAINPID}  # systemctl stop tomcat执行命令

[Install]
WantedBy=multi-user.target  # 支持开启自启

EOF

# 激活
systemctl daemon-reload

# 测试
systemctl start tomcat
systemctl status tomcat
curl -k https://192.168.3.200:8443

systemctl stop tomcat
systemctl status tomcat
curl -k https://192.168.3.200:8443

systemctl restart tomcat
systemctl status tomcat
curl -k https://192.168.3.200:8443
举报

相关推荐

0 条评论