CentOS7之Tomcat服務

閱讀幫助

  1. 關(guān)于命令提示符:
    #表示是用 root 用戶執(zhí)行的命令
    ex: # useradd cas
    $表示是用普通用戶執(zhí)行的命令
    ex: $ vi .bash_profile

  2. 關(guān)于路徑,所有命令都是在用戶的家目錄下執(zhí)行

  3. $HOME 是linux系統(tǒng)內(nèi)置環(huán)境變量,表示當前用戶的家目錄路徑。


環(huán)境說明

系統(tǒng)OS:CentOS7
IP: 192.168.1.101


配置過程

  1. 創(chuàng)建普通用戶 web
    首先創(chuàng)建用戶組 app,再創(chuàng)建用戶 web,加入到 app
    # groupadd app
    # useradd -g app cas
    # passwd cas

  2. 切換到用戶 cas
    # su - cas

  3. 去oracle和apache官網(wǎng)下載需要的jdk和tomcat的tar.gz包,此處以截止至2018年3月31日最新版本的jdk和tomcat為例

$ wget http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9.0.4_linux-x64_bin.tar.gz?AuthParam=1522426550_309d343cd864a9f180653b294dc578c6
$ wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
  • tips: 如果沒找到wget命令,先用 root 用戶運行 yum install wget -y 命令進行安裝
  1. 解壓tar.gz包
    $ tar -zxvf jdk-9.0.4_linux-x64_bin.tar.gz
    $ tar -zxvf apache-tomcat-9.0.6.tar.gz

  2. 為了讓路徑看起來清潔一點,我們把tar.gz包刪除,將解壓的jdk和tomcat目錄重命名一下
    $ rm *.tar.gz
    $ mv jdk-9.0.4 java
    $ mv apache-tomcat-9.0.6 tomcat

  3. 配置java環(huán)境變量
    $ vi .bash_profile

export JAVA_HOME=$HOME/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

刷新配置,使其生效
$ source .bash_profile

驗證一下java是否配置正確
$ java -version

tips: 到這里就已經(jīng)可以通過 sh $HOME/tomcat/bin/startup.sh 正常運行tomcat服務了,但使用起來不是很方便,接下來我們再對tomcat的配置做一些修改。

  1. 修改tomcat的配置,主要是一些易用性的配置

a) 修改 $HOME/tomcat/bin/catalina.sh ,在文件的 PRGDIR=`dirname "$PRG"` 這行下面添加如下代碼
$ vi tomcat/bin/catalina.sh

if [ -z "$CATALINA_PID" ]; then
      CATALINA_PID=$PRGDIR/CATALINA_PID
fi

b) 修改 $HOME/tomcat/bin/shutdown.sh 最后一行,添加-force參數(shù)
$ vi tomcat/bin/shutdown.sh

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
  • tips:以上兩步操作主要是解決 shutdown.sh 命令有時候無法正常停止tomcat,而不得不以 kill -9 pid 的方式來停止的問題。

c) 修改 $HOME/tomcat/conf/tomcat-users.xml,添加管理用戶manager
$ vi tomcat/conf/tomcat-users.xml

  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <user username="manager" password="manager123" roles="manager-gui"/>
  <user username="admin" password="admin123" roles="admin-gui,manager-script,manager-jmx"/>

d) 修改 $HOME/tomcat/webapps/manager/META-INF/context.xml,注釋掉<Valve>標簽,否則只有l(wèi)ocalhost才能訪問manager頁面。
$ vi tomcat/webapps/manager/META-INF/context.xml

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

tips: tomcat8.x以下的版本是默認注釋的,無須修改

e) 修改 $HOME/tomcat/webapps/manager/WEB-INF/web.xml,修改文件上傳大小限制,默認最大只能上傳50MB大小的文件。
$ vi tomcat/webapps/manager/WEB-INF/web.xml

    <multipart-config>
      <!-- 500MB max -->
      <max-file-size>524288000</max-file-size>
      <max-request-size>524288000</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

這樣修改之后,我們就可以通過 http://192.168.1.101:8080/manager/html 來上傳我們的war包進行熱部署了。如果無法訪問,可能是被防火墻墻了。
要么修改防火墻,允許8080端口通過
# firewall-cmd --add-port=80/tcp --permanent

或者直接關(guān)閉防火墻
# systemctl stop firewalld

tips: 如果不需要開啟manager/html訪問,c、d、e這3步操作可以省略

