资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

安装部署问题

在私有化部署过程中遇到的部署相关问题,可以查看此文档进行解决。
若文档仍未解决您的问题,请提交工单联系百度的工作人员

单机部署问题

安装[人脸数据库服务]

1、数据库连接失败,报错: Can't connect to local Mysql server through socket '/home/dil-face/databus5535/tmp/mysql.sock'

图片.png

解决方案:

1)终止databus进程:

ps j -A |grep databus5535|grep -v "grep"
终止databus相关进程及其父进程
终止后请再次执行 ps j -A |grep databus5535|grep -v "grep" 核实,确保进程杀干净

2)卸载databus

# 删除idl-face用户及其家目录,用于清理mysql底层数据
userdel -r idl-face

3)修改启动脚本

进入部署包内 original/package/Applications/face-server/project-conf/
# 通过sed命令将sleep 40s替换为sleep 140s
sed -i 's/sleep 40s/sleep 140s/g' mysql_start.sh

修改后如下图所示:

图片.png

4)重新部署数据库服务

bash mysql_start.sh
-------------------------------出现下面结果表示安装mysql成功------------------------------ 
1. databus start
2. 190506 15:08:17 mysqld_safe Logging to '/home/idl-face/databus5535/log/mysql.err'.
3. 190506 15:08:17 mysqld_safe Starting mysqld daemon with databases from /home/idl-
4. face/databus5535/var
5. databus init start
6. databus grant ...
7. databus init start
8. databus init finish

2、数据库服务无法自动部署,如何进行手动部署并设置服务开机自动启动?

(1)首先以root用户创建idl-face新用户

useradd idl-face
passwd 用户自定义

(2)解压original/package/Applications/face-server目录下的basepkg.tar.gz安装包,里面有databus5535目录,将其移到: /home/idl-face/databus5535/ (目录固定,不能为其他目录)

mv ./databus5535 /home/idl-face/

(3)创建一个给mysql用的日志目录 /var/log/mariadb,并赋为 777 权限,并对 /home/idl-face/databus5535/ 赋权

mkdir -p /var/log/mariadb
chmod 777 /var/log/mariadb -R
chown -R idl-face.idl-face  /home/idl-face/databus5535/

(4)切换到idl-face用户

su idl-face

(5)进入databus5535目录

cd /home/idl-face/databus5535/bin/

(6)启动服务

nohup ./mysqld_safe --defaults-file=../etc/my.cnf &

(7)初始化数据库

cd /home/idl-face/databus5535/
bin/mysql -uroot -p'Bs~XIsDDv4XcDGCt)S(+4*yjQ&8NJh' --default-character-set=utf8 < sql/database_and_grant.sql
bin/mysql -uroot -p'Bs~XIsDDv4XcDGCt)S(+4*yjQ&8NJh' --default-character-set=utf8 < sql/face.sql

(8)检查数据库是否启动成功

ps -ef | grep mysql

(9)将数据库启动加入开机启动

vim /etc/rc.local
加入bash /home/idl-face/databus5535/sh/mysql_boot.sh

(10)将idl-face用户禁用登录 (非常重要)

执行完成安装后,请一定要将idl-face用户禁用登录
方法:
1、切换到root用户
2、usermod -s /sbin/nologin idl-face

3、安装数据库报错error while loading shared libraries :libncurses.so.5……

报错为缺少对应的libncurses.so.5
可以yum install  libncurses.so.5或者yum install  libncurses.so.*进行安装
之后ps -ef | grep mysql 查看数据库进程id  kill掉
再执行userdel -r idl-face 将对应用户及文件删除
之后执行一键部署脚本或者手动部署即可

一键鉴权和人脸服务

在一键安装鉴权服务和人脸识别服务过程中主要会出现以下几类问题,大家可以根据实际部署中遇到的问题进行排查解决。

(一)检查服务器环境

  1. 请保证8443端口(鉴权服务端口)不被占用
  2. CPU支持AVX/AVX2以及BMI2指令集(12年后的CPU基本都支持)

