CentOS系統(tǒng)下前后端項目部署的操作指南
一、系統(tǒng)準備與基礎環(huán)境搭建
1. 系統(tǒng)更新與依賴安裝
# 更新系統(tǒng)軟件包 sudo yum update -y # 安裝基礎開發(fā)工具 sudo yum groupinstall "Development Tools" -y # 安裝EPEL倉庫(擴展軟件包) sudo yum install epel-release -y # 安裝常用工具 sudo yum install -y wget curl unzip net-tools
2. Java環(huán)境配置
# 安裝JDK 1.8 sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y # 驗證安裝 java -version javac -version
3. Docker環(huán)境搭建
# 安裝Docker sudo yum install docker -y # 啟動Docker服務 sudo systemctl start docker # 設置開機自啟 sudo systemctl enable docker # 驗證Docker安裝 docker --version docker run hello-world # 安裝Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
二、后端項目部署(Spring Boot)
1. JAR包上傳與執(zhí)行
# 創(chuàng)建項目目錄 mkdir -p /opt/backend cd /opt/backend # 上傳JAR包(使用rz命令) rz -E # 需要安裝lrzsz工具:sudo yum install lrzsz -y # 查看上傳文件 ls -l # 啟動Spring Boot應用 nohup java -jar your-project.jar > backend.log 2>&1 & # 查看進程 ps -ef | grep java # 查看日志 tail -f backend.log
nohup:不掛斷運行(即使終端關閉也不停止)。> logs/app.log:標準輸出重定向到日志文件。2>&1:將標準錯誤輸出也重定向到標準輸出。&:后臺運行。
2. 使用Systemd管理服務
# 創(chuàng)建服務配置文件 sudo vi /etc/systemd/system/backend.service # 內(nèi)容如下: [Unit] Description=Spring Boot Backend Service After=syslog.target [Service] User=root ExecStart=/usr/bin/java -jar /opt/backend/your-project.jar SuccessExitStatus=143 Restart=on-failure [Install] WantedBy=multi-user.target # 重新加載服務配置 sudo systemctl daemon-reload # 啟動服務 sudo systemctl start backend # 設置開機自啟 sudo systemctl enable backend # 查看服務狀態(tài) sudo systemctl status backend
三、前端項目部署(Vue)
1. Nginx環(huán)境配置
# 安裝Nginx
sudo yum install nginx -y
# 啟動Nginx
sudo systemctl start nginx
# 設置開機自啟
sudo systemctl enable nginx
# 配置Nginx反向代理
sudo vi /etc/nginx/conf.d/vue.conf
# 示例配置:
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        root /opt/frontend/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
# 重新加載Nginx配置
sudo nginx -s reload
2. Vue項目部署流程
# 創(chuàng)建前端目錄 mkdir -p /opt/frontend cd /opt/frontend # 上傳dist包(假設為vue-project-dist.tar.gz) rz -E # 解壓dist包 tar -zxvf vue-project-dist.tar.gz -C /opt/frontend/ # 驗證解壓結(jié)果 ls -R /opt/frontend/dist/
四、常用Linux命令匯總
1. 目錄操作
# 切換目錄
cd /path/to/directory
# 返回上一級目錄
cd ..
# 返回用戶主目錄
cd ~
# 顯示當前目錄路徑
pwd
# 創(chuàng)建多級目錄
mkdir -p /opt/myproject/{bin,conf,logs}
# 刪除空目錄
rmdir /path/to/empty_dir
# 遞歸刪除目錄
rm -rf /path/to/dir
2. 文件操作
# 查看文件內(nèi)容 cat filename.txt less filename.txt # 查找文件內(nèi)容 grep "search_text" filename.txt # 查找文件位置 find / -name filename.txt 2>/dev/null # 復制文件/目錄 cp source_file destination_path cp -r source_dir destination_dir # 移動/重命名文件 mv old_name new_name mv file.txt /new/path/ # 創(chuàng)建文件 touch newfile.txt # 編輯文件 vi filename.txt nano filename.txt
3. 文件備份策略
# 完整備份 rsync -avz --delete /source/ /backup/ # 增量備份 rsync -avz --link-dest=/backup/last/ /source/ /backup/new/ # 分區(qū)鏡像備份 dd if=/dev/sda of=/backup.img bs=4M # 使用tar備份 tar -cvpzf backup.tar.gz /path/to/backup/
五、Docker容器管理
1. 容器生命周期管理
# 查看運行中的容器 docker ps # 查看所有容器 docker ps -a # 啟動容器 docker start container_name # 停止容器 docker stop container_name # 強制停止容器 docker kill container_name # 刪除容器 docker rm container_name # 進入運行中的容器 docker exec -it container_name /bin/bash # 查看容器日志 docker logs -f container_name
2. 容器運行模式
# 交互式容器 docker run -it --name mycontainer centos /bin/bash # 守護式容器 docker run -d --name mycontainer nginx # 指定端口映射 docker run -d -p 8080:80 --name myweb nginx # 掛載目錄 docker run -v /host/path:/container/path -d --name myapp myimage # 設置自啟動 docker run --restart=always -d myimage
3. 鏡像管理
# 拉取鏡像 docker pull nginx:latest # 查看本地鏡像 docker images # 構(gòu)建鏡像 docker build -t myimage:1.0 . # 推送鏡像到倉庫 docker push myregistry/myimage:tag # 刪除鏡像 docker rmi image_id
六、防火墻與端口開放
# 查看防火墻狀態(tài) sudo firewall-cmd --state # 開放80端口 sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload # 開放多個端口 sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --permanent --add-port=3000/tcp # 查看開放端口 sudo firewall-cmd --list-all
七、常見問題排查
1. 日志查看技巧
# 實時查看日志 tail -f /var/log/messages # 查看特定時間段日志 journalctl --since "2025-07-12 00:00" --until "2025-07-13 12:00" # 查看Nginx錯誤日志 tail -n 50 /var/log/nginx/error.log
- -n 50 表示從文件末尾開始算起的前 50 行。
 - -f 則是實時跟蹤文件更新。
 
