雖說在 Linux 的世界裡,完全使用指令介面管理是一種專業的表現,但是有的時候就是想多少方便偷懶一點,用網頁或多視窗介面來管理會比較直覺一點,而且既然主機商都免費贈送 WHM cPanel License 了,有多網域管理需求的話,這套系統是一個不錯的選擇,管理介面不僅井然有序,更重要的是還有官方提供的 Support Ticket 無限暢飲,當遇到難解的疑難雜症時,發個 Ticket 尋求一下專業便能茅塞頓開!
WHM cPanel 官網有提供 Demo,另外,也有提供 15 天的免費試用,有興趣的朋友可以前去了解一下。
回到正題,這次的筆記是從無到有的安裝與設定紀錄,基本上沒有太大的困難,照著指令步驟即可完成初步的安裝,本範例系統環境是 CentOS 7.7 ,作業系統的安裝過程就不在此贅述了:
步驟0. 安裝 CentOS 7:
我是租 VPS 主機,所謂的"安裝"也不過是做個勾選動作然後就完成了,租台主機花點錢能省事省時間~值得~
1. 先設定 hostname:
如果你只有一個 Domain 作為主站,建議可以先使用 Subdomain 來命名,比如:$hostname server.domain.com ,因為等會在 WHM 建立 cPanel 帳號cPanel 帳號時所使用的 Domain 名稱是不能跟 hostname 重複的。
2. 解除 SELinux:
$ sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
因為等等要進行安裝 WHM/cPanel,必須解除相關的權限限制。
3. 解除 NetworkManager:
解除的原因一樣,是為了通過 WHM cPanel 的安裝限制。
$ systemctl stop NetworkManager.service
$ systemctl disable NetworkManager.service
4. 安裝 WHM/cPanel:
$ cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest
…等待漫長的安裝過程,你可以守在螢幕面前或者裡用這點時間起來運動一下,
當看到這段訊息(版本號應該會是最新的)並回到指令輸入狀態時
Thank you for installing cPanel & WHM 11.82!
Removing /root/installer.lock.
表示安裝已完成!
5. 登入 WHM:
https://IP位置:2087 或 https://domain:2087
帳號 root 密碼就是作業系統 root 的密碼 。
第一次登入會有 Legal Documents 只要 Agree to All 即可,再來就是設定管理員 E-mail 和 Nameservers (Nameservers 可以先不理會之後再改設定也行),最後按下 Finish,即可進入 WHM 管理介面
6. 建立 cPanel 帳號:
點選主畫面下方或左選單 Create a New Account 功能。
Domain Information 相關的欄位要填寫的資料應該不用說明了吧?其他的欄位都用預設即可,有需要可依需求自行設定。
7. 安裝 Tomcat:
點選左側功能選單 EasyApache 4
進入功能頁面後,點 Currently Installed Packages 項目的 [Customize] 按鈕
點左側 Additional Packages,並且將 tomcat85 的狀態改為 Install ,然後按下一步 [Next],最後按 [Provision] 開始進行安裝,安裝完成後按下 [Done]
8. 啟用 Tomcat:
點選左側功能選單 Tomcat Manager ,把剛剛開設的 cPanel 帳號 Tomcat Status omcat Status 狀態改為 Enable
9. 設定 server.xml:
$ vi /home/jaxnoteddns/ea-tomcat85/conf/server.xml
原段落內容
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false" deployXML="false">
改為
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true" deployXML="true">
10. 重啟 TOMCAT:需要設定 ubic
先查看有 tomcat service 的用戶
$ /scripts/ea-tomcat85 list
已下將會用"jaxnoteddns"來作範例
使用 ubic 來控制用戶 tomcat 的啟動/關閉/重啟
*設定參考 https://forums.cpanel.net/resources/installation-and-configuration-of-ea-tomcat85.637/#2
*以下只要做過一次即可
*首先先切換到個別用戶
$ su - jaxnoteddns
修改 .bashrc
$ echo "export PATH=$(dirname $(readlink /usr/local/cpanel/3rdparty/bin/perl)):$PATH" >> /home/jaxnoteddns/.bashrc
執行完後登出回到 root
$ exit
在 root 用戶下查看個別用戶的 tomcat 狀態
$ su - jaxnoteddns -s /bin/bash -c 'ubic status ea-tomcat85'
查看該用戶 tomcat 使用 port
$ egrep 'Connector port.*HTTP' /home/jaxnoteddns/ea-tomcat85/conf/server.xml
重啟該用戶 tomcat 服務
$ su - jaxnoteddns -s /bin/bash -c 'ubic restart ea-tomcat85'
停止該用戶 tomcat 服務
$ su - jaxnoteddns -s /bin/bash -c 'ubic stop ea-tomcat85'
開啟該用戶 tomcat 服務
$ su - jaxnoteddns -s /bin/bash -c 'ubic start ea-tomcat85'
補充:root 帳號的 Tomcat 服務命令 (預設不啟動 root 的 tomcat 因為安全性((root容易被攻漏洞)))
$ sh /opt/cpanel/ea-tomcat85/bin/shutdown.sh
$ sh /opt/cpanel/ea-tomcat85/bin/startup.sh
11. 設定防火牆:
在上一個步驟有提到如何查看用戶的 Tomcat port
將查詢到的 port 替換到下面的指令中即可
設定要開通的 port
$ firewall-cmd --zone=public --add-port=10000/tcp --permanent
重新載入防火牆設定
$ firewall-cmd --reload
確認是否有開通(有開通會回傳 yes)
$ firewall-cmd --query-port=10000/tcp
12. WHM Apache Tomcat ProxyPass 設定(以下僅為範例):
[ 環境 ]
用戶帳號 user
主網域 domain.com
子網域 tomcat.domain.com
Tomcat 運行網址 為 http://domain.com:10000 執行目錄為 /home/user/ea-tomcat85/webapps/ROOT/
[ 需求 ]
當輸入網址 http://tomcat.domain.com
會直接執行目錄 /home/user/ea-tomcat85/webapps/ROOT/tomcat
不需再使用帶 port 的網址 http://jaxnote.ddns.net:10000/tomcat/
[ 設定 ProxyPass ]
由於 WHM 採用 Easyapache4 的模組設定,所以不能直接編輯 /etc/apache2/conf/httpd.conf(設定會因為每次服務重啟而消失)
在 httpd.conf 文件內容就有提供詳細的說明,如何載入自訂設定,分別在設定區塊裡可以看到
<VirtualHost 103.17.9.142:80>
ServerName tomcat.domain.com
...
# Include "/etc/apache2/conf.d/userdata/std/2_4/user/tomcat.domain.com/*.conf"
...
</VirtualHost>
<VirtualHost 103.17.9.142:443>
ServerName tomcat.domain.com
...
# Include "/etc/apache2/conf.d/userdata/ssl/2_4/user/tomcat.domain.com/*.conf"
...
</VirtualHost>
只要在註解裡提到的對應目錄下,增加任何檔名.conf 檔案,即可載入自訂設定,在初始狀態下,上述目錄都不會存在,所以必須要先自行 mkdir -p ,本範例 std 與 sle 都建立名稱為 proxypass.conf 的檔案
$ vi /etc/apache2/conf.d/userdata/std/2_4/user/tomcat.domain.com/proxypass.conf
$ vi /etc/apache2/conf.d/userdata/ssl/2_4/user/tomcat.domain.com/proxypass.conf
且內容均為
<IfModule proxy_ajp_module>
ProxyRequests On
ProxyPass / http://domain.com:10000/tomcat/
ProxyPassReverse / http://domain.com:10000/tomcat/
</IfModule>
存檔後, 要執行 httpd.conf 重建
$ /usr/local/cpanel/scripts/rebuildhttpdconf
重啟 Apache
$ /usr/local/cpanel/scripts/restartsrv_httpd
完成後到網址 http://tomcat.domain.com/
就可以看到是執行目錄 /ea-tomcat85/webapps/ROOT/tomcat
而不是 apache 服務下的 www/tomcat
同時 http://domain.com:10000/tomcat/ 一樣保有作用,而原本指向 apache 的 subdomain (tomcat.domain.com) 只能透過目錄網址的方式進入 https://domain.com/tomcat/
補充:Tomcat SSL 設置
直接使用 WHM AutoSSL + Apache 反向代理即可