我想用我的Django项目使用uwsgi
我测试usgi --ini uwsgi.ini
效果很好
而我想写进去systemd
控制它
面对错误
这是我的文件
/etc/systemd/system/mysite.service
[Unit]
Description=uWSGI for proj
After=syslog.target
[Service]
Restart=always
ExecStart=/usr/bin/uwsgi --ini /usr/share/nginx/ENV/proj/proj/uwsgi.ini
StandardError=syslog
KillSignal=SIGQUIT
Type=forking
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我第一次使用systemctl restart mysite.service
它效果很好,然后我使用systemctl stop mysite.service
然后重新启动systemctl restart mysite.service
但是停止后它无法重新启动
我收到错误:
proj.service - uWSGI for proj
Loaded: loaded (/usr/lib/systemd/system/proj.service; disabled)
Active: failed (Result: start-limit) since Fri 2015-11-13 13:40:35 CST; 887ms ago
Process: 4297 ExecStart=/usr/bin/uwsgi --ini /usr/share/nginx/ENV/proj/proj/uwsgi.ini (code=exited, status=0/SUCCESS)
Main PID: 4298 (code=exited, status=0/SUCCESS)
Nov 13 13:40:35 localhost.localdomain systemd[1]: proj.service …
Run Code Online (Sandbox Code Playgroud) 我想在后台运行一个进程而不在 shell 退出时杀死它,根据 Nohup 概念,以下命令应该可以工作,直到我手动杀死它:
nohup uwsgi --http :8008 --module crawled_data_center.wsgi > /dev/null &
Run Code Online (Sandbox Code Playgroud)
我使用 root 用户登录到 shell,但是在退出 shell 后,进程终止了。这看起来很奇怪,因为我nohup
在几个项目中使用了几次并且工作正常,但在这种情况下我很糟糕,有什么问题,我怎样才能在后台运行它而不在 shell 退出时杀死它?
更新:
我处理它:
$ nohup uwsgi --http :8008 --module crawled_data_center.wsgi > /dev/null &
$ disown -l
$ disown -h JOBID
Run Code Online (Sandbox Code Playgroud)
但我的问题是关于它怎么SIGHUP
可能杀死nohup
和&
?
以下是内容/etc/systemd/logind.conf
:
[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
Controllers=blkio cpu cpuacct cpuset devices freezer hugetlb memory perf_event net_cls net_prio
ResetControllers=
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes …
Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 Django 项目来与 uwsgi 和 nginx 一起运行,并且一切都按预期运行,只是当我重新启动时,uwsgi 将无法正确启动,直到在 fs 上重新创建 /run/ 文件夹。/run 映射到 'tmpfs',因此需要在每次启动时重新创建。
我有一个为 uwsgi 创建的 systemd 服务文件:
[Unit]
Description=uWSGI Module
After=syslog.target
[Service]
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
该/etc/uwsgi.ini
文件如下所示:
[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
stats = /run/uwsgi/stats.sock
socket = /run/uwsgi/uwsgi.sock
master = true
processes = 1
chdir = /path/to/our/django/app
module = icscada
max-requests = 100
daemonize = /var/log/uwsgi.log
Run Code Online (Sandbox Code Playgroud)
/run/uwsgi
在每次启动时重新创建文件夹的推荐方法是什么?