# 部署指南 本文档详细说明了如何在 CentOS 系统上部署碰撞避免系统。支持在线和离线两种部署方式。 ## 目录 - [系统要求](#系统要求) - [在线部署](#在线部署) - [离线部署](#离线部署) - [部署后配置](#部署后配置) - [常见问题](#常见问题) ## 系统要求 - CentOS 7 或更高版本 - 至少 2GB 可用内存 - 至少 10GB 可用磁盘空间 - root 权限 - Python 3.6 或更高版本 ## 在线部署 如果服务器可以访问互联网,可以直接使用在线部署方式。 ### 步骤 1. 安装 Python 和 pip ```bash # 安装 Python 3 和 pip yum install -y python3 python3-pip # 安装 Python 依赖 pip3 install flask ``` 2. 获取项目代码 ```bash git clone [项目仓库地址] cd collision_avoidance ``` 3. 执行部署脚本 ```bash sudo ./scripts/deploy.sh ``` 脚本会自动完成以下操作: - 安装所需依赖包 - 编译项目 - 配置系统服务 - 启动服务 ## 离线部署 如果服务器无法访问互联网,需要提前准备依赖包,使用离线部署方式。 ### 准备阶段(在有网络的环境中进行) 1. 创建包下载目录 ```bash mkdir -p packages cd packages ``` 2. 下载系统依赖包 ```bash yum install --downloadonly --downloaddir=. \ cmake3 \ git \ nlohmann-json-devel \ boost-devel \ openssl-devel \ python3 \ python3-pip \ "Development Tools" ``` 3. 下载 Python 依赖包 ```bash # 创建 requirements.txt echo "flask==2.0.1" > requirements.txt # 下载 Python 包 pip3 download -r requirements.txt -d python_packages/ ``` 4. 创建依赖包列表 ```bash ls *.rpm > offline-deps.txt ``` 5. 打包项目文件 ```bash cd .. tar czf collision_avoidance.tar.gz collision_avoidance/ ``` ### 部署步骤 1. 将打包文件传输到目标服务器 ```bash scp collision_avoidance.tar.gz root@target-server:/tmp/ ``` 2. 在目标服务器上解压 ```bash cd /tmp tar xzf collision_avoidance.tar.gz cd collision_avoidance ``` 3. 安装 Python 依赖 ```bash # 安装离线 Python 包 pip3 install --no-index --find-links=packages/python_packages -r packages/requirements.txt ``` 4. 执行部署脚本 ```bash 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: ```bash # 开放 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 的端口访问控制 ## 卸载 如需卸载系统: ```bash sudo ./scripts/uninstall.sh ``` 卸载脚本会: - 停止并禁用服务 - 删除系统服务配置 - 删除程序文件 - 删除配置文件 - 关闭防火墙端口 ## 技术支持 如遇到问题,请: 1. 查看服务日志 2. 检查系统日志 3. 检查 Mock Server 日志 4. 联系技术支持团队