最近用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: 123456 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: 123456 90 10
123456 告诉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。
daemon_start()和daemon_stop()内都是标准的shell语句。用python启动tornado的web服务器已经kill掉python的进程。
chkconfig --add ecs_tornado
添加(注册)服务
chkconfig ecs_tornado on
启动服务
完事收工。