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 參考手冊