环境检查问题及解决方案

类型 描述 解决方案
CPU内存环境检查 要求≥32GB,实际不满足要求 百万级人脸库内存>16GB,执行continue命令即可
CPU指令集检查 环境检查结果显示当前系统不支持avx/avx2指令集以及bmi2指令集 需要更换硬件为可以支持avx/avx2指令集以及bmi2指令集的CPU
硬件环境检查 要求≥500GB,实际不满足要求 百万级人脸库硬盘≥100GB,执行continue命令即可
显卡检查 环境检查结果显示检查不到显卡 执行nvidia-smi确认显卡存在,执行continue命令即可
显卡驱动检查 环境检查结果显示显卡驱动不符合要求 卸载掉自己安装的显卡驱动,重新执行一键安装部署命令(一键安装过程中会安装驱动等环境,不建议客户自己安装驱动,驱动版本容易与人脸模型不兼容)

(二)安装Docker

1.Docker安装过程中发生冲突

Docker需要使用从百度下载的安装部署包中的Docker,如果您本地已有Docker,需要确认Docker是否可以卸载。(如果Docker中已经装了服务就先保存下来移植到新建的部署包中的Docker中)

2.docker启动失败, Failed to program NAT chain: ZONE_CONFLICT: 'docker0' already bound to a zone

问题现象:

通过journalctl -u docker --no-pager 命令发现发现docker报错

failed to start daemon: Error initializing network controller: Error creating  
default "bridge" network: Failed to program NAT chain: ZONE_CONFLICT: 'docker0'
already bound to a zone

解决方案:

该报错是因为防火墙的区域冲突,导致创建虚拟网络失败。解决方案如下:

firewall-cmd --zone=trusted --remove-interface=docker0 
firewall-cmd --reload
  1. 部署过程中docker出现no space left on device的报错

请参考 修改docker的默认存储路径

  1. 安装docker-ce,依赖包冲突

出现需要安装依赖的版本比系统自带版本低的情况,导致安装失败,详细报错如下

--> 解决依赖关系完成
错误:软件包:libsemanage-python-2.5-8.el7.x86_64 (Local_yum)
          需要:libsemanage = 2.5-8.el7
          已安装: libsemanage-2.5-14.el7.x86_64 (@anaconda)
              libsemanage = 2.5-14.el7
          可用: libsemanage-2.5-8.el7.x86_64 (Local_yum)
              libsemanage = 2.5-8.el7
错误:软件包:audit-libs-python-2.7.6-3.el7.x86_64 (Local_yum)
          需要:audit-libs(x86-64) = 2.7.6-3.el7
          已安装: audit-libs-2.8.5-4.el7.x86_64 (@anaconda)
              audit-libs(x86-64) = 2.8.5-4.el7
          可用: audit-libs-2.7.6-3.el7.x86_64 (Local_yum)
              audit-libs(x86-64) = 2.7.6-3.el7
错误:软件包:policycoreutils-python-2.5-17.1.el7.x86_64 (Local_yum)
          需要:policycoreutils = 2.5-17.1.el7
          已安装: policycoreutils-2.5-34.el7.x86_64 (@anaconda)
              policycoreutils = 2.5-34.el7
          可用: policycoreutils-2.5-17.1.el7.x86_64 (Local_yum)
              policycoreutils = 2.5-17.1.el7
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest

2021-10-21 13:58:19,993 - 7100 - install - INFO - subprocess finished,cmd : ['yum', 'install', '-y', 'docker-ce']

解决方案: 服务器联网条件下,则可以通过在线安装解决。

yum -y install docker-ce

如果yum安装 docker-ce 返回 no package docker-ce available,请使用如下方法解决:

# 安装yum管理工具
yum install -y yum-utils

# yum添加软件源
yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

# 刷新缓存
yum makecache fast

# 安装docker-ce
yum install docker-ce

(三)安装Nvidia驱动

  1. 安装nvidia驱动报错 unable to find the kernel source tree for the currently running kernel

问题现象:

