Centos下用upstart管理自己的服务程序

Upstart是Ubuntu用来进行服务进程管理的服务,本文介绍如何利用upstart来通过Centos操作系统管理我们自己开发的应用程序。

什么时候要管理我们的应用程序?当我们开发出服务类的应用程序,比如后台服务器程序,需要长时间不间断运行的程序,当我们需要关闭时通常需要查看一下线程号再kill掉(当然你也可以写一个脚本做这件事),还需要检查程序什么时候崩溃了及时重启,当部署很多机器时非常麻烦。这时用upstart管理程序,可以用start stop启动、关闭服务,同时可以监控你的服务,再他出现意外退出时重新启动。

下面我就开始一步一步开始用upstart管理我们的程序吧!

1、安装upstart

用 yum install upstart安装upstart

2、添加配置文件

安装好upstart后,需要为每一个你想要通过upstart管理的程序添加一个配置文件。这些文件放在/etc/init目录下,文件名为你这个服务的名称,后缀名为.conf。如:myServerName.conf。

3、最简单的配置文件内容:


 author "lihanlin"
 description "test"

 start on startup
 stop on shutdown
 respawn
 console output

 exec /lihanlin/test/testServer

第一行是指定作者,第二行是程序的描述 这两行不起任何作用,只是说明

第四行的start on是配置发生某些事件时启动程序,这里意思是开机时启动程序。还可以用如下配置,在文件系统跟网络正常时启动程序

start on filesystem and net-device-up IFACE=lo

第五行的stop on是配置发生某些事件时关闭程序,这里的意思是关机时候关闭程序。

第六行respawn是程序意外关闭时自动重启程序。还可以用respawn limit: 命令,设置服务异常停止后重启次数及间隔时间。比如:

respawn limit 10 5

第七行console是配置输入输出。你可以改变设置指定工作将信息输出到哪里,从哪里获得输入。console字段你可以指定下列参数之一:output(从 /dev/console获得输入输出);owner(输出和Control-C发送给主进程) ;none(1.4版本之前的默认参数,输入输出指定到/dev/null);log(1.4版本级以后的默认参数,版本过低时没有此参数。将输出写到log文件中,该文件默认放在/var/log/upstart/中,可以通过命令行参数–logdir 设置log文件夹)

第九行是最关键的,exec参数指定了主程序执行的命令,就是你要监控的程序了。如果不是二进制文件,还可以是如下形式:(例如node程序)

exec /usr/bin/node /lihanlin/server.js

4、启动关闭程序:

你的服务名字是配置文件(不包括后缀名)名字

启动服务是initctl start myServerName(或者start myServerName)

关闭服务是initctl start myServerName(或者stop myServerName)

查询服务状态是initctl status myServerName(或者stop myServerName)

5、带脚本的配置文件:

假设我的这个/mnt/kvm/test/testServer 服务需要相对路径下的test.so库文件,那么这个时候用上面的配置文件就不能正常的启动服务了,因为相对路径找不到这个库文件。再或者需要做一写脚本处理等等,就需要再执行主程序时运行一下脚本。为了解决这个问题就需要用下面这种配置:

author "lihanlin"
description "counttest"
 
start on filesystem and net-device-up IFACE=lo
stop on shutdown
respawn
console log
 
script
   cd /lihanlin/test
   exec ./testServer
end script

这里script – end script中间编写了一些脚本,是主运行脚本。进入到/lihanlin/test文件夹里再启动服务,就能找到相对路径下的库文件了。

除了主运行脚本,还有:

pre-start: 脚本块,在主运行脚本之前执行的脚本
post-start: 脚本块,在主运行脚本之后,running状态之前
pre-stop: 脚本块,在执行stop之前
post-stop: 脚本块,在主运行脚本被杀死之后

这里只介绍了最简单的管理程序的方法,upstart还有很多功能,还想更加细致的学习的同学可以查看官方文档进行学习:

http://upstart.ubuntu.com/cookbook/

Tags: