# AI 发布平台 - 部署说明 ## 快速打包 ```powershell # 方式一:双击运行 deploy\build.bat # 方式二:PowerShell powershell -File deploy\package.ps1 ``` 输出:`deploy/publish_deploy.zip` ## 服务器目录结构 解压 `publish_deploy.zip` 到 `/usr/local/publish_dishboard/`,得到: ``` /usr/local/publish_dishboard/ frontend/ index.html ← 前端入口 server.js ← Node.js 静态服务(端口 30080) assets/ ← JS / CSS 静态资源 app.jar ← Spring Boot 后端(端口 30081) database.db ← SQLite 数据库 ``` ## 宝塔面板部署步骤 ### 1. 后端(Java) - **项目名称**:`publish_backend` - **项目端口**:30081 - **启动文件**:`/usr/local/publish_dishboard/app.jar` - **运行目录**:`/usr/local/publish_dishboard/` - **启动命令**:`java -jar app.jar` ### 2. 前端(Node.js) - **项目名称**:`publish_dishboard` - **项目端口**:30080 - **启动文件**:`/usr/local/publish_dishboard/frontend/server.js` - **运行目录**:`/usr/local/publish_dishboard/frontend/` - **环境变量**: - `STATIC_DIR=/usr/local/publish_dishboard/frontend` - `UPLOADS_DIR=/usr/local/publish_dishboard/frontend/uploads` ### 3. Nginx 反向代理 ```nginx # 前端(静态文件 + Vue Router) location /publish_dishboard/ { rewrite ^/publish_dishboard(/.*)$ $1 break; proxy_pass http://127.0.0.1:30080; } # 后端 API location /publish_server/ { rewrite ^/publish_server(/.*)$ $1 break; proxy_pass http://127.0.0.1:30081; } # API 代理(前端 useApi.js 的 baseURL: '/api') location /api/ { rewrite ^/api/(.*) /api/$1 break; proxy_pass http://127.0.0.1:30081; } # 静态资源(前端 assets) location /assets/ { alias /usr/local/publish_dishboard/frontend/assets/; expires 30d; add_header Cache-Control "public, immutable"; } ``` ## 域名访问 - 前端:`https://www.1415243231.top/publish_dishboard` - 后端:`https://www.1415243231.top/publish_server` ## 数据库权限 如果遇到 `Permission denied` on `database.db`: ```bash chown -R www:www /usr/local/publish_dishboard chmod -R 755 /usr/local/publish_dishboard ``` 然后重启 Java 项目。 ## 完整部署流程 1. 本地运行 `deploy\build.bat`,生成 `deploy\publish_deploy.zip` 2. 上传 zip 到 NAS:`/usr/local/publish_dishboard/` 3. 解压覆盖 4. 重启前后端两个项目(宝塔面板操作) 5. 访问 `https://www.1415243231.top/publish_dishboard`