# 玩玩云 - 手动部署指南 本指南详细说明如何手动部署玩玩云系统。 ## 环境要求 ### 服务器要求 - **操作系统**: Linux (Ubuntu 18.04+ / Debian 10+ / CentOS 7+) - **内存**: 最低 1GB RAM(推荐 2GB+) - **磁盘空间**: 至少 2GB 可用空间 ### 软件依赖 - **Node.js**: 20.x LTS - **Nginx**: 1.18+ - **Git**: 2.x ## 部署步骤 ### 1. 安装 Node.js 20.x #### Ubuntu/Debian ```bash # 安装 NodeSource 仓库 curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - # 安装 Node.js sudo apt-get install -y nodejs # 验证安装 node -v # 应显示 v20.x.x npm -v ``` #### CentOS/RHEL ```bash # 安装 NodeSource 仓库 curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - # 安装 Node.js sudo yum install -y nodejs # 验证安装 node -v npm -v ``` ### 2. 安装 Nginx #### Ubuntu/Debian ```bash sudo apt-get update sudo apt-get install -y nginx sudo systemctl enable nginx sudo systemctl start nginx ``` #### CentOS/RHEL ```bash sudo yum install -y epel-release sudo yum install -y nginx sudo systemctl enable nginx sudo systemctl start nginx ``` ### 3. 克隆项目 ```bash # 创建部署目录 sudo mkdir -p /var/www cd /var/www # 克隆项目 sudo git clone https://git.workyai.cn/237899745/vue-driven-cloud-storage.git wanwanyun # 设置目录权限 sudo chown -R $USER:$USER /var/www/wanwanyun ``` ### 4. 安装后端依赖 ```bash cd /var/www/wanwanyun/backend # 安装依赖 npm install --production # 创建数据目录 mkdir -p data storage ``` ### 5. 配置环境变量 ```bash # 复制环境变量模板 cp .env.example .env # 编辑配置文件 nano .env ``` **必须修改的配置**: ```bash # 生成随机 JWT 密钥 JWT_SECRET=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))") echo "JWT_SECRET=$JWT_SECRET" # 修改管理员密码 ADMIN_PASSWORD=你的强密码 ``` ### 6. 配置 Nginx ```bash # 复制 Nginx 配置 sudo cp /var/www/wanwanyun/nginx/nginx.conf /etc/nginx/sites-available/wanwanyun # 修改配置中的路径 sudo sed -i 's|/usr/share/nginx/html|/var/www/wanwanyun/frontend|g' /etc/nginx/sites-available/wanwanyun sudo sed -i 's|backend:40001|127.0.0.1:40001|g' /etc/nginx/sites-available/wanwanyun # 创建软链接启用配置 sudo ln -sf /etc/nginx/sites-available/wanwanyun /etc/nginx/sites-enabled/ # 删除默认配置(可选) sudo rm -f /etc/nginx/sites-enabled/default # 测试配置 sudo nginx -t # 重新加载 Nginx sudo systemctl reload nginx ``` ### 7. 配置系统服务 创建 systemd 服务文件: ```bash sudo tee /etc/systemd/system/wanwanyun.service > /dev/null << 'EOF' [Unit] Description=WanWanYun Cloud Storage Service After=network.target [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/var/www/wanwanyun/backend ExecStart=/usr/bin/node server.js Restart=always RestartSec=10 Environment=NODE_ENV=production [Install] WantedBy=multi-user.target EOF ``` 设置目录权限: ```bash sudo chown -R www-data:www-data /var/www/wanwanyun ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl enable wanwanyun sudo systemctl start wanwanyun ``` ### 8. 验证部署 ```bash # 检查服务状态 sudo systemctl status wanwanyun # 检查后端是否启动 curl http://127.0.0.1:40001/api/health # 检查 Nginx 是否正常 curl http://localhost ``` ## 配置 HTTPS(推荐) ### 使用 Let's Encrypt 免费证书 ```bash # 安装 Certbot sudo apt-get install -y certbot python3-certbot-nginx # 获取证书(替换为你的域名和邮箱) sudo certbot --nginx -d your-domain.com --email your@email.com --agree-tos --non-interactive # 验证自动续期 sudo certbot renew --dry-run ``` ### 更新后端配置 获取证书后,编辑 `/var/www/wanwanyun/backend/.env`: ```bash ENFORCE_HTTPS=true COOKIE_SECURE=true TRUST_PROXY=1 ``` 重启服务: ```bash sudo systemctl restart wanwanyun ``` ## 防火墙配置 ### UFW (Ubuntu) ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` ### firewalld (CentOS) ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` ## 日常维护 ### 查看日志 ```bash # 查看服务日志 sudo journalctl -u wanwanyun -f # 查看 Nginx 错误日志 sudo tail -f /var/log/nginx/error.log ``` ### 更新系统 ```bash cd /var/www/wanwanyun sudo git pull cd backend && npm install --production sudo systemctl restart wanwanyun ``` ### 备份数据 ```bash # 备份数据库 sudo cp /var/www/wanwanyun/backend/data/database.db /backup/database.db.$(date +%Y%m%d) # 备份上传文件(本地存储模式) sudo tar -czf /backup/storage-$(date +%Y%m%d).tar.gz /var/www/wanwanyun/backend/storage/ ``` ## 故障排查 ### 服务无法启动 ```bash # 检查日志 sudo journalctl -u wanwanyun -n 100 # 检查端口占用 sudo lsof -i :40001 # 检查 Node.js 版本 node -v ``` ### 无法访问网页 ```bash # 检查 Nginx 状态 sudo systemctl status nginx # 检查 Nginx 配置 sudo nginx -t # 检查防火墙 sudo ufw status ``` ### 数据库错误 ```bash # 检查数据库文件权限 ls -la /var/www/wanwanyun/backend/data/ # 修复权限 sudo chown -R www-data:www-data /var/www/wanwanyun/backend/data/ ``` ## 性能优化 ### 启用 Nginx 缓存 在 Nginx 配置的 `location /` 中添加: ```nginx location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; } ``` ### 配置日志轮转 ```bash sudo tee /etc/logrotate.d/wanwanyun > /dev/null << 'EOF' /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript } EOF ``` ## 相关链接 - [项目主页](https://git.workyai.cn/237899745/vue-driven-cloud-storage) - [问题反馈](https://git.workyai.cn/237899745/vue-driven-cloud-storage/issues) - [README](./README.md)