运维与管理

系统维护

服务启动/停止命令

方法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)服务器端检查

    # 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)客户端检查

    # 确认客户端与服务器网络通畅
    ping <MySQL服务器IP>
    
    # 尝试连接 MySQL
    mysql -h <MySQL服务器IP> -P 3306 -u <用户名称> -p
    
    # 查看数据库是否存在初始化时配置的数据库
    SHOW DATABASES;
    
    # 进入目标数据库
    USE <你的数据库名>;
    
    # 查看表状态,确保初始化成功
    SHOW TABLE STATUS;
    # 终端应显示类似 "26 rows in set",否则初始化失败
    

    若客户端上述未展示26张表,则需重新执行数据库初始化步骤。

  3. MongoDB 数据库部署与权限配置(在MongoDB服务器上执行下述操作)

    (1)检查 MongoDB 服务状态

    sudo systemctl status mongod
    sudo systemctl start mongod
    

    (2)检查或创建 Pilot 数据库

    mongosh
    show dbs
    use Pilot
    db.init.insertOne({init: 1})
    

    (3)创建访问 Pilot 数据库的用户

    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)远程连接测试

    mongosh "mongodb://pilotUser:StrongPassword123!@服务器IP:27017/Pilot?authSource=Pilot"
    

验证方法

确认MySQL和MongoDB连通性后,需重启司南镜像: 在pilotos-4.0文件夹中执行以下命令重启司南镜像服务:

sudo docker compose down
sudo python3 AutoDeploy.py start

重启之后,再次访问 http://< 服务器 IP>:10020,验证许可证,如仍未解决上述问题,请通过官网联系运维人员。

许可证验证服务器连接出错,请检查网络

问题现象

点击验证许可证时提示**Cannot connect to the license verification server**。

问题原因

访问司南许可证验证服务器需本机可连接公网,出现此问题为本机网络问题,请检查本机网络是否正常。

验证方法

确认本机可连接网络后,在镜像内执行下述命令验证本机可访问司南许可证验证服务器,首先执行第一步进入司南镜像,之后通过curl工具测试连通性。

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}

如连接正常,服务器会返回如下信息:

{"success":false,"code":60001,"message":"License不合法,请输入正确的License","obj":null}