# DesignHub 公网服务器部署指南 **服务器信息:** - IP: 45.192.99.48 - 端口: 22 - 用户名: root - 密码: 1blZllMIp7 - 系统: CentOS Stream 9 --- ## 快速部署脚本 已创建自动化部署脚本:`deploy_to_public_server.sh` 执行方式: ```bash cd /Users/lanmu/Desktop/qiangdanxitong bash deploy_to_public_server.sh ``` --- ## 手动部署步骤(如果脚本失败) ### 第一步:连接服务器 ```bash ssh root@45.192.99.48 # 密码: 1blZllMIp7 ``` ### 第二步:安装系统依赖 ```bash # 安装基础工具 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 已安装,跳过 ``` ### 第三步:创建目录结构 ```bash mkdir -p /opt/designhub/{backend,frontend,logs,uploads} ``` ### 第四步:配置 MySQL 数据库 ```bash 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(推荐)** 在本地执行: ```bash # 安装 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** ```bash # 上传整个项目目录 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/ ``` ### 第六步:导入数据库(如果需要) ```bash # 在服务器上执行 cd /tmp mysql -uroot -pDesignHub@2025_Root designhub < create_s3_config.sql # 导入其他SQL文件... ``` ### 第七步:配置后端 ```bash 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 ``` ### 第八步:配置前端 ```bash 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 ``` ### 第九步:配置系统服务 ```bash # 创建后端服务 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 ``` ### 第十步:启动后端服务 ```bash # 启动后端服务 systemctl start designhub-backend systemctl enable designhub-backend # 查看状态 systemctl status designhub-backend # 查看日志 tail -f /opt/designhub/logs/application.log ``` --- ## 验证部署 ### 检查服务状态 ```bash # 检查后端服务 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 (如果启用) ### 查看日志 ```bash # 后端日志 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 ``` --- ## 常用命令 ### 服务管理 ```bash # 重启后端 systemctl restart designhub-backend # 停止后端 systemctl stop designhub-backend # 查看后端日志 journalctl -u designhub-backend -f # 重启 Nginx systemctl restart nginx ``` ### 数据库管理 ```bash # 连接数据库 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 ``` --- ## 故障排查 ### 后端无法启动 1. 检查 Java 版本:`java -version` 2. 检查 JAR 文件:`ls -lh /opt/designhub/designhub.jar` 3. 检查日志:`tail -100 /opt/designhub/logs/backend-error.log` 4. 手动运行:`cd /opt/designhub && java -jar designhub.jar --spring.profiles.active=prod` ### 数据库连接失败 1. 检查 MySQL 状态:`systemctl status mysqld` 2. 测试连接:`mysql -u designhub -pDesignHub@2025_DB designhub` 3. 检查配置文件:`cat /opt/designhub/backend/src/main/resources/application-prod.yml` ### 前端无法访问 1. 检查 Nginx 状态:`systemctl status nginx` 2. 检查 Nginx 配置:`nginx -t` 3. 检查前端文件:`ls -lh /opt/designhub/frontend/dist/` 4. 查看 Nginx 错误日志:`tail -100 /opt/designhub/logs/nginx-error.log` --- ## 注意事项 1. **安全建议**: - 修改 MySQL root 密码 - 修改 Redis 密码 - 修改 JWT secret - 配置防火墙规则 2. **性能优化**: - 根据服务器配置调整 JVM 参数(-Xms, -Xmx) - 配置 MySQL 连接池大小 - 配置 Redis 连接池 3. **备份策略**: - 定期备份数据库 - 备份配置文件 - 备份上传的文件