CollisionAvoidance/docs/deployment_guide.md

259 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署指南
本文档详细说明了如何在 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. 联系技术支持团队