uwsgi 配置为systemctl服务

uwsgi 配置为systemctl服务

在阿里云上下载了个镜像,看到可以使用systemctl控制uwsgi,就把配置复制过来,移到Ubuntu上

1、在/usr/lib/systemd/下新建system文件夹

mkdir /usr/lib/systemd/system

2、/usr/lib/systemd/system/路径下,新建uwsgi.service文件,以下是文件内容

[Unit]
Description=uWSGI Emperor Service
After=syslog.target

[Service]
EnvironmentFile=-/etc/sysconfig/uwsgi
ExecStartPre=/bin/mkdir -p /run/uwsgi               # 在/run/下新建新建uwsgi文件夹,后面的uwsgi.pid文件会放在这里

# 没有uwsgi用户和用户组的情况下,需要通过uesradd和groupadd添加
ExecStartPre=/bin/chown uwsgi:uwsgi /run/uwsgi      # 修改文件夹的权限
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi.ini       # 启动uwsgi
ExecReload=/bin/kill -HUP $MAINPID                  # 服务要求重新载入配置所需的命令行
KillSignal=SIGINT                                   # 通过该信号杀死所有服务进程
Restart=always
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

3、在/etc/下新建uwsgi.ini文件

[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
stats = /run/uwsgi/stats.sock
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid

4、启动service服务

root@xxx:/usr/lib/systemd/system# systemctl enable uwsgi.service

一切顺利的话,uwsgi服务已经正常启动了

添加用户配置文件

5、在/etc/uwsgi.d/下添加用户的uwsgi应用配置文件,下面是我的一个例子

[uwsgi]
plugins       = python
master        = true
wsgi-file     = /data/wwwroot/dj_project/dj_project/wsgi.py
home          = /data/wwwroot/venv
chdir         = /data/wwwroot/dj_project
socket        = /data/wwwroot/dj_project/script/wst.sock
buffer-size   = 8192
enable-threads= true
close-on-exec = true
vacuum        = true
chmod-socket  = 777
processes     = 2
daemonize     = /data/wwwroot/dj_project/script/wst.log

6、设置配置文件的用户组权限

没有uwsgi用户和用户组的情况下,需要通过uesradd和groupadd添加

root@xxx:/# chown uwsgi:uwsgi -R /etc/uwsgi.d/

7、直接重启uwsgi
可以通过status查看uwsgi的运行状态,下面显示运行成功

root@xxx:/# systemctl restart uwsgi
root@xxx:/# systemctl status uwsgi
● uwsgi.service - uWSGI Emperor Service
   Loaded: loaded (/usr/lib/systemd/system/uwsgi.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-31 00:00:45 CST; 2 days ago
 Main PID: 8992 (uwsgi)
   Status: "The Emperor is governing 1 vassals"
   CGroup: /system.slice/uwsgi.service
           ├─8992 /usr/bin/uwsgi --ini /etc/uwsgi.ini
           ├─8995 /usr/bin/uwsgi --ini /etc/uwsgi.ini
           ├─8996 /usr/bin/uwsgi-core --ini dj_project.ini
           ├─8998 /usr/bin/uwsgi-core --ini dj_project.ini
           └─8999 /usr/bin/uwsgi-core --ini dj_project.ini

Jul 31 00:00:45 iZuf6heigehruk45w3nl65Z systemd[1]: Started uWSGI Emperor Service.
Jul 31 00:00:45 iZuf6heigehruk45w3nl65Z uwsgi[8992]: *** starting uWSGI Emperor ***

参考资料

http://www.jinbuguo.com/systemd/systemd.service.html systemctl 参考手册

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章