You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

6.5 KiB

应用部署文档

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

# 更新系统包
apt-get update

# 安装 Docker
curl -fsSL https://get.docker.com | sh

# 启动 Docker 服务
systemctl start docker

# 设置 Docker 开机自启
systemctl enable docker

CentOS/RHEL

# 更新系统包
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)
# 允许 3000 端口
ufw allow 3000/tcp

# 允许 4000 端口(如果需要)
ufw allow 4000/tcp

# 启用防火墙
ufw enable

# 查看防火墙规则
ufw status verbose
CentOS/RHEL (firewalld)
# 允许 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 凭证缓存:

# 设置凭证缓存时间(1小时)
git config --global credential.helper cache

# 设置凭证永久保存
git config --global credential.helper store

# 首次拉取时会要求输入用户名和密码,之后会自动保存

3. 部署步骤

3.1 下载部署脚本

deploy.sh 脚本上传到服务器的任意目录,例如 /root 目录。

3.2 设置执行权限

chmod +x deploy.sh

3.3 运行部署脚本

./deploy.sh

3.4 部署过程说明

脚本将执行以下步骤:

  1. 检查应用目录:如果不存在则克隆仓库,存在则拉取最新代码
  2. 切换分支:确保使用正确的 Ly 分支
  3. 拉取代码:从 Gitea 仓库拉取最新代码
  4. 停止旧容器:停止并删除旧的 Docker 容器
  5. 检查端口:确保 3000 端口未被占用
  6. 构建镜像:重新构建 Docker 镜像
  7. 启动容器:启动新的 Docker 容器
  8. 清理镜像:清理无用的 Docker 镜像

4. 验证部署

4.1 检查容器状态

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 检查端口映射

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 :3000netstat -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 查看应用日志

docker logs reject-app
# 实时查看日志
docker logs -f reject-app

6.2 重启应用

docker restart reject-app

6.3 更新应用

再次运行部署脚本即可更新应用:

./deploy.sh

6.4 停止应用

docker stop reject-app

6.5 删除应用

# 停止并删除容器
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. 联系方式

如有部署问题,请联系:

  • 技术支持:[技术支持邮箱]
  • 管理员:[管理员联系方式]