環境假設
- OS:CentOS 7/8 (x64)
- 工具:Xftp/Xshell 或任意 SSH/SFTP 客戶端
- 目標:JDK 1.8 + Tomcat 8.5/9 + MySQL 5.7/8.0
一、JDK 安裝與環境變數
# 1. 上傳並解壓
tar -zxvf jdk-8uXXX-linux-x64.tar.gz -C /usr/java/
# 2. 配置 /etc/profile
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
# 3. 立即生效並驗證
source /etc/profile
java -version
# 輸出含 "1.8.0_XXX" 即成功
二、Tomcat 安裝與啟動
# 1. 解壓
tar -zxvf apache-tomcat-8.5.XX.tar.gz -C /usr/java/
# 2. 啟動(默認 8080 端口)
/usr/java/apache-tomcat-8.5.XX/bin/startup.sh
# 3. 防火牆開放 8080(雲服務器還需控制台開放安全組)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
# 4. 瀏覽器訪問 https://IP:8080 出現 Tomcat 貓頁面即成功
安全加固:配置管理用戶
vim /usr/java/apache-tomcat-8.5.XX/conf/tomcat-users.xml
# 在 內添加
三、MySQL 安裝(CentOS 7 為例)
# 1. 下載並安裝官方 yum 源
wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 2. 安裝 Server
yum install -y mysql-community-server
# 3. 啟動並設置開機自啟
systemctl start mysqld
systemctl enable mysqld
# 4. 獲取臨時 root 密碼(/var/log/mysqld.log)
grep 'temporary password' /var/log/mysqld.log
# 5. 首次登錄修改密碼(需符合強密碼策略)
mysql -uroot -p'臨時密碼'
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
# 6. 字符集統一為 utf8mb4
vim /etc/my.cnf
# [mysqld] 下添加
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# [client] 下添加
default-character-set=utf8mb4
systemctl restart mysqld
四、常見問題排查
| 現象 | 原因 | 解決 |
| java -version 無輸出 | 環境變數未生效/路徑錯誤 | 檢查 JAVA_HOME、source /etc/profile、重新登錄 SSH |
| Tomcat 8080 無法訪問 | 防火牆/安全組未開放、Tomcat 未啟動 | firewall-cmd、雲控制台安全組、ps -ef|grep tomcat |
| MySQL 連接拒絕 | socket 文件權限、bind-address 配置 | chown mysql:mysql /var/lib/mysql、my.cnf bind-address=0.0.0.0 |
| 中文亂碼 | 字符集不一致 | 全鏈路 utf8mb4:DB、表、連接 URL、JVM file.encoding |
五、生產環境建議
- 使用 SDKMAN 或 Docker 管理多版本 JDK/Tomcat/MySQL,避免手動配置漂移。
- 啟用 慢查詢日誌、GC 日誌、Tomcat Access Log。
- 配置 logrotate 定期切割日誌,防止磁盤佔滿。
- 資料庫定期備份(
mysqldump + 異地存儲)。
- 上一篇文章: MyBatis 動態指定表名與欄位名:${} 與 #{} 差異與防 SQL 注入實務
- 下一篇文章: RxJava 實戰場景總結:延遲執行、線程切換、優先級資料源與鏈式調用優化
Copyright ©
程式碼之家 All Rights Reserved