python3 tornado 自启动服务

最近用python3的tornado框架写了一个简单的服务。但是发现python本身部署的时候很不方便(好吧也许是我菜)。

tornado本身自带了web服务,所以只要直接执行脚本就能运行,但是感觉管理起来并不方便所以自己写了一个服务用systemctl来管理,这样可以开机自动启动。

我这里使用的是python3。自己记录一下简单的部署过程:

先在/etc/init.d/目录下新建文件

vi /etc/init.d/ecs_tornado

然后附上执行权限

chmod 755 /etc/init.d/ecs_tornado

文件内容:


#!/bin/sh
# chkconfig: 2345 90 10
# Server for AliYun Create ECS

daemon_start() {
    cd /aliECS_tornado
    /usr/local/bin/python3 /aliECS_tornado/server.py &
    echo "Server is running"
}

daemon_stop() {
    ps -ef|grep '/usr/local/bin/python3 /aliECS_tornado/server.py'|grep -v grep|cut -c 9-15|xargs kill
    echo "Server is closed"
}

case "$1" in
  start)
    daemon_start
    ;;
  stop)
    daemon_stop
    ;;
  restart)
    daemon_stop
    daemon_start
    ;;
  *)
    echo "Usage: /etc/init.d/ecs_tornado {start|stop|restart}"
    exit 1
esac
exit 0

#!/bin/sh #shell脚本就是这样写。就是一个声明自己是什么代码。

  chkconfig: 2345 90 10

  2345 告诉chkconfig程序需要注册的程序在那个等级(一般写2345就够了) 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动

  90在/etc/rc.d/路径下的rc0.d-rc6.d目录下创建名字为 S90+文件名的文件连接(S90ecs_tornado),连接到/etc/rc.d/init.d目录下的的脚本。第一个字符是S,系统在启动的时候,就会添加一个start参数。

    10在/etc/rc.d/路径下的rc0.d目录下创建名字为 K10+文件名的文件连接(K10ecs_tornado)第一个字符为K,系统在关闭系统的时候,会运行添加一个stop。 需要用#号开头,因为这个是给chkconfig看的不是脚本需要执行的内容。

   daemon_start()和daemon_stop()内都是标准的shell函数语句。用python启动tornado的web服务器已经kill掉python的进程。 chkconfig --add ecs_tornado 添加(注册)服务 chkconfig ecs_tornado on 启动服务 完事收工。

posted @ 2018-01-23 14:31  colinshi  阅读(767)  评论(0编辑  收藏  举报