2. 網(wǎng)絡診斷命令
# 查看端口監(jiān)聽情況 netstat -tuln # 測試端口連通性 telnet example.com 80 # 查看路由表 route -n # 網(wǎng)絡抓包分析 tcpdump -i eth0 port 80 -w capture.pcap
3. 系統(tǒng)資源監(jiān)控
# 查看實時系統(tǒng)負載 top # 查看內(nèi)存使用情況 free -h # 查看磁盤空間 df -h # 查看目錄大小 du -sh /path/to/dir
八、自動化部署建議
1. 使用Shell腳本
#!/bin/bash
# 自動部署腳本示例
APP_NAME="myapp"
JAR_FILE="/opt/backend/${APP_NAME}.jar"
LOG_FILE="/var/log/${APP_NAME}_deploy.log"
echo "=== 開始部署 ===" >> ${LOG_FILE}
date +"%Y-%m-%d %H:%M:%S" >> ${LOG_FILE}
# 停止舊服務
if [ -f /var/run/${APP_NAME}.pid ]; then
    kill -9 $(cat /var/run/${APP_NAME}.pid)
fi
# 啟動新服務
nohup java -jar ${JAR_FILE} >> ${LOG_FILE} 2>&1 &
echo $! > /var/run/${APP_NAME}.pid
echo "=== 部署完成 ===" >> ${LOG_FILE}
2. CI/CD集成建議
- 使用Jenkins/GitLab CI實現(xiàn)自動構(gòu)建
 - 配置Webhook觸發(fā)部署流程
 - 使用Ansible進行批量服務器部署
 
九、安全加固建議
限制SSH訪問
sudo vi /etc/ssh/sshd_config # 修改以下配置: PermitRootLogin no PasswordAuthentication no AllowUsers your_username
重啟SSH服務:
sudo systemctl restart sshd
定期更新系統(tǒng)
# 定時任務示例(每周日凌晨更新)
sudo crontab -l | { cat; echo "0 0 * * 0 sudo yum update -y"; } | sudo crontab -
設置文件權(quán)限
# 設置敏感目錄權(quán)限 chmod 700 /opt/backend chown -R root:root /opt/backend
第十部分:常見錯誤與解決方案
一、Yum 源失效或元數(shù)據(jù)過期問題
1. 問題現(xiàn)象
yum install lrzsz -y 警告:加載 '/etc/yum.repos.d/CentOS-AppStream.repo' 失敗,跳過。 警告:加載 '/etc/yum.repos.d/CentOS-Vault.repo' 失敗,跳過。 上次元數(shù)據(jù)過期檢查:1:14:39 前,執(zhí)行于 2025年07月13日 星期日 16時31分35秒。
2. 原因分析
- CentOS 8 官方源已失效(官方已停止維護 CentOS 8)
 - 本地 yum 緩存未更新
 - 網(wǎng)絡連接異常(無法訪問默認鏡像源)
 
3. 解決方案
步驟 1:備份并替換為阿里云 Vault 源
# 備份原目錄 mv /etc/yum.repos.d /etc/yum.repos.d.bak mkdir /etc/yum.repos.d # 下載阿里云 Vault 源(以 CentOS 8.5.2111 為例) wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
注意:
替換 8.5.2111 為您的實際系統(tǒng)版本號(通過 cat /etc/redhat-release 查看)
步驟 2:清理緩存并重建元數(shù)據(jù)
yum clean all rm -rf /var/cache/yum yum makecache fast
步驟 3:重新安裝軟件包
yum install lrzsz -y
二、Java 環(huán)境配置問題
1. 問題現(xiàn)象
java -version -bash: java: command not found
2. 原因分析
- 未正確安裝 JDK
 - 環(huán)境變量未配置
 
