雖然現代 Java 部署多使用 Docker、SDKMAN、Ansible 自動化,但掌握手動部署 JDK、Tomcat、MySQL 的完整流程,對理解類別載入機制、連接池配置、GC 調優、服務管理至關重要。本文記錄經典生產級部署步驟與關鍵配置。
| 組件 | 版本 | 安裝路徑 | 備註 |
|---|---|---|---|
| JDK | 1.8.0_332 (LTS) | /usr/java/jdk1.8.0_332 | Oracle JDK 或 OpenJDK 均可 |
| Tomcat | 9.0.73 | /usr/local/tomcat9 | Servlet 4.0, JSP 2.3 |
| MySQL | 8.0.32 | /usr/local/mysql | 或使用系統包管理器安裝 |
RPM 包安裝(推薦生產):
# 下載 MySQL Yum Repository
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
yum install -y mysql-community-server
# 啟動與安全初始化
systemctl start mysqld
systemctl enable mysqld
# 獲取臨時 root 密碼
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
開放遠程 root 訪問(僅開發/測試環境):
mysql -u root -p
ALTER USER 'root'@'%' IDENTIFIED BY 'StrongPass123!';
FLUSH PRIVILEGES;
生產環境建議:建立專用應用帳號、限制來源 IP、啟用 SSL、配置 bind-address=0.0.0.0。
# 解壓 Oracle JDK
tar zxvf jdk-8u332-linux-x64.tar.gz -C /usr/java/
# 或安裝 OpenJDK
yum install -y java-1.8.0-openjdk-devel
# 環境變數配置 /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_332
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version # 驗證
# 解壓
tar zxvf apache-tomcat-9.0.73.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-9.0.73 /usr/local/tomcat9
# 環境變數 /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat9
export CATALINA_BASE=/usr/local/tomcat9
export PATH=$CATALINA_HOME/bin:$PATH
# 建立專用運行用戶(安全最佳實踐)
useradd -r -s /bin/false tomcat
chown -R tomcat:tomcat /usr/local/tomcat9
# 配置連接池 (context.xml 或 server.xml Resource)
# 編輯 conf/context.xml
# 建立 systemd 服務檔 /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 9
After=network.target mysqld.service
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/java/jdk1.8.0_332
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/usr/local/tomcat9/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 重載並啟用
systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat
# 訪問管理介面
https://server_ip:8080/manager/html
# 部署測試 WAR
cp sample.war /usr/local/tomcat9/webapps/
# 檢查日誌
tail -f /usr/local/tomcat9/logs/catalina.out
setenv.sh):CATALINA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"server.xml):maxThreads="200" acceptCount="100" connectionTimeout="20000" compression="on"maxTotal 對應 max_connections,預留 20% 給管理連接。手動部署能精確控制每個組件版本、參數、權限,是排查類別載入衝突、連接洩漏、GC 停頓等疑難雜症的基礎。生產環境強烈建議容器化或基礎設施即代碼管理。