使用 supervisord 设置应用开机启动

以前一直是用 systemd 设置开机启动的服务,因为它不需要装额外的软件,方便。

但是最近遇到个问题,就是我还需要在 OS X 上设置 Jenkins Agent 的开机自启,为此专门学习了下 launchctl 的使用,最后还是功亏一篑,败在了环境变量设置这一步——不知道为啥,我在 /Library/LaunchDaemons/io.jenkinsagent.plist 里设置的 EnvironmentVariables 字段无法生效,搞了半天没找到问题。

今天才突然想起,为何不用 supervisord 呢?!关键这个还跨平台,一份配置稍微改改就可以同时用在 MacOS 和 Linux 上。

一、MacOS X 安装 supervisord

显然我不希望自己再写个 LaunchDaemons 的 plist 文件来把 supervisord 弄成开机自启。好在 homebrew 有提供傻瓜式方案,安装方式如下:

brew services  # homebrew 的 service 让我们脱离手工编写 plist 的“低级趣味”。
brew install supervisor  # 安装 supervisord
brew services start supervisor  # 借助 service 使 supervisor 开机启动

homebrew services 的详细使用方法可见 github- homebrew service

如需加速安装,可参考 homebrew 清华镜像源使用说明

安装启动后,可查看 supersivor 的配置文件 /usr/local/etc/supervisord.ini,如需添加自启动程序,可将配置文件添加到 /usr/local/etc/supervisor.d/ 中,该文件夹中的配置会被主配置文件 include.

详细的说明见后。

使用 supervisord

编写配置文件

注意:属性名称错误,不会给出任何提示!!!所以无法运行时,请仔细检查配置中的属性是否有拼写错误!

以 Jenkins-Agent 为例,编写 /usr/local/etc/supervisor.d/jenkins-agent.ini,内容如下:

[program:jenkins-agent]
command=/bin/bash /Users/jenkins/jenkins_home/connect.sh  ; 从 jenkins web 页面复制的连接命令
autostart=true
startsecs=5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart=true   ; 程序异常退出后自动重启
startretries=3     ; 启动失败自动重试次数,默认是 3
stopasgroup=true
redirect_stderr=true  ; 将 stderr 重定向到 stdout
stdout_logfile=/Users/jenkins/jenkins_home/jenkins-agent.log   ; 日志输入位置
stdout_logfile_maxbytes=1MB
environment=PATH="/Users/jenkins/Softwares/flutter/bin:/Users/jenkins/Softwares/jdk-11/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

启用配置

通过 supervisorctl 操作 supervisor:

  1. 连接 supervisor 后端:supervisorctl -c /usr/local/etc/supervisord.ini,注意必须指定启动 supervisor 时用的配置文件。
  2. 然后就可以通过 help 查看 supervisorctl 支持的命令了,常用的有 reload 重载配置,restart all 重启所有应用。

通过 start all 就可以启动配置好的应用了。

二、Linux 安装 supervisor

一般建议通过包管理器安装,好处是不用手写 systemd 配置,缺点是更新太慢。

sudo apt-get install supervisor  # 安装
sudo systemctl enable supervisor  # 启用开机启动
sudo systemctl start supervisor   # 现在启动

如果需要新版本的功能,可以通过 pip 安装最新版,但是需要手动编写 systemd 配置(或者先用 apt-get 装老版本,把 systemd 配置拷下来)。详见 installing supervisor

使用方法

和 MacOS X 有如下区别:

  1. 默认的配置文件路径不同,主配置文件是 /etc/supervisor/supervisord.conf,自定义配置路径 /etc/supervisor/conf.d/*.conf
  2. 注意 Linux 中配置的后缀是 .conf,而在 OS X 中默认使用 .ini

原文地址:https://www.cnblogs.com/kirito-c/p/12170126.html

时间: 2024-08-04 21:17:14

使用 supervisord 设置应用开机启动的相关文章

centos设置服务开机启动

Linux CentOS设置服务开机启动的方法 by 天涯 · 2013/07/26 CentOS设置服务开机启动的两种方法 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的.就算 手动执行 /etc/init.d/mysqld start 启动了服务,只要服务器重启后,系统仍然不会自动启动服务. 在这个时候,我们就需要在安装后做个设置,让系统自动启动这些服务,

linux中mysql如何设置为开机启动

开机启动命令 chkconfig mysqld on 查询是否设置为开机启动命令 chkconfig --list mysqld 结果为 mysqld 0:关闭 1:关闭 2:启动 3:启动 4:启动 5:启动 6:关闭

Linux 设置mysql开机启动

linux开启启动的程序一般放在/etc/rc.d/init.d/里面,/etc/init.d/是其软连接 mysql设为linux服务 cp /usr/local/mysql5/share/mysql/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 2345 mysqld on chown mysql:mysql -R /usr/local/mysql5/ service mysqld start

CentOS设置服务开机启动的方法

CentOS设置服务开机启动的两种方法 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的.就算手动执行 /etc/init.d/mysqld start 启动了服务,只要服务器重启后,系统仍然不会自动启动服务. 在这个时候,我们就需要在安装后做个设置,让系统自动启动这些服务,避免不必要的损失和麻烦. 其实命令很简单的,使用chkconfig即可. [天涯PHP博

在Centos 中将zookeeper设置成开机启动

部署了Zookeeper之后,当需要重启机器时,开机后往往需要花一点时间对zookeeper集群进行启动,由于zookeeper没有主节点的概念,且一个节点的重启不会对集群造成什么影像,所以可以考虑把 zookeeper设置成开机启动,具体流程如下 准备工作 切换到/etc/rc.d/init.d/目录下 创建zookeeper文件:touch zookeeper 更新权限:chmod +x zookeeper 编辑 文件,在zookeeper里面输入如下内容 #!/bin/bash #chkc

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤

准备文件如下: 1.CentOS-6.4-x86_64-bin-DVD1.iso 2.jdk-7u67-linux-x64.rpm 3.apache-tomcat-7.0.55.tar.gz 安装步骤如下: 一.安装JDK [[email protected] /]# java -versionbash: java: command not found [[email protected] /]# rpm -ivh /soft/jdk-7u67-linux-x64.rpmPreparing...

源码安装apache后将其设置为开机启动

从网上下载apache的源码包,例如/usr/local/src/httpd-2.2.34.tar.gz,解压到目录/usr/local/src/httpd-2.2.34,编译并安装,假如安装到/usr/local/apache目录中,将其设置为开机启动,并且可以使用service启动和关闭. 1.找到httpd-2.2.34/build/rpm/httpd.init并移动:mv /usr/local/src/httpd-2.2.34/build/rpm/httpd.init /etc/rc.d

win7下exe文件设置为开机启动

如何将自己的exe程序设置为开机自启动 如何将自己的exe程序设置为开机自启动 将自己的exe程序设置为开机自启动话不多说,直接看 首先1:cmd—>regedit 其次找到下面的路径就可以:(以win10为例)计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\LenovoDisabled(这个是本机电脑的,各电脑不尽相同) 请看流程: 具体文件设置如下: 到这里差不多就结束了,重启下可以试试,彩蛋:相信大家也

Debian - 设置MYSQL开机启动

设置MYSQL 首先拷贝mysql.server到/etc/init.d目录下命名为mysql # cp /自己的安装目录/mysql/share/mysql/mysql.server /etc/init.d/mysql 然后进入/etc/rc2.d目录,这是debian默认的启动级别.建立连接指向/etc/init.d/mysql # cd /etc/rc2.d # ln -s /etc/init.d/mysql S20mysql 重新启动系统后,mysql就自动启动了. 也就是说, 删除/e