安装使用supervisor来启动服务
supervisor 使用方法
supervisor(官网)是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,
若服务挂了可以让它们自动重启。当然也可以用来实现golang的守护进程.
学完这篇教程后,我们希望达到如下的目标:
- 服务挂掉后,自动重启
- 可执行文件或者配置文件修改后,服务自动重启
让我们开始吧!
1.supervisor安装
1.以上tar包任意目录解压
# ubuntu安装:
sudo apt-get install supervisor
# centos安装
yum install -y supervisor
# 基于python库安装
pip2 install supervisor
easy_install supervisor
安装好之后,不出问题的话supervisor服务已经启动完成。
查看进程是否启动成功
pgrep supervisord
出现进程号之后表面成功启动
手动启动进程
如果上一步没发现进程号,那么可以执行下面的命令
supervisord -c /etc/supervisor/supervisord.conf
2.supervisor配置
打开配置文件supervisord.conf
# 配置文件一般在如下位置:
> vim /etc/supervisor/supervisord.conf
我们可以看到文件的最后有这么一句话
[include]
files = /etc/supervisor/conf.d/*.conf
也就是说配置文件会引入/etc/supervisor/conf.d/目录下所有conf后缀的文件.
创建自定义的服务配置文件
所以我们可以在/etc/supervisor/conf.d/下建立文件ipfs.conf
注意: 日志路径不存在会启动失败! supervisor不会自己创建目录!
; 设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名
[program:ipfs]
directory = /usr/local/bin ; 程序的启动目录
command=/usr/local/bin/ipfs daemon ; 启动命令 最好绝对路径
autostart = true ; 在 supervisord 启动的时候也自动启动
numprocs=1 ; 默认为1
process_name=%(program_name)s ; 默认为 %(program_name)s,即 [program:x] 中的 x
user=root ; 使用 root 用户来启动该进程
autorestart=true ; 程序崩溃时自动重启,重启次数是有限制的,默认为3次
redirect_stderr=true ; 重定向输出的日志
stdout_logfile = /var/log/supervisord/tornado_server.log
loglevel=info
配置文件中的注释以
;打头
保存配置文件,重启
> supervisorctl reload
3.supervisor常用命令
supervisor有supervisord和supervisorctl两种命令类型:
- supervisord是服务相关的命令
- supervisorctl是客户端相关的命令
supervisor涉及的状态主要有
- running:进程处于运行状态
- starting:Supervisor 收到启动请求后,进程处于正在启动过程中
- stopped:进程处于关闭状态
- stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
- backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
- fatal:进程没有正常启动
- exited:进程从 running 状态退出
常用的命令如下:
#关闭所有任务
supervisorctl shutdown
# 启动某个进程
supervisorctl start programxxx
# 重启某个进程
supervisorctl restart programxxx
# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update
注意:显式用stop停止掉的进程,用reload或者update都不会自动重启
4.自动侦测文件变化并重启服务
4.可能遇到的错误
无权限错误
error: <class 'socket.error'>, [Errno 2] No such file or directory:
file: /usr/lib/python2.7/socket.py line: 228
解决方案: 重启服务
> supervisord -c /etc/supervisor/supervisord.conf
Error: The directory named as part of the path /var/log/supervisor/archive/info.log does not exist. in section 'program:archive' (file: '/etc/supervisor/conf.d/archive.conf')
For help, use /usr/bin/supervisord -h
或者可能是supervisor服务未启动
> service supervisor start
配置命令错误
参考链接: supervisorctl always reports error: ERROR (no such file)
> sudo supervisorctl start archive
archive: ERROR (no such file)
执行下面命令发现报错
> sudo supervisorctl status
archive FATAL can't find command './archive'
说明supervisor无法解析该指令
解决方法:配置文件执行指令补全
[program:archive]
# 改变前:
command=archive
# 改变后:
command=/opt/deploy/archive/archive
...
安装使用supervisor来启动服务的更多相关文章
- 安装arcgis10.5不能启动服务的解决方案转
柚子的二分口粮地 来自:http://www.cnblogs.com/youzi-xuchongyou/p/7218422.html 安装arcgis10.5不能启动服务的解决方案 最近由于公司需要, ...
- win764位下安装mysql-5.6.22-x64启动服务报 系统错误 1067的解决办法
本人电脑win7,64位,需要安装mysql服务器.版本:mysql-5.6.22-x64.安装完成后,在服务里面并没有mysql.于是在百度上搜了下,好多信息,最后把解决方法自己总结下. 在${pr ...
- Windows7 安装完成mysql dos启动服务出现服务名称无效
错误提示: WIN 7 cmd命令行下,net start mysql,出现 服务名无效提示: 错误分析: Mysql服务未安装 解决方案:在mysql 安装目录下bin文件夹 安装Shift+鼠 ...
- MySQL——安装、配置、启动服务、
1.环境变量配置 将启动连接,加入环境变量中. mysqld :启动服务端 msysql -u 用户名 -p 密码 : 启动客户端 2.windows服务:一直在运行中 E:\wupeiqi\mys ...
- 6核 CPU导致SQL2005安装时出“无法启动服务”错
周一新买的IBM3650M3的服务器上安装SQL server2005 安装到一半时,报"提示:SQL Server 服务无法启动."错. 换了几个操作系统版本和换了几个版本的sq ...
- twindows下omcat8安装后,不能启动服务
原因可能是cmd安装时,不是以管理员的身份运行cmd命令的.解决办法,以管理员身份运行cmd,进入tomcat安装/解压的bin目录下,先执行 service.bat remove 命令卸载服务,之后 ...
- 安装arcgis10.5不能启动服务的解决方案
最近由于公司需要,要装arcgis10.5,但是装这软件就费了好久的功夫.以前用的10.2,安装比较简单,但是10.5看起来就不一样了,下载完成后就会发现多了一个破解文件.按照教程一步一步安装的,但是 ...
- CentOS7安装mysql后无法启动服务,提示Unit not found
首发日期: 2018-01-30 现象: 在centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not found [明明已经安装了, ...
- CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock
转载自:http://www.linuxidc.com/Linux/2016-03/129396.htm 今天在Linux主机(CentOS 7)安装(yum install方式)Mariadb(即开 ...
随机推荐
- Linux配置临时IP和网关命令
配置IP以及子网掩码: ifconfig eth0 192.168.1.33 netmask 255.255.255.0 up 设置网关: route add default gw 192.168 ...
- Hadoop学习---CentOS中hadoop伪分布式集群安装
注意:此次搭建是在ssh无密码配置.jdk环境已经配置好的情况下进行的 可以参考: Hadoop完全分布式安装教程 CentOS环境下搭建hadoop伪分布式集群 1.更改主机名 执行命令:vi / ...
- Yii正则验证
required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...
- 从0开始学CentOS7(1)
首先,先来几句简介吧.. java开发一枚,总觉得自己的技术提升缓慢... 最近看到同事有在论坛发发自己的心得什么的...我脑中晃出的灵光就是:好记性不如烂笔头,试试吧~ 好了,正式开始了..cent ...
- 用SQL实现的BASE64加密及解密函数(SQL2005以上有效)
CREATE FUNCTION [dbo].[f_base64_encode] (@bin varbinary(max)) returns varchar(max) as begin return c ...
- webpack的正确安装方式
webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...
- Windows 下制作CentOS7安装U盘
本文属于另类的U盘制作方法(更多U盘安装见U盘安装CentOS ),如何安装CentOS,请参考<安装指南> 以下列出了,完整的制作步骤: 1.下载安装镜像 选择一个合适的镜像网站,比如网 ...
- Vue教程:组件Component详解(六)
一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功 ...
- Web—02-轻松理解css
CSS基本语法以及页面引用 CSS基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个 ...
- 【js】深拷贝和浅拷贝区别,以及实现深拷贝的方式
一.区别:简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝. 此篇文章中也会简单阐述到栈堆,基本数据类型与引用数据类型,因为这 ...