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 参考手册