diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..599d354 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,294 @@ +# 应用部署文档 + +## 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. 联系方式 + +如有部署问题,请联系: +- 技术支持:[技术支持邮箱] +- 管理员:[管理员联系方式] + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..227301a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +# 使用Node.js作为基础镜像 +FROM node:18-alpine + +# 设置工作目录 +WORKDIR /app + +# 设置npm镜像源为国内源加速依赖安装 +RUN npm config set registry https://registry.npmmirror.com + +# 复制package.json和package-lock.json +COPY package*.json ./ + +# 安装项目依赖 +RUN npm install + +# 复制应用代码 +COPY . . + +# 暴露端口 +EXPOSE 3000 + +# 直接使用node启动应用 +CMD ["node", "Reject.js"] \ No newline at end of file diff --git a/Reject.html b/Reject.html new file mode 100644 index 0000000..8f7739f --- /dev/null +++ b/Reject.html @@ -0,0 +1,3852 @@ + + + +
+ + +