说明,由于我的是生产环境,没有外网,所以只能通过安装包来下载,有外网的比较简单,可以直接通过apt-get即可,或者pip、pip3这些直接命令安装即可。
一 安装步骤
1.1
先在windows桌面新建一个sss目录,用于存储安装包,方便统一将各个安装包移到生成环境。我是直接将下面三个工具setuptools、meld、supervisor先下载完到sss,在开始进行下面步骤的解压安装的。
1.2 安装setuptools工具。
注意:此工具不能太低版本,例如setuptools-40.1.0,这个版本只能是python2.4及以前才能用,否则在配置时会报错,我就遇到了这个问题,后面换setuptools-60.2.0高版本才解决了。
官网如下:
https://pypi.org/project/setuptools/#files
直接下载并保存在windows的sss目录。
tar -xvf setuptools-60.2.0.tar.gz
cd setuptools-60.2.0
python3 setup.py install
安装成功如图:
1.3 安装meld3-1.0.2
wget https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f/meld3-1.0.2.tar.gz#md5=3ccc78cd79cffd63a751ad7684c02c91
如果wget没反应,直接打开链接,然后就可以直接下载了。然后解压:
tar -zxvf meld3-1.0.2.tar.gz
cd meld3-1.0.2
sudo python setup.py install
#最后更新一下配置
ldconfig
注意sudo python setup.py install时可能会出现问题,原因是可能是你没有安装setuptools工具。
看到这里基本是安装meld3-1.0.2成功了。
1.3 安装supervisor-3.3.3
wget https://pypi.python.org/packages/31/7e/788fc6566211e77c395ea272058eb71299c65cc5e55b6214d479c6c2ec9a/supervisor-3.3.3.tar.gz#md5=0fe86dfec4e5c5d98324d24c4cf944bd
同理,如果wget没反应,直接打开链接,然后就可以直接下载了。然后解压:
tar -zxvf supervisor-3.3.3.tar.gz
cd supervisor-3.3.3
python setup.py install
#python3 setup.py install,python、python3两者好像并无区别,都可以试试
1.4 使用echo_supervisord_conf生成配置文件
#配置文件的目录可以自己指定的,我这里加多一层目录supervisor,大家也可以按照自己想要的目录层次
mkdir -p /etc/supervisor/
echo_supervisord_conf > /etc/supervisor/supervisord.conf
此时在/etc/supervisor/会生成一个配置文件。
注意:此步骤可能出现下列问题,意思是你的meld3-1.0.2没有安装或者版本低于0.6.5了,这是因为你安装setuptools失败,导致meld3-1.0.2没成功安装。解决方法是重新安装上面两个工具,确认安装成功。
1.5 开启supervisord服务并查看是否正常
supervisord -c /etc/supervisor/supervisord.conf
ps -fe | grep supervisord
成功如下:
在上面我们就安装好了Supervisor了。
二 添加进程到Supervisor测试
2.1 修改/etc/supervisor/supervisord.conf配置文件
最好在修改配置前先 kill 停掉原来的supervisor服务。
在上面我们生成了配置文件,下面为了方便统一管理配置,我们需要对其修改。
找到[include]下的files,将[include]前面的;与files前面的;都要去掉,否则会被注释掉的。然后修改成下图箭头的内容。
vim /etc/supervisor/supervisord.conf
然后supervisor默认会在/tmp生成pidfile、socket文件等内容,系统可能会定期删除/tmp的内容,所以为了避免系统的影响,我们将这些路径修改一下:
修改上面后,可以更新一下。
#如果关掉了supervisord 需要重启启动一下
#supervisord -c /etc/supervisor/supervisord.conf
supervisorctl update
如果报错的话:
#最好在修改配置前先停掉原来的supervisor服务,否则会开启多个supervisor,不过可以使用kill -9 进程 去停止。
#使用以下命令重启一下即可:
/usr/bin/python /usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf
#supervisord可能并非在/usr/local/bin/,也可能是在/usr/bin/,看你自己的安装位置。
#上面修改配置后,这个目录是没有的,所以最好创建一下。
mkdir -p /var/log/supervisor/
#此时再update应该没问题,如果再报一下日志文件不存在的错误,手动创建一下即可。
supervisorctl update
2.2. 添加自己项目的配置文件
因为上面我们是没有/etc/supervisor/conf.d这个目录的,所以需要创建。
mkdir -p /etc/supervisor/conf.d
vim /etc/supervisor/conf.d/自己的项目名.conf
然后添加下面的内容:
标注了数字的5处地方是必须要改成自己的项目名称和路径的,并且如果日志文件路径不存在的,需要自己先创建,否则下面开启服务时会报错。
# 1
[program:ptz-rtsp_url-hk]
# 2 程序在该路径下运行
directory=/home/runone/RoadGatewayServer/PTZ-RTSP_URL-HK/bin/
#运行用户root
user = root
# 3 运行
command=/home/runone/RoadGatewayServer/PTZ-RTSP_URL-HK/bin/ptz-rtsp_url-hk
#在supervisord 启动的时候也自动启动
autostart = true
#启动 1 秒后没有异常退出,就当作已经正常启动了
startsecs = 0
# 停止等待时间
stopwaitsecs=10
#程序异常退出后自动重启
autorestart = true
#启动失败自动重试次数,默认是 3
startretries = 100
# 4 日志文件若文件夹不存在需新建
stdout_logfile=/var/ptz-rtsp_url-hk_log/ptz-rtsp_url-hk.log
# 5 错误日志
stderr_logfile=/var/ptz-rtsp_url-hk_log/ptz-rtsp_url-hk_error.log
#设置环境变量
environment=LOG_DIR="/var/ptz-rtsp_url-hk_log"
最后更新一下supervisor即可。
supervisorctl update
2.3 开启自己的进程服务
supervisorctl start ptz-rtsp_url-hk
supervisorctl status
实际上在start前的update就已经自动帮你开启程序了,所以start再就会报错说已经开启。我们看状态确实已经开启程序了。
在这里,已经成功在局域网的状态下,安装好了Supervisor。
2.4 查看程序日志的打印信息
supervisorctl tail -f ptz-rtsp_url-hk
通过上面命令,你可以看到你自己日志文件的打印信息。
三 设置开机启动supervisor服务
#添加以下文件,ubuntu是/lib/systemd/system/路径,centos是/usr/lib/systemd/system/
vim /lib/systemd/system/supervisord.service
添加内容:
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
;PIDFile=/tmp/supervisord.pid
;需要与supervisord.cond里面的pid路径一样
pidfile=/var/run/supervisord.pid
;执行路径与其配置文件路径,这两者的路径都需要正确配置
ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
#先关闭supervisord服务
killall supervisord
或者
ps -ef | grep supervisord
kill -9 进程号
#更新服务配置。
sudo systemctl daemon-reload
#启动开机启动
systemctl enable supervisord
#开启supervisord服务
systemctl start supervisord
#查看服务状态
systemctl status supervisord
至此成功在离线状态下安装Supervisor。