Tomcat 9.0 7 的兩種開機啓動方式與web頁面管理

項目環境

系統平臺:
CentOS Linux release 7.4.1708 (Core)       內核  3.10.0-693.el7.x86_64   最小化安裝

配置jdk環境

去oracle官網下載 符合項目需求的 組件 Java SE Development Kit 8u162html

http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz
# cd /usr/local/
# tar xvf jdk-8u162-linux-x64.tar.gz -C /usr/local/
# ln -sv jdk1.8.0_162/ javajdk
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/javajdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# source /etc/profile.d/java.sh
# java -version
java version "1.8.0_162"

配置tomcat

去官網下載適合的版本

https://tomcat.apache.org/java

http://apache.mirrors.pair.com/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz

# tar xvf apache-tomcat-9.0.7.tar.gz -C /usr/local/
# cd /usr/local/
# mv apache-tomcat-9.0.7/ tomcat-9.0.7
# ln -sv tomcat-9.0.7/ tomcat

配置tomcat環境變量

# vim /etc/profile.d/tomcat.sh
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH

配置tomcat開機啓動

方法一:經過catalina.sh

直接調用$CATALINA_HOME/bin/startup.sh來啓動tomcat,調用$CATALINA_HOME/bin/shutdown.sh來關閉tomcatlinux

tomcat 進程是由 root 用戶打開並維護的,從安全角度考慮存在缺陷。web

# vim /usr/local/tomcat/bin/catalina.sh
在第二行寫入
JAVA_HOME=/usr/local/javajdk
CATALINA_BASE=/usr/local/tomcat

# echo "/usr/local/tomcat/bin/catalina.sh start" >> /etc/rc.local
# chmod +x /etc/rc.local  > 這一步很重要

方法二:以daemon方式

以daemon方式運行tomcat可使tomcat不受終端影響,不會由於退出終端而中止運行。可讓tomcat以普通用戶身份運行,可讓tomcat在系統啓動時自動運行。apache

Jsvc是專爲Java應用程序開發的一個工具包,其目標是把Java應用程序的普通運行轉換爲以Unix守護進程的方式運行。這樣的話,能夠很方便地啓動/中止應用程序。vim

在安裝tomcat的目錄bin/下commons-daemon-native.tar.gz或者http://commons.apache.org/proper/commons-daemon/download_daemon.cgitomcat

# cd /usr/local/tomcat-9.0.7/bin/
# tar xvf commons-daemon-native.tar.gz
# cd commons-daemon-1.1.0-native-src/unix/
# ./configure
# make
# cp jsvc /usr/local/tomcat/bin/

建立Tomcat用戶

# useradd -r -s /sbin/nologin tomcat
# chown -R tomcat /usr/local/tomcat/

配置用systemd啓動方式的腳本

catalina.sh在執行的時候會調用同級路徑下的setenv.sh來設置額外的環境變量,所以須要在/usr/local/tomcat/bin路徑下建立setenv.sh文件,這個文件還能夠設置JVM調優參數,是否是很方便安全

# vim /usr/local/tomcat/bin/setenv.sh

export JAVA_HOME=/usr/local/javajdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_BASE/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$CATALINA_BASE/bin:$PATH
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

服務腳本服務器

# vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=Tomcat8
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/daemon.sh start
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID

PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

以後可使用如下方式管理了
# systemctl status tomcat       狀態
# systemctl start tomcat        啓動
# systemctl stop tomcat         中止

若是啓動的時候提示如下,請查看此文件權限。
touch: cannot touch ‘/usr/local/tomcat/logs/catalina.out’: Permission denied

能夠看到是以jsvc進行運行
# ss -nltp|grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("jsvc",pid=2953,fd=49))

以普通用戶權限運行
# ps aux|grep tomcat
tomcat     3169

在啓動的時候會在tomcat根目錄生成tomcat.pid文件,中止以後刪除。session

同時tomcat在啓動時候,執行start不會啓動兩個tomcat,保證始終只有一個tomcat服務在運行。

多個tomcat能夠配置在多個目錄下,互不影響。

配置tomcat Web 管理

# cd /usr/local/tomcat/conf/
# cp tomcat-users.xml{,.bak}
# vim tomcat-users.xml

角色定義

一、Server Status

查看只讀服務器狀態

二、Manager App

管理app,包括war包服務的啓動、中止、reload、undeploy以及配置session的失效時間

須要開啓如下角色功能

manager-gui     容許訪問html接口(即URL路徑爲/manager/html/*)
manager-script  容許訪問純文本接口(即URL路徑爲/manager/text/*)
manager-jmx     容許訪問JMX代理接口(即URL路徑爲/manager/jmxproxy/*)
manager-status  容許訪問Tomcat只讀狀態頁面(即URL路徑爲/manager/status/*)

三、Host Manager

管理和配置Tomcat服務器

須要開啓如下角色功能

manager-gui     容許訪問html接口(即URL路徑爲/manager/html/*)
admin-gui       容許訪問html接口
admin-script    容許訪問純文本接口

###

4大角色5種功能的定義格式以下

<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>

添加用戶名稱和密碼格式,並受權訪問角色以下

<user username="用戶名" password="密碼" roles="這裏是角色如:admin-gui,manager-gui"/>
<user username="tomcat" password="123abc" roles="admin-gui,manager-gui"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

除了密碼限制以外,還能夠經過添加或來限制遠程IP地址或主機對Manager Web應用程序的訪問權限,特別是在公網上的主機。參考網址https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Remote_Address_Filter

如下2行看須要設置
# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml

添加容許訪問的IP範圍,不然只能本機訪問
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.10\.\d+" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.f
ilters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

修改tomcat容許上傳的文件大小

單位是字節

<multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

以上配置須要重啓tomcat服務才能生效

相關文章
相關標籤/搜索