执行 python install.py install nvidia 报错如下图 accd80f43c4770145154c8a08146c2f2.png

解决方案:

  1. 安装与内核版本对应的kernel-devel ,可在线安装:
yum install "kernel-devel-uname-r == $(uname -r)"

2)安装的时候在安装命令后面加上内核文件所在目录:

python install.py in nvidia --kernel-source-path=/usr/src/kernels/内核文件目录
  1. 如果在线安装找不到包,可以访问 http://rpm.pbone.net/ 通过关键词搜索,选择与 uname -r返回的内核版本一致的rpm包进行下载,安装方式
# 假如 uname -r 返回 3.10.0-1160.59.1.el7.x86_64
# 可下载对应的rpm包 kernel-devel-3.10.0-1160.59.1.el7.x86_64.rpm 进行安装
yum -y install kernel-devel-3.10.0-1160.59.1.el7.x86_64.rpm
# 重新安装nvidia驱动
python install.py in nvidia --kernel-source-path=/usr/src/kernels/3.10.0-1160.59.1.el7.x86_64

2.出现ERROR: The Nouveau kernel driver is currently in use by your system

安装nvidia的过程中需要禁用nouveau,这个步骤需要重启才能生效。如果安装脚本执行完之后,最后的输出如下: 则需要重启机器。然后重新执行安装脚本即可。

  1. nvidia-docker2 安装失败

如果当前服务器已经安装>17.06.2 版本的docker, 通过python2 install.py inallpython2 install.py in nvidia 安装nvidia-docker2 的话 一般会遇到与现有docker版本冲突的问题。

解决方案:

如果服务器可以联网的话,可以yum来在线安装

yum install -y nvidia-docker2

如果yum安装 nvidia-docker2 返回 no package nvidia-docker2 available,请使用如下方式解决:

distribution=$(source /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

yum clean expire-cache 
yum install -y nvidia-docker2
systemctl restart docker

(四)安装人脸服务

  1. 安装过程中漏装人脸数据库服务

    人脸数据库服务一键安装部署请参考:安装部署方案 中单机部署-部署数据库服务。

  2. 报错 face-server 安装失败,请尝试执行 cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh

问题现象:

执行python install.py inall 后报错 face-server 安装失败,请尝试执行 cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh

解决方案:

请复制该命令手工执行,查看命令返回结果

cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh

1)如果返回数据库连接失败

# 重新安装数据库
ps -ef | grep mysql  # 找到对应的数据库进程kill 掉,或者pkill -u idl-face
userdel -r idl-face # 删除用户及家目录
cd original/package/Applications/face-server/project-conf/ && bash mysql_start.sh # 重新执行安装脚本  
iptables -I INPUT -p tcp --dport 5535 -j ACCEPT   #(该步骤在部署mysql时有要求用户手动执行,避免遗漏,再次执行一遍)
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh
  1. 如果返回报错:“can not find docker image :300478125c1e, please check docker images”
# 手动load 人脸镜像
docker load -i /home/baidu/work/face-server/docker.tar
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh

3)如果返回报错:“can not find nvidia-smi”

# 一般是nvidia安装有问题,可执行重新安装
python install.py rm nvidia && python install in nvidia
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh

4)如果返回报错:“docker: error response from daemon: network easypack not found“

# 手动创建network,名称为easypack
docker network create --driver bridge easypack
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/  && bash multi_docker_start.sh
  1. "人脸应用部署后,face-service-0-0容器状态为Created"

问题现象:

执行 docker ps -a 发现 face-service-0-0 容器状态为created

解决方案:

可以执行 docker inspect ${人脸容器名} 进一步查看顶部报错信息,如 返回 “network easypack not found”,可执行

docker network create --driver bridge easypack
docker restart face-service-0-0

多机部署问题

私有化多机部署出现问题请提交工单联系百度人员咨询解决。

文件下载问题

md5值校验失败

将部署包里refs.txt文件中下载失败的文件对应的md5改成-
再次执行bash download.sh命令即可

上一篇
鉴权失败问题
下一篇
接口调用问题