f) 創(chuàng)建 .local/bin目錄
$ mkdir -p .local/bin

tips: 該目錄是當前用戶$PATH中的路徑,放在這個目錄下的命令腳本就可以在該用戶的任何目錄下面直接執(zhí)行了,我們接下來要把啟動,停止和重啟腳本放在該目錄下。
g) 創(chuàng)建啟動腳本 start
$ vi .local/bin/start

#!/bin/bash
webapps=$HOME/tomcat/webapps
files=`ls $webapps`
for file in $files
do
# 如果是war文件,且存在文件的同名目錄,則解壓覆蓋,避免因為存在同名目錄的war包不會自動解壓更新的問題。
  if [[ "war" = ${file##*.} && -d $webapps/${file%.*} ]]
    then
      echo "正在解壓 $webapps/$file 文件..."
      cd $webapps/${file%.*}
      $HOME/java/bin/jar -xf $webapps/$file
      echo "$webapps/$file 文件解壓完成。"
  fi
done
echo "正在啟動tomcat..."
sh $HOME/tomcat/bin/startup.sh
echo "tomcat已經(jīng)啟動完成"

h) 創(chuàng)建停止腳本 stop
$ vi .local/bin/stop

#!/bin/bash
catalina_pid=$HOME/tomcat/bin/CATALINA_PID
# 如果CATALINA_PID文件存在,則表示當前tomcat是運行狀態(tài),可以停止
if [ -f $catalina_pid ]
then
  echo "正在停止tomcat..."
  sh $HOME/tomcat/bin/shutdown.sh
  echo "tomcat已停止"
fi

i) 創(chuàng)建重啟腳本 restart
$ vi .local/bin/restart

#!/bin/bash
source $HOME/.local/bin/stop
source $HOME/.local/bin/start

j) 給這三個腳本文件賦予可執(zhí)行權(quán)限
$ chmod 755 .local/bin/*

tips: 此時,我們就可以隨處執(zhí)行start,stop或這restart命令來管理tomcat服務了。但有時候我們生產(chǎn)環(huán)境萬一遭遇斷電導致服務器重啟,此時我們還得需要手動去啟動tomcat服務,接下來我們再看看如何讓tomcat開機自動啟動。

  1. 配置開機啟動tomcat服務

a) 修改 $HOME/tomcat/bin/setclasspath.sh,在里面添加 JAVA_HOMEJRE_HOME 兩個變量
$ vi tomcat/bin/setclasspath.sh

export JAVA_HOME=$HOME/java
export JRE_HOME=$JAVA_HOME/jre
setclasspath.sh

tips: 如果沒有這一步,啟動服務的時候會報下面這樣的錯誤

3月 26 14:17:36 server-101.localdomain startup.sh[14810]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
3月 26 14:17:36 server-101.localdomain startup.sh[14810]: At least one of these environment variable is needed to run this program

b) 使用 root 用戶創(chuàng)建 /etc/systemd/system/cas.service 文件,文件名稱根據(jù)你自己需要隨意命名,格式為 servicename.service
# vi /etc/systemd/system/cas.service

[Unit]
Description=cas service  ##服務名稱為cas
After=network.target  ##網(wǎng)絡(luò)服務啟動完成后啟動該服務

[Service]
Type=forking  ##后臺運行
ExecStart=/home/cas/.local/bin/start  ## 啟動腳本
ExecStop=/home/cas/.local/bin/stop  ##停止腳本
ExecReload=/home/cas/.local/bin/restart  ##重啟腳本
User=cas  ##啟動用戶
Group=app  ##用戶組

[Install]
WantedBy=multi-user.target

c) 重載服務配置
# systemctl daemon-reload

d) 激活cas.service服務開機啟動
# systemctl enable cas


至此大功告成,現(xiàn)在啟動tomcat服務有兩種方法

  1. 使用 root 用戶執(zhí)行 systemctl start|stop|restart cas
  2. 使用普通用戶 cas 執(zhí)行 start|stop|restart

tips: 以上配置都是通用的,我們可以將這個配置打包備用
$ tar -czvf tomcat.tar.gz tomcat/ .local/ java/ .bash_profile

如果你有多個應用服務需要部署在該服務器上,我們可以再新建一個用戶,直接將修改過的tomcat.tar.gz復制到新用戶的家目錄下解壓,修改一下端口即可使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容