运维与管理 ========== 系统维护 -------- **服务启动/停止命令** 方法1:用户可通过管理页面启停司南系统,详细操作方法参考“司南状态页面”中的相关说明。 方法2:重新拉起镜像,详细操作方法参考“2.5 服务启动与验证”章节内容。 **数据库备份与恢复** 司南服务所使用的mysql和MongoDB数据库都由用户自行配置,用户可根据自身需求选择合适的数据库备份方案。 **用户权限管理** 详细操作方法参考“用户管理”中的相关说明。 **系统升级流程** 详细操作方法参考“司南状态页面”中的相关说明。 故障排除 -------- 常见问题及其解决方案列表。 **问题列表:** - **任务停留在 "Sent"(已发送)状态** **可能原因:** 与测控系统断开连接。 **解决方案:** 检查网络连接并重启测控服务。 - **数据库连接失败** **可能原因:** Redis 未运行。 **解决方案:** 执行 systemctl start redis。 - **编译失败** **可能原因:** 语法错误。 **解决方案:** 检查提交任务的线路格式。 - **页面加载缓慢** **可能原因:** 缓存堆积。 **解决方案:** 清除浏览器缓存或服务器端缓存。 部署问题答疑 ------------ 本节汇总系统部署过程中常见问题及对应解决方案,便于快速排查与定位。 PilotOS服务异常&司南授权校验服务暂时不可访问 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **问题现象** 执行完司南部署,访问 *http://< 服务器 IP>:10020=页面*,点击验证时提示PilotOS服务异常和司南授权校验暂时不可访问。 **问题可能原因** - IP配置错误 - MySQL表结构未初始化或初始化错误 - MongoDB连接错误 **排查步骤** 根据Config.json中配置,依次检查配置的MySQL连通性、MongoDB连通性,下述命令需在宿主机中执行: 1. **IP配置检查** 检查config.json中配置的数据库IP,不可将IP配置为127.0.0.1,因镜像内为单独环境,配置127.0.0.1即将数据库配置为镜像内而非宿主机,需配置为宿主机IP。 2. **检查 MySQL 连通性** 本步骤分为服务器端检查和客户端检查,确保 MySQL 服务正常运行且远程可访问。 **(1)服务器端检查** .. code-block:: bash # 1. 检查 MySQL 服务状态 sudo systemctl status mysql # 若未启动则启动服务 sudo systemctl start mysql # 2. 检查 MySQL 监听端口和地址 ss -lntp | grep 3306 # 注意:如果只绑定 127.0.0.1,则不允许远程访问 # 3. 检查配置文件 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # 核查以下内容: # bind-address = 0.0.0.0 # 支持远程访问 # skip-networking # 应注释或确保未启用 # 4. 检查防火墙是否允许 3306 sudo ufw status sudo ufw allow 3306/tcp # 5. 登录 MySQL 检查用户权限 mysql -u root -p # 查看用户及可访问主机 SELECT User, Host FROM mysql.user; # 确保需要远程访问的用户 Host 为 '%' 或客户端 IP # 查看数据库权限 SHOW GRANTS FOR '<用户名称>'@'<客户端IP或%>'; **(2)客户端检查** .. code-block:: bash # 确认客户端与服务器网络通畅 ping # 尝试连接 MySQL mysql -h -P 3306 -u <用户名称> -p # 查看数据库是否存在初始化时配置的数据库 SHOW DATABASES; # 进入目标数据库 USE <你的数据库名>; # 查看表状态,确保初始化成功 SHOW TABLE STATUS; # 终端应显示类似 "26 rows in set",否则初始化失败 若客户端上述未展示26张表,则需重新执行数据库初始化步骤。 3. **MongoDB 数据库部署与权限配置(在MongoDB服务器上执行下述操作)** **(1)检查 MongoDB 服务状态** .. code-block:: bash sudo systemctl status mongod sudo systemctl start mongod **(2)检查或创建 Pilot 数据库** .. code-block:: bash mongosh show dbs use Pilot db.init.insertOne({init: 1}) **(3)创建访问 Pilot 数据库的用户** .. code-block:: javascript use Pilot db.createUser({ user: "username", pwd: "password", roles: [ { role: "readWrite", db: "Pilot" } ] }) **(4)开启身份认证机制** 编辑配置文件: .. code-block:: bash sudo nano /etc/mongod.conf 添加内容: .. code-block:: yaml security: authorization: enabled 重启服务: .. code-block:: bash sudo systemctl restart mongod **(5)配置远程访问权限** 修改配置文件: .. code-block:: yaml net: bindIp: 0.0.0.0 开放防火墙端口(未开启防火墙忽略): .. code-block:: bash sudo ufw allow 27017/tcp **(6)远程连接测试** .. code-block:: bash mongosh "mongodb://pilotUser:StrongPassword123!@服务器IP:27017/Pilot?authSource=Pilot" **验证方法** 确认MySQL和MongoDB连通性后,需重启司南镜像: 在pilotos-4.0文件夹中执行以下命令重启司南镜像服务: .. code-block:: shell sudo docker compose down sudo python3 AutoDeploy.py start 重启之后,再次访问 http://< 服务器 IP>:10020,验证许可证,如仍未解决上述问题,请通过官网联系运维人员。 许可证验证服务器连接出错,请检查网络 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **问题现象** 点击验证许可证时提示**Cannot connect to the license verification server**。 **问题原因** 访问司南许可证验证服务器需本机可连接公网,出现此问题为本机网络问题,请检查本机网络是否正常。 **验证方法** 确认本机可连接网络后,在镜像内执行下述命令验证本机可访问司南许可证验证服务器,首先执行第一步进入司南镜像,之后通过curl工具测试连通性。 .. code-block:: shell sudo docker exec -it pilotos-server bash curl -v -k -X POST https://qcloud.originqc.com.cn/api/license/authLicense.json -H "Content-Type: application/json" -d '{"test":1} 如连接正常,服务器会返回如下信息: .. code-block:: json {"success":false,"code":60001,"message":"License不合法,请输入正确的License","obj":null}