# 应用部署文档 ## 1. 环境要求 ### 服务器要求 - 操作系统:Linux(推荐 Ubuntu 18.04+ 或 CentOS 7+) - 内存:至少 2GB RAM - 存储空间:至少 10GB 可用空间 - 网络:可访问 Gitea 仓库(http://8.137.125.67:4000)和互联网 ### 软件依赖 - Docker:用于容器化部署 - Git:用于代码拉取 ## 2. 部署前准备 ### 2.1 安装 Docker #### Ubuntu/Debian ```bash # 更新系统包 apt-get update # 安装 Docker curl -fsSL https://get.docker.com | sh # 启动 Docker 服务 systemctl start docker # 设置 Docker 开机自启 systemctl enable docker ``` #### CentOS/RHEL ```bash # 更新系统包 yum update # 安装 Docker yum install -y docker # 启动 Docker 服务 systemctl start docker # 设置 Docker 开机自启 systemctl enable docker ``` ### 2.2 配置防火墙和安全组 #### 2.2.1 系统防火墙设置 确保服务器开放以下端口: - 3000:应用访问端口 - 4000:Gitea 仓库访问端口(仅在需要访问仓库时) ##### Ubuntu/Debian (ufw) ```bash # 允许 3000 端口 ufw allow 3000/tcp # 允许 4000 端口(如果需要) ufw allow 4000/tcp # 启用防火墙 ufw enable # 查看防火墙规则 ufw status verbose ``` ##### CentOS/RHEL (firewalld) ```bash # 允许 3000 端口 firewall-cmd --zone=public --add-port=3000/tcp --permanent # 允许 4000 端口(如果需要) firewall-cmd --zone=public --add-port=4000/tcp --permanent # 重新加载防火墙 firewall-cmd --reload # 查看防火墙规则 firewall-cmd --list-ports --zone=public ``` #### 2.2.2 云服务商安全组设置 如果您使用的是云服务器(如阿里云、腾讯云、华为云等),还需要在云服务商控制台配置安全组规则: 1. 登录云服务器控制台 2. 找到对应服务器的安全组配置 3. 添加入站规则: - 端口范围:3000/3000 - 协议:TCP - 授权对象:0.0.0.0/0(允许所有IP访问,或根据需要设置特定IP) - 描述:应用访问端口 ### 2.3 配置 Git 凭证(可选) 如果 Gitea 仓库需要认证,可以配置 Git 凭证缓存: ```bash # 设置凭证缓存时间(1小时) git config --global credential.helper cache # 设置凭证永久保存 git config --global credential.helper store # 首次拉取时会要求输入用户名和密码,之后会自动保存 ``` ## 3. 部署步骤 ### 3.1 下载部署脚本 将 `deploy.sh` 脚本上传到服务器的任意目录,例如 `/root` 目录。 ### 3.2 设置执行权限 ```bash chmod +x deploy.sh ``` ### 3.3 运行部署脚本 ```bash ./deploy.sh ``` ### 3.4 部署过程说明 脚本将执行以下步骤: 1. **检查应用目录**:如果不存在则克隆仓库,存在则拉取最新代码 2. **切换分支**:确保使用正确的 `Ly` 分支 3. **拉取代码**:从 Gitea 仓库拉取最新代码 4. **停止旧容器**:停止并删除旧的 Docker 容器 5. **检查端口**:确保 3000 端口未被占用 6. **构建镜像**:重新构建 Docker 镜像 7. **启动容器**:启动新的 Docker 容器 8. **清理镜像**:清理无用的 Docker 镜像 ## 4. 验证部署 ### 4.1 检查容器状态 ```bash docker ps | grep reject-app ``` 正常输出示例: ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abcdef123456 reject-app "node Reject.js" 1 minute ago Up 1 minute 0.0.0.0:3000->3000/tcp reject-app ``` ### 4.2 检查端口映射 ```bash docker port reject-app ``` 正常输出示例: ``` 3000/tcp -> 0.0.0.0:3000 ``` ### 4.3 访问应用 在浏览器中访问:http://8.137.125.67:3000 ## 5. 常见问题解决 ### 5.1 拒绝连接错误 **错误现象**:访问 http://8.137.125.67:3000 时显示"拒绝连接" **可能原因及解决方法**: 1. **防火墙未开放端口** - 检查防火墙规则是否允许 3000 端口 - 按照 2.2 节重新配置防火墙 2. **容器未正常启动** - 检查容器状态:`docker ps -a | grep reject-app` - 查看容器日志:`docker logs reject-app` 3. **端口被占用** - 检查 3000 端口占用情况:`lsof -i :3000` 或 `netstat -tulpn | grep :3000` - 停止占用端口的进程或容器 ### 5.2 数据库连接错误 **错误现象**:应用启动后显示数据库连接失败 **可能原因及解决方法**: 1. **数据库配置错误** - 检查 `Reject.js` 中的数据库连接配置 - 确保数据库地址、用户名、密码正确 2. **数据库服务器未运行** - 检查数据库服务器状态 - 确保数据库服务器允许远程连接 ### 5.3 代码拉取失败 **错误现象**:脚本执行时显示"代码拉取失败" **可能原因及解决方法**: 1. **Gitea 仓库不可访问** - 检查 Gitea 服务器状态:`curl -I http://8.137.125.67:4000` - 确保服务器可以访问 Gitea 仓库 2. **分支名称错误** - 检查 `deploy.sh` 中的 `BRANCH` 变量是否正确 - 确保仓库中存在指定的分支 ## 6. 应用维护 ### 6.1 查看应用日志 ```bash docker logs reject-app # 实时查看日志 docker logs -f reject-app ``` ### 6.2 重启应用 ```bash docker restart reject-app ``` ### 6.3 更新应用 再次运行部署脚本即可更新应用: ```bash ./deploy.sh ``` ### 6.4 停止应用 ```bash docker stop reject-app ``` ### 6.5 删除应用 ```bash # 停止并删除容器 docker stop reject-app docker rm reject-app # 删除镜像 docker rmi reject-app # 删除应用目录 rm -rf /app ``` ## 7. 脚本说明 ### 7.1 配置参数 脚本中的主要配置参数: - `REPO_URL`:Gitea 仓库地址 - `APP_DIR`:应用部署目录 - `BRANCH`:使用的代码分支 ### 7.2 脚本功能 - **自动代码拉取**:从 Gitea 仓库拉取最新代码 - **容器管理**:自动停止旧容器并启动新容器 - **端口管理**:自动检查并清理占用 3000 端口的进程 - **错误检查**:提供详细的错误信息和处理建议 - **日志记录**:记录部署过程中的关键步骤 ## 8. 注意事项 1. **第一次部署**:脚本会自动克隆仓库并启动应用 2. **后续部署**:脚本会自动拉取最新代码并重启应用 3. **分支切换**:如需切换分支,请修改 `deploy.sh` 中的 `BRANCH` 变量 4. **数据持久化**:应用数据通过 Docker 卷映射到 `/app` 目录,确保该目录安全 5. **定期备份**:建议定期备份 `/app` 目录和数据库 ## 9. 联系方式 如有部署问题,请联系: - 技术支持:[技术支持邮箱] - 管理员:[管理员联系方式]