天天看點

在centos 7 伺服器上安裝tomcat 8.5

本教程旨在記錄如何在CentOS 7上安裝Tomcat 8.5 。 Tomcat是一種實作了Java Servlet, Java Server Pages, Java Expression Language, 以及Java WebSocket 的一門技術。

預備知識

在開始安裝之前,需要使用擁有sudo權限的使用者或root使用者登入到目标伺服器。強烈推薦使用具有sudo權限的使用者,而不是直接使用root使用者直接作業系統。如果現在還沒有具有sudo權限的使用者,根據以下教程将會建立該使用者。

安裝OpenJDK

Tomcat 8.5 需要JDK7及其以上版本,本教程中我們将在CentOS 7上使用JDK 8作為預設的java開發運作時環境。

JDK 8的安裝指令如下:

$ sudo yum install java-1.8.0-openjdk-devel
           

建立tomcat系統使用者

直接使用root使用者運作Tomcat具有一定的安全風險,是以我們不推薦這樣做。我們會在/opt/tomcat目錄下建立一個新的使用者群組來運作Tomcat服務:

$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
           

下載下傳Tomcat

我們将從Tomcat下載下傳頁面擷取Tomcat 8.5.x.

将目錄切換至/tmp,并使用wget下載下傳zip類型的檔案:

$ cd /tmp
$ wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
           

下載下傳完成後,解壓該檔案,并移動至/opt/tomcat目錄:

$ unzip apache-tomcat-*.zip
$ sudo mkdir -p /opt/tomcat
$ sudo mv apache-tomcat-8.5.37 /opt/tomcat/
           

Tomcat 8.5 更新較為頻繁,為了能夠更好的控制其版本和更新,将建立latest符号連結指向Tomcat的安裝目錄:

$ sudo ln -s /opt/tomcat/apache-tomcat-8.5.37 /opt/tomcat/latest
           

為我們之前建立的Tomcat使用者增加通路權限,更改tomcat目錄的使用者群組的所有者為tomcat:

$ sudo chown -R tomcat: /opt/tomcat
           

為tomcat的bin目錄下的腳本檔案賦可執行權限:

$ sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
           

建立一個系統守護單元檔案

為了讓tomcat以服務的方式運作,在/etc/systemd/system/目錄下建立一個具有如下内容的tomcat.service檔案:

[Unit]
Description=Tomcat 8.5 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
           

通知系統守護程序,我們建立了新的系統守護單元檔案:

$ sudo systemctl daemon-reload
$ sudo systemctl start tomcat
           

檢查tomcat服務的運作狀态:

$ sudo systemctl status tomcat
           

結果如下:

tomcat.service - Tomcat 8.5 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-03-31 16:30:48 UTC; 3s ago
  Process: 23826 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 23833 (java)
   CGroup: /system.slice/tomcat.service
           └─23833 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=fi...
           

如果沒有報告錯誤,就可以設定開機自啟動了:

$ sudo systemctl enable tomcat
           

調整防火牆

如果伺服器已經開啟防火牆保護,并且你需要從外部網絡通路tomcat服務,那麼就需要開啟8080端口:

$ sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload
           

在大多數案例中個,生産環境下tomcat服務都将使用負載均衡和反向代理,是以僅将8080端口的通路權限開放給内部網絡将是最佳實踐

配置Tomcat的Web管理器

到目前為止,tomcat服務我們已經安裝完成,并可以通過8080端口通路到該服務,但我們無法通路Tomcat的Web管理器,因為我們還沒有建立相應的使用者。

Tomcat 使用者和角色都定義在了tomcat-users.xml中。

打開這個檔案,将會看到一些帶有注釋的配置執行個體:

$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
           

你可以在tomcat-users.xml檔案中按照如下樣式配置Web管理器(manager-gui 和 admin-gui)的通路使用者。為了提高安全性,強烈建議更換使用者名和密碼:

<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
           

Tomcat管理器預設隻允許在本地通路,如果想在遠端通路tomcat Web管理器,你可以做如下配置(這樣會降低安全性)。

取消/opt/tomcat/latest/webapps/manager/META-INF/context.xml檔案中的注釋:

<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" />
-->
</Context>
           

取消/opt/tomcat/latest/webapps/host-manager/META-INF/context.xml檔案的注釋:

<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" />
-->
</Context>
           

如果想從指定的IP通路到Web管理器,除了取消注釋外,你還需要将公網IP添加到清單中,假設公網IP為41.41.41.41,并且隻從該IP通路Web管理器:

修改/opt/tomcat/latest/webapps/manager/META-INF/context.xml檔案:

<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|41.41.41.41" />
</Context>
           

修改/opt/tomcat/latest/webapps/host-manager/META-INF/context.xml檔案:

<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|41.41.41.41" />
</Context>
           

測試安裝

在浏覽器中輸入:http://41.41.41.41:8080,通路tomcat首頁

在浏覽器中輸入:http://41.41.41.41:8080/manager/html,可以在該頁面完成部署,取消部署,啟動,停止,重載應用程式。

繼續閱讀