8.4 KiB
8.4 KiB
DesignHub 公网服务器部署指南
服务器信息:
- IP: 45.192.99.48
- 端口: 22
- 用户名: root
- 密码: 1blZllMIp7
- 系统: CentOS Stream 9
快速部署脚本
已创建自动化部署脚本:deploy_to_public_server.sh
执行方式:
cd /Users/lanmu/Desktop/qiangdanxitong
bash deploy_to_public_server.sh
手动部署步骤(如果脚本失败)
第一步:连接服务器
ssh root@45.192.99.48
# 密码: 1blZllMIp7
第二步:安装系统依赖
# 安装基础工具
dnf install -y curl wget git unzip
# 安装 Java 17
dnf install -y java-17-openjdk java-17-openjdk-devel
# 安装 Maven
dnf install -y maven
# 安装 MySQL
dnf install -y mysql-server mysql
systemctl enable mysqld
systemctl start mysqld
# 设置 MySQL root 密码
mysqladmin -u root password "DesignHub@2025_Root"
# 安装 Redis
dnf install -y redis
systemctl enable redis
systemctl start redis
# Nginx 和 Node.js/pnpm 已安装,跳过
第三步:创建目录结构
mkdir -p /opt/designhub/{backend,frontend,logs,uploads}
第四步:配置 MySQL 数据库
mysql -uroot -pDesignHub@2025_Root << 'EOF'
CREATE DATABASE IF NOT EXISTS designhub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'designhub'@'localhost' IDENTIFIED BY 'DesignHub@2025_DB';
GRANT ALL PRIVILEGES ON designhub.* TO 'designhub'@'localhost';
FLUSH PRIVILEGES;
EOF
第五步:上传代码
方式1:使用 rsync(推荐)
在本地执行:
# 安装 sshpass(Mac)
brew install hudochenkov/sshpass/sshpass
# 上传后端代码
sshpass -p '1blZllMIp7' rsync -avz \
--exclude='target' --exclude='*.class' \
-e "ssh -o StrictHostKeyChecking=no" \
backend/ root@45.192.99.48:/opt/designhub/backend/
# 上传前端代码
sshpass -p '1blZllMIp7' rsync -avz \
--exclude='node_modules' --exclude='dist' \
-e "ssh -o StrictHostKeyChecking=no" \
frontend/ root@45.192.99.48:/opt/designhub/frontend/
# 上传数据库SQL文件(如果有)
sshpass -p '1blZllMIp7' scp -o StrictHostKeyChecking=no \
database/*.sql root@45.192.99.48:/tmp/
方式2:使用 scp
# 上传整个项目目录
sshpass -p '1blZllMIp7' scp -r \
-o StrictHostKeyChecking=no \
backend root@45.192.99.48:/opt/designhub/
sshpass -p '1blZllMIp7' scp -r \
-o StrictHostKeyChecking=no \
frontend root@45.192.99.48:/opt/designhub/
第六步:导入数据库(如果需要)
# 在服务器上执行
cd /tmp
mysql -uroot -pDesignHub@2025_Root designhub < create_s3_config.sql
# 导入其他SQL文件...
第七步:配置后端
cd /opt/designhub/backend
# 创建生产环境配置
cat > src/main/resources/application-prod.yml << 'EOF'
spring:
datasource:
url: jdbc:mysql://localhost:3306/designhub?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: designhub
password: DesignHub@2025_DB
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 10
maximum-pool-size: 50
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
redis:
host: localhost
port: 6379
password: DesignHub@2025_Redis
database: 0
timeout: 3000
jwt:
secret: DesignHub_Prod_Secret_Key_2025_Very_Strong
access-token-expiration: 7200000
refresh-token-expiration: 604800000
server:
port: 8080
logging:
level:
root: INFO
com.designhub: INFO
file:
name: /opt/designhub/logs/application.log
max-size: 10MB
max-history: 30
file:
upload:
path: /opt/designhub/uploads
max-size: 52428800
EOF
# 构建后端
mvn clean package -DskipTests
# 复制JAR文件
cp target/designhub-backend-1.0.0.jar /opt/designhub/designhub.jar
第八步:配置前端
cd /opt/designhub/frontend
# 创建生产环境配置
cat > .env.production << 'EOF'
VITE_APP_BASE_API=http://45.192.99.48/api
VITE_APP_TITLE=DesignHub
VITE_APP_VERSION=6.0
EOF
# 安装依赖
pnpm install
# 构建
pnpm build
第九步:配置系统服务
# 创建后端服务
cat > /etc/systemd/system/designhub-backend.service << 'EOF'
[Unit]
Description=DesignHub Backend Service
After=network.target mysqld.service redis.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/designhub
ExecStart=/usr/bin/java -jar -Xms512m -Xmx1024m /opt/designhub/designhub.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10
StandardOutput=append:/opt/designhub/logs/backend.log
StandardError=append:/opt/designhub/logs/backend-error.log
[Install]
WantedBy=multi-user.target
EOF
# 创建 Nginx 配置
cat > /etc/nginx/conf.d/designhub.conf << 'EOF'
server {
listen 80;
server_name 45.192.99.48;
root /opt/designhub/frontend/dist;
index index.html;
access_log /opt/designhub/logs/nginx-access.log;
error_log /opt/designhub/logs/nginx-error.log;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:8080/api/;
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 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;
}
EOF
# 重新加载 systemd
systemctl daemon-reload
# 测试 Nginx 配置
nginx -t
# 重启 Nginx
systemctl restart nginx
systemctl enable nginx
第十步:启动后端服务
# 启动后端服务
systemctl start designhub-backend
systemctl enable designhub-backend
# 查看状态
systemctl status designhub-backend
# 查看日志
tail -f /opt/designhub/logs/application.log
验证部署
检查服务状态
# 检查后端服务
systemctl status designhub-backend
# 检查 MySQL
systemctl status mysqld
# 检查 Redis
systemctl status redis
# 检查 Nginx
systemctl status nginx
测试访问
- 前端地址: http://45.192.99.48
- API地址: http://45.192.99.48/api
- API文档: http://45.192.99.48/api/doc.html (如果启用)
查看日志
# 后端日志
tail -f /opt/designhub/logs/application.log
# 后端错误日志
tail -f /opt/designhub/logs/backend-error.log
# Nginx 访问日志
tail -f /opt/designhub/logs/nginx-access.log
# Nginx 错误日志
tail -f /opt/designhub/logs/nginx-error.log
常用命令
服务管理
# 重启后端
systemctl restart designhub-backend
# 停止后端
systemctl stop designhub-backend
# 查看后端日志
journalctl -u designhub-backend -f
# 重启 Nginx
systemctl restart nginx
数据库管理
# 连接数据库
mysql -u designhub -pDesignHub@2025_DB designhub
# 备份数据库
mysqldump -u designhub -pDesignHub@2025_DB designhub > backup.sql
# 恢复数据库
mysql -u designhub -pDesignHub@2025_DB designhub < backup.sql
故障排查
后端无法启动
- 检查 Java 版本:
java -version - 检查 JAR 文件:
ls -lh /opt/designhub/designhub.jar - 检查日志:
tail -100 /opt/designhub/logs/backend-error.log - 手动运行:
cd /opt/designhub && java -jar designhub.jar --spring.profiles.active=prod
数据库连接失败
- 检查 MySQL 状态:
systemctl status mysqld - 测试连接:
mysql -u designhub -pDesignHub@2025_DB designhub - 检查配置文件:
cat /opt/designhub/backend/src/main/resources/application-prod.yml
前端无法访问
- 检查 Nginx 状态:
systemctl status nginx - 检查 Nginx 配置:
nginx -t - 检查前端文件:
ls -lh /opt/designhub/frontend/dist/ - 查看 Nginx 错误日志:
tail -100 /opt/designhub/logs/nginx-error.log
注意事项
-
安全建议:
- 修改 MySQL root 密码
- 修改 Redis 密码
- 修改 JWT secret
- 配置防火墙规则
-
性能优化:
- 根据服务器配置调整 JVM 参数(-Xms, -Xmx)
- 配置 MySQL 连接池大小
- 配置 Redis 连接池
-
备份策略:
- 定期备份数据库
- 备份配置文件
- 备份上传的文件