一、準備工作
- 服務器環境要求
銀河麒麟 V10 操作系統
開放端口:MinIO (9000、9001)、 Redis (6379)、應用服務 jar包(18888)、前端服務(8080)
系統用戶:具有 sudo 權限的用戶
操作:需要先有必備的工具前端的vsCode,webStrom、后臺的idea,以及操作服務器的工具,我這邊使用的是xftp和文件上傳,把打包好的程序通過文件傳輸工具,放置到服務器中
- 創建數據存儲目錄
sudo mkdir -p /opt/data/minio minio #數據存儲地址
sudo mkdir -p /opt/data/redis #redis日志地址
sudo mkdir -p /opt/javaApp #jar包地址
sudo mkdir -p /opt/frontApp #前端打包地址
sudo chmod -R 777 /data # 簡化權限,生產環境應根據實際需求設置
sudo chmod -R 755 /opt/frontApp
二、 jar包 部署
- 安裝 OpenJDK 11
# 麒麟系統通常使用 yum 包管理器
sudo yum install -y java-11-openjdk-devel# 驗證安裝
java -version#設置默認 Java 版本
sudo alternatives --config java
- 創建 Systemd 服務
sudo vim /etc/systemd/system/cloudImage.service
[Unit]
Description=Cloud Image System Backend
After=network.target[Service]
# 使用專用用戶
User=appuser
Group=appuser# 使用正確的JAR文件名
WorkingDirectory=/opt/javaApp
ExecStart=/usr/bin/java -jar cloudImages-system-3.5.4.jarSuccessExitStatus=143
Restart=always
RestartSec=30
Environment="SERVER_PORT=18888"# 添加內存限制(可選)
# Environment="JAVA_OPTS=-Xms512m -Xmx1024m"[Install]
WantedBy=multi-user.target
- 啟動服務操作命令
1.重新加載 sudo systemctl daemon-reload 2.啟動服務 sudo systemctl start cloudImage3.啟用服務 sudo systemctl enable cloudImage4.停止服務:sudo systemctl stop cloudImage5.重啟服務:sudo systemctl restart cloudImage6.查看狀態:sudo systemctl status cloudImage
- 權限不足問題處理
Main PID: 97050 (code=exited, status=217/USER)
1.創建專用系統用戶(推薦):sudo useradd -r -s /bin/false appuser
2.修改文件權限:sudo chown -R appuser:appuser /opt/app/backend
3.修正服務配置文件: sudo vim /etc/systemd/system/cloudImage.service
4.重新加載并啟動服務:
查找占用18888端口的進程
sudo lsof -i :18888
停止沖突進程
sudo kill -9
三、Nginx 部署
- 安裝 Nginx:sudo yum install -y nginx
- 創建前端目錄 sudo mkdir -p /opt/frontApp # 上傳 Hbuilder 打包文件到此目錄
- 創建專用配置文件 sudo vim /etc/nginx/conf.d/cloud-frontend.conf #多個前端項目新增不同的配置文件即可,修改指向地址
# 前端主服務配置
server {listen 8080;server_name localhost;# 前端文件根目錄root /opt/frontApp/web;# 默認文件設置index index.html;# 靜態資源緩存設置location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {expires 365d;add_header Cache-Control "public, immutable";try_files $uri =404;}# 前端路由處理 (Vue/React 等 SPA 應用需要)location / {try_files $uri $uri/ /index.html;}# 后端 API 代理location /api {proxy_pass http://localhost:18888;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 增加超時時間proxy_connect_timeout 300s;proxy_send_timeout 300s;proxy_read_timeout 300s;}# 直接代理后端頁面 (如登錄頁)location ~ ^/(login|register) {proxy_pass http://localhost:18888;proxy_set_header Host $host;}# 禁止訪問敏感文件location ~ /\.(?!well-known) {deny all;}# 自定義錯誤頁面error_page 404 /404.html;location = /404.html {internal;}error_page 500 502 503 504 /50x.html;location = /50x.html {internal;}
}
# 可選:HTTP 重定向到 HTTPS (如果有域名證書)
server {listen 80;server_name your-domain.com;return 301 https://$host$request_uri;
}
- 設置目錄權限
# 創建前端用戶組
sudo groupadd frontend
sudo useradd -r -s /bin/false -g frontend frontuser# 設置目錄所有權
sudo chown -R frontuser:frontend /opt/frontApp
sudo chmod -R 755 /opt/frontApp# 允許 Nginx 訪問前端目錄
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/frontApp(/.*)?"
sudo restorecon -Rv /opt/frontApp# 允許 Nginx 網絡連接
sudo setsebool -P httpd_can_network_connect 1
- 測試并重載配置
# 測試配置語法
sudo nginx -t# 重載配置 (不中斷服務)
sudo systemctl reload nginx檢查 Nginx 服務狀態
sudo systemctl status nginx# 完整重啟
sudo systemctl restart nginx#設置開機自啟
sudo systemctl enable nginx
檢查前端文件是否存在
ls -l /opt/frontApp/web/
監聽端口
sudo netstat -tuln | grep 8080
- 防火墻設置
開放 8080 端口
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
驗證端口已開放
sudo firewall-cmd --list-ports | grep 8080
四、部署redis
- 安裝 Redis
sudo yum install epel-release
sudo yum install redis - 配置 Redis
編輯 sudo vim /etc/redis.conf:
1.按下“i” 進入編輯
2.按下 esc 退出編輯 輸入 :wq 保存并退出。
3.搜索特定內容 按下 / 鍵,然后輸入你想要搜索的內容 例如:/bind
按下 Enter 鍵后,編輯器會跳轉到第一個匹配項
如果需要查找下一個匹配項,可以按 n 鍵。
# 綁定所有網絡接口
bind 0.0.0.0# 設置密碼
requirepass 123456# 選擇數據庫
databases 14# 持久化設置
save 900 1
save 300 10
save 60 10000# 日志文件
logfile "/var/log/redis/redis.log"# 端口設置
port 6379
# 保護模式關閉
protected-mode no# 數據目錄
dir /opt/data/redis
- 創建日志目錄并設置權限 (前面創建的可以不用創建,也可以使用xftp連接,手動創建文件夾)
sudo mkdir -p /opt/data/log/redis
sudo chown redis:redis /opt/data/log/redis
sudo chmod 755 /opt/data/log/redis
- 啟動 Redis 服務
sudo systemctl enable redis
sudo systemctl start redis
-
防火墻設置
sudo firewall-cmd --permanent --add-port=6379/tcp # Redis
sudo firewall-cmd --reload
驗證端口開放
sudo firewall-cmd --list-ports -
問題處理
Caused by: org.springframework.data.redis.RedisConnectionFailureException:
Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException:
Unable to connect to localhost:6379Caused by: java.net.ConnectException: 拒絕連接
這表明:Redis 服務器未運行、Redis 未監聽 6379 端口、防火墻阻止了訪問、Redis 配置錯誤、網絡連接問題
① 檢查 Redis 服務狀態
# 檢查 Redis 是否運行
sudo systemctl status redis# 如果沒有運行,啟動服務
sudo systemctl start redis# 設置開機自啟
sudo systemctl enable redis# 重啟 Redis 服務
sudo systemctl restart redis
② 檢查配置
sudo vi /etc/redis.conf
# 監聽所有網絡接口
bind 0.0.0.0# 保護模式關閉
protected-mode no# 端口設置
port 6379# 如果需要密碼,設置密碼
requirepass yourstrongpassword
③ 檢查 Redis 監聽端口
# 檢查 6379 端口是否被監聽
sudo netstat -tuln | grep 6379# 應該看到類似輸出:
# tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
五、部署Minio
- 下載并安裝 MinIO,載正確的 ARM64 版本
確定系統架構 uname -m
如果輸出 aarch64 或 arm64,說明是 ARM 架構
如果輸出 x86_64,說明是 AMD64 架構 - 下載正確的 mc 版本(ARM64)
需要刪除,才進行刪除,第一次配置可以不需要
具體操作流程
# 刪除舊版本
sudo rm -f /usr/local/bin/minio
sudo rm -f /usr/local/bin/mc# 下載 ARM64 版本
wget https://dl.min.io/client/mc/release/linux-arm64/mc
sudo wget https://dl.min.io/server/minio/release/linux-arm64/minio -O /usr/local/bin/minio# 或者下載 AMD64 版本,根據架構來定
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio# 創建數據目錄(創建了就不用再創建了)
sudo mkdir -p /opt/data/minio
sudo chmod -R 777 /opt/data/minio# 設置執行權限
sudo chmod +x /usr/local/bin/minio
# 設置執行權限
chmod +x mc# 安裝到系統路徑
sudo mv mc /usr/local/bin/# 驗證安裝
mc --version
- 驗證 MinIO 文件
# 檢查文件類型
file /usr/local/bin/minio# 檢查文件權限
ls -l /usr/local/bin/minio
- 創建 MinIO 服務文件
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
User=root
Group=root
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMESRestart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target
- 創建 MinIO 環境配置文件
# MinIO access key and secret key
MINIO_ACCESS_KEY="minioadmin"
MINIO_SECRET_KEY="minioadmin"# MinIO storage path
MINIO_VOLUMES="/opt/data/minio"# MinIO server address
MINIO_OPTS="--address :9000 --console-address :9001"# MinIO region
MINIO_REGION="us-east-1"
- 啟動 MinIO 服務
sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
# 檢查服務狀態
sudo systemctl status minio# 停止服務
sudo systemctl stop minio# 重啟服務
sudo systemctl restart minio# 檢查端口監聽
netstat -tuln | grep 9000# 使用 curl 測試
curl http://localhost:9000
- 創建存儲桶
# 安裝 MinIO 客戶端,上面已經下載好了
chmod +x mc
sudo mv mc /usr/local/bin/# 使用 mc 客戶端,配置客戶端
mc alias set local http://localhost:9000 minioadmin minioadmin# 創建存儲桶,也可以根據ip地址登錄頁面進行手動創建
mc mb local/yyx-dev
- 防火墻配置
sudo firewall-cmd --permanent --add-port=9000/tcp # MinIO
sudo firewall-cmd --permanent --add-port=9001/tcp # MinIO Console
sudo firewall-cmd --reload
# 驗證端口開放
sudo firewall-cmd --list-ports
- 常見錯誤解決方案
確保數據目錄存在
sudo mkdir -p /data/minio
設置正確權限
sudo chmod -R 777 /data/minio # 測試環境簡化權限
生產環境建議:sudo chown -R minio-user:minio-user /data/minio
錯誤 1:No such file or directory
安裝依賴庫: sudo yum install libatomic -y
錯誤 2:Permission denied
設置 SELinux 寬容模式: sudo setenforce 0
或添加 SELinux 策略
sudo semanage fcontext -a -t bin_t /usr/local/bin/minio
sudo restorecon -v /usr/local/bin/minio
錯誤 3:端口沖突
# 檢查端口占用
sudo lsof -i :9000# 修改端口配置
sudo sed -i 's/:9000/:19000/g' /etc/default/minio
sudo sed -i 's/:9001/:19001/g' /etc/default/minio
sudo systemctl restart minio