3. 解決方案
步驟 1:安裝 OpenJDK
yum install java-1.8.0-openjdk -y
步驟 2:配置環(huán)境變量
# 查找 Java 路徑 alternatives --config java # 手動添加到 PATH(以實際路徑為準) echo 'export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-1.el8_6.x86_64/jre/bin' >> ~/.bashrc source ~/.bashrc
三、Docker 容器啟動失敗
1. 問題現(xiàn)象
docker start mycontainer Error response from daemon: Cannot start container mycontainer: [8] System error: permission denied
2. 原因分析
- Docker 服務未運行
 - 權(quán)限不足(非 root 用戶)
 - 端口沖突
 
3. 解決方案
步驟 1:啟動 Docker 服務
systemctl start docker
步驟 2:添加用戶到 docker 組
usermod -aG docker $USER newgrp docker
步驟 3:檢查端口占用
lsof -i :8080 # 替換為目標端口 kill -9 <PID>
四、Nginx 配置錯誤導致 502 Bad Gateway
1. 問題現(xiàn)象
訪問前端頁面返回 502 Bad Gateway
2. 原因分析
- Nginx 配置的后端地址錯誤
 - 后端服務未啟動
 - 權(quán)限問題(Nginx 無法讀取 dist 文件)
 
3. 解決方案
步驟 1:檢查 Nginx 配置
nginx -t # 驗證配置文件語法
步驟 2:檢查后端服務狀態(tài)
systemctl status backend # 替換為后端服務名稱
步驟 3:調(diào)整文件權(quán)限
chown -R nginx:nginx /opt/frontend/dist chmod -R 755 /opt/frontend/dist
五、文件上傳/解壓失敗
1. 問題現(xiàn)象
rz -E rz: can't open /tmp/rzXXX: Permission denied
2. 原因分析
/tmp目錄權(quán)限不足- rz 工具未安裝
 
3. 解決方案
步驟 1:安裝 lrzsz
yum install lrzsz -y
步驟 2:手動上傳文件
# 使用 SCP/SFTP 工具上傳文件到目標目錄 scp local_file user@server:/opt/backend/
步驟 3:解壓失敗處理
# 檢查壓縮包完整性 file your-file.tar.gz tar -tvf your-file.tar.gz # 查看內(nèi)容 # 強制解壓 tar -xvf your-file.tar.gz --strip-components=1 -C /opt/frontend/dist
六、防火墻阻止服務訪問
1. 問題現(xiàn)象
無法通過瀏覽器訪問服務(如 80 端口)
2. 原因分析
- 防火墻未開放對應端口
 
3. 解決方案
# 開放端口(如 80 和 8080) firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload # 臨時關閉防火墻(不推薦) systemctl stop firewalld
七、其他常見錯誤匯總
| 錯誤類型 | 原因 | 解決方案 | 
|---|---|---|
| No such file or directory | 文件路徑錯誤或權(quán)限不足 | 使用 ls -l 驗證路徑,chmod 修改權(quán)限 | 
| Permission denied | 權(quán)限不足(需 root 權(quán)限) | 使用 sudo 或切換到 root 用戶 | 
| Address already in use | 端口被占用 | 使用 lsof -i :<port> 查找并終止占用進程 | 
| No route to host | 網(wǎng)絡不通或防火墻限制 | 檢查 iptables/firewalld 配置,確保服務器可訪問 | 
| OutOfMemoryError | 內(nèi)存不足導致 Java 程序崩潰 | 調(diào)整 JVM 參數(shù)(如 -Xmx512m),優(yōu)化代碼減少內(nèi)存占用 | 
以上就是CentOS系統(tǒng)下前后端項目部署的操作指南的詳細內(nèi)容,更多關于CentOS前后端項目部署的資料請關注腳本之家其它相關文章!
相關文章
 紅帽RHEL8和7的區(qū)別對比分享(Centos8與7參照redhat)
這篇文章主要介紹了紅帽RHEL8和7有什么區(qū)別(Centos8與7參照redhat),包括紅帽RHEL8和RHEL7功能區(qū)別對比和RHEL8額外新功能新特性,對紅帽RHEL8和7相關知識感興趣的朋友跟隨小編一起看看吧2023-01-01
 Linux服務器nginx訪問日志里出現(xiàn)大量http 400錯誤的請求分析
這篇文章主要介紹了Linux服務器nginx訪問日志里出現(xiàn)大量http 400錯誤的請求分析,需要的朋友可以參考下2014-12-12

