CollisionAvoidance/docs/deployment_guide.md

5.2 KiB
Raw Blame History

部署指南

本文档详细说明了如何在 CentOS 系统上部署碰撞避免系统。支持在线和离线两种部署方式。

目录

系统要求

  • CentOS 7 或更高版本
  • 至少 2GB 可用内存
  • 至少 10GB 可用磁盘空间
  • root 权限
  • Python 3.6 或更高版本

在线部署

如果服务器可以访问互联网,可以直接使用在线部署方式。

步骤

  1. 安装 Python 和 pip
# 安装 Python 3 和 pip
yum install -y python3 python3-pip

# 安装 Python 依赖
pip3 install flask
  1. 获取项目代码
git clone [项目仓库地址]
cd collision_avoidance
  1. 执行部署脚本
sudo ./scripts/deploy.sh

脚本会自动完成以下操作:

  • 安装所需依赖包
  • 编译项目
  • 配置系统服务
  • 启动服务

离线部署

如果服务器无法访问互联网,需要提前准备依赖包,使用离线部署方式。

准备阶段(在有网络的环境中进行)

  1. 创建包下载目录
mkdir -p packages
cd packages
  1. 下载系统依赖包
yum install --downloadonly --downloaddir=. \
  cmake3 \
  git \
  nlohmann-json-devel \
  boost-devel \
  openssl-devel \
  python3 \
  python3-pip \
  "Development Tools"
  1. 下载 Python 依赖包
# 创建 requirements.txt
echo "flask==2.0.1" > requirements.txt

# 下载 Python 包
pip3 download -r requirements.txt -d python_packages/
  1. 创建依赖包列表
ls *.rpm > offline-deps.txt
  1. 打包项目文件
cd ..
tar czf collision_avoidance.tar.gz collision_avoidance/

部署步骤

  1. 将打包文件传输到目标服务器
scp collision_avoidance.tar.gz root@target-server:/tmp/
  1. 在目标服务器上解压
cd /tmp
tar xzf collision_avoidance.tar.gz
cd collision_avoidance
  1. 安装 Python 依赖
# 安装离线 Python 包
pip3 install --no-index --find-links=packages/python_packages -r packages/requirements.txt
  1. 执行部署脚本
sudo ./scripts/deploy.sh

部署后配置

服务管理

  • 启动服务:systemctl start collision-avoidance
  • 停止服务:systemctl stop collision-avoidance
  • 重启服务:systemctl restart collision-avoidance
  • 查看状态:systemctl status collision-avoidance
  • 查看日志:journalctl -u collision-avoidance -f

配置文件

  • 配置文件位置:/etc/collision_avoidance/
  • WebSocket 服务端口8010
  • Mock Server 端口8081

防火墙配置

如果使用 firewalld

# 开放 WebSocket 端口
firewall-cmd --permanent --add-port=8010/tcp
# 开放 Mock Server 端口
firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --reload

目录结构

部署完成后的目录结构:

/
├── opt/collision_avoidance/    # 工作目录
├── etc/collision_avoidance/    # 配置文件目录
├── usr/local/bin/             # 可执行文件目录
└── etc/systemd/system/        # 服务配置文件目录

常见问题

1. 依赖包安装失败

  • 检查包版本是否与系统兼容
  • 确认所有依赖包都已下载
  • 检查包的完整性

2. Python 依赖安装失败

  • 确保 Python 版本正确3.6 或更高)
  • 检查 pip 是否正确安装
  • 确认所有 Python 包都已下载到正确位置

3. 编译失败

  • 确保所有依赖已正确安装
  • 检查编译日志中的具体错误信息
  • 确保系统内存足够

4. 服务启动失败

  • 检查服务日志:journalctl -u collision-avoidance -n 50
  • 确认配置文件权限正确
  • 验证端口 8010 和 8081 是否被占用

5. Mock Server 启动失败

  • 检查 Python 和依赖包是否正确安装
  • 确认端口 8081 未被占用
  • 检查 Mock Server 日志输出

6. 防火墙配置

  • 如果使用其他防火墙,需要手动开放 8010 和 8081 端口
  • 确认防火墙规则是否生效:firewall-cmd --list-all

注意事项

  1. 离线部署注意事项:

    • 确保下载的 RPM 包版本与目标系统兼容
    • 所有依赖包都需要下载到 packages 目录
    • offline-deps.txt 文件必须包含所有需要安装的包名
    • 如果某些包有依赖关系,需要确保按正确顺序列在 offline-deps.txt
    • Python 包需要下载到 packages/python_packages 目录
  2. 系统配置注意事项:

    • 部署前确保系统时间正确
    • 确保系统有足够的磁盘空间
    • 建议在部署前备份重要数据
    • 确保 Python 环境配置正确
  3. 安全注意事项:

    • 及时更新系统安全补丁
    • 定期检查系统日志
    • 建议配置系统防火墙
    • 定期备份配置文件
    • 注意 Mock Server 的端口访问控制

卸载

如需卸载系统:

sudo ./scripts/uninstall.sh

卸载脚本会:

  • 停止并禁用服务
  • 删除系统服务配置
  • 删除程序文件
  • 删除配置文件
  • 关闭防火墙端口

技术支持

如遇到问题,请:

  1. 查看服务日志
  2. 检查系统日志
  3. 检查 Mock Server 日志
  4. 联系技术支持团队