动态

详情 返回 返回

藍易雲:centos7在線安裝jdk1.8+tomcat+mysql8+nginx+docker - 动态 详情

下面給出一套在 CentOS 7 上“在線安裝並運行” JDK 1.8 + Tomcat + MySQL 8 + Nginx + Docker 的最穩妥方案:宿主機安裝 JDK 與 Docker,業務服務用容器運行(避免 CentOS 7 EOL 帶來的倉庫老化問題)。<span style="color:red">CentOS 7 已於 2024-06-30 結束維護,務必先修復軟件源</span>。🙂

環境與端口一覽

組件 推薦版本 端口 安裝方式
JDK 1.8(OpenJDK) 宿主機 yum
Docker 基於 CentOS7 倉庫 2375(可選) 宿主機 yum
MySQL 8.4(LTS) 3306 Docker 容器
Tomcat 9.0(JDK8 運行時) 8080 Docker 容器
Nginx stable 80/443 Docker 容器

工作流程(vditor/Markdown)

flowchart LR
A[切換 Vault 源]-->B[安裝 JDK 1.8]
B-->C[安裝並啓動 Docker]
C-->D[運行 MySQL 8 容器(持久化)]
C-->E[運行 Tomcat(JDK8)]
C-->F[運行 Nginx 反代]
D-->E
E-->F

0)切換到 Vault 源(必須)

sudo cp /etc/yum.repos.d/CentOS-Base.repo{,.bak}
sudo sed -i 's/^mirrorlist=/#mirrorlist=/g;s|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo
sudo yum clean all && sudo yum makecache

**解釋:**備份原倉庫;把鏡像自動選擇改為固定的 vault 歷史倉庫;<span style="color:red">確保 yum 可用</span>。

1)基礎工具與 JDK 1.8

sudo yum -y install yum-utils unzip tar firewalld
sudo systemctl enable --now firewalld

sudo yum -y install java-1.8.0-openjdk-devel
java -version

**解釋:**安裝常用工具與防火牆並啓動;安裝 <span style="color:red">OpenJDK 1.8(含編譯環境)</span>,java -version 用於校驗版本。

2)安裝並啓動 Docker

sudo yum -y install docker
sudo systemctl enable --now docker
docker version
sudo docker network create appnet

**解釋:**使用 CentOS7 可用的 docker 包;設置 <span style="color:red">開機自啓</span>;創建業務專用網段 appnet 便於容器互聯。

3)部署 MySQL 8.4(容器)

sudo mkdir -p /data/mysql8
sudo docker run -d --name mysql8 --restart=always \
  --network appnet -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD='StrongPass!' \
  -e TZ=Asia/Shanghai \
  -v /data/mysql8:/var/lib/mysql \
  mysql:8.4 \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

解釋:

  • -p 3306:3306 暴露數據庫端口;
  • MYSQL_ROOT_PASSWORD 設置 <span style="color:red">強口令</span>;
  • -v /data/mysql8:/var/lib/mysql 做數據<span style="color:red">持久化</span>;
  • 統一時區 + UTF8MB4,避免中文與表情亂序。
  • 8.4 為當前 LTS 分支,更穩定。

4)部署 Tomcat(JDK8 運行時)

sudo mkdir -p /data/tomcat/webapps
sudo docker run -d --name tomcat --restart=always \
  --network appnet -p 8080:8080 \
  -e TZ=Asia/Shanghai \
  -v /data/tomcat/webapps:/usr/local/tomcat/webapps \
  tomcat:9.0-jdk8-temurin

解釋:

  • 選用 tomcat:9.0-jdk8-temurin,內置 JDK8,兼容老項目;
  • webapps 映射,方便直接投放 war
  • 通過容器名 tomcat 與 Nginx 同網互通。

5)部署 Nginx(反向代理到 Tomcat)

sudo mkdir -p /data/nginx/conf /data/nginx/html /data/nginx/logs
cat <<'CONF' | sudo tee /data/nginx/conf/default.conf
server {
  listen 80;
  server_name _;
  location / {
    proxy_pass http://tomcat:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
CONF

sudo docker run -d --name nginx --restart=always \
  --network appnet -p 80:80 \
  -v /data/nginx/conf:/etc/nginx/conf.d \
  -v /data/nginx/html:/usr/share/nginx/html \
  -v /data/nginx/logs:/var/log/nginx \
  -e TZ=Asia/Shanghai \
  nginx:stable

解釋:

  • 簡單反代,將 / 轉發至 tomcat:8080
  • 映射配置/靜態/日誌目錄,方便本地管理;
  • <span style="color:red">同一網絡</span>通過服務名直連,免寫固定 IP。

6)防火牆與驗證

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

curl -I http://127.0.0.1
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
mysql -h127.0.0.1 -uroot -p

**解釋:**開放 80/443/3306;curl -I 查看首頁;docker ps 查看容器狀態;mysql 本地連通性測試。


關鍵提示

  • <span style="color:red">優先用容器獲得新版本</span>,宿主機僅保留 JDK8 與 Docker,降低 EOL 風險。
  • MySQL 首次啓動會初始化數據目錄;若密碼遺失需先停容器並進入安全模式重置。
  • 生產環境請開啓 <span style="color:red">最小權限賬户</span> 與網絡訪問控制,僅放行必要來源 IP。🔒

小結(原理説明表)

環節 核心做法 原因
源修復 切到 Vault 保障 yum 可用
宿主機 僅裝 JDK8、Docker 減少系統改動與依賴衝突
服務層 全容器化 獲得最新穩定版、易遷移
網絡 自建 appnet 名稱互聯、配置簡化
Nginx 反代 Tomcat 統一入口,便於後續 HTTPS 與緩存

以上步驟貼合 CentOS 7 當前可行路徑,重點強調了 <span style="color:red">可維護性</span> 與 <span style="color:red">安全性</span>。🚀

user avatar savo_shen 头像 xiongshihubao 头像 zhishuangdemaipian 头像 jeremylai7 头像 fu_623f04ad34d53 头像
点赞 5 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.