uWSGI 使用 systemd 自动启动

uWSGI autostart with systemd

所以我试图让 uWSGI 和 nginx 一起工作,并希望将以下命令行设置为自动执行并启动我的 uWSGI 后台服务:

uwsgi --master --processes 4 --die-on-term --uid uwsgi --gid nginx --socket /tmp/uwsgi.sock --chmod-socket --stats :1717 --no-site --vhost --logto /var/log/uwsgi.log

使用 systemd 时,我认为我唯一需要做的就是使用 ExecStart= 并启动该命令。但是由于 systemd 需要绝对路径,我查看了默认的 uWSGI 启动脚本,发现 /usr/bin/uwsgiusr/sbin/uwsgi 将是默认的启动路径。

所以我的最终执行命令看起来像这样:

ExecStart=/usr/bin/uwsgi --master --processes 4 --die-on-term --uid uwsgi --gid nginx --socket /tmp/uwsgi.sock --chmod-socket --stats :1717 --no-site --vhost --logto /var/log/uwsgi.log

问题:当 运行 时,它无法在 virtualenv 中为 运行 的所有内容找到选项 --no-site。 在命令行中使用 uwsgi 启动时,这不是问题。 但即使直接从命令行启动 /usr/bin/uwsgi,我也会收到此错误。

所以对我来说 uwsgi 命令似乎不仅仅是直接 运行 /usr/bin/uwsgi。但我不确定我需要做什么才能让它正常工作。

如果能得到任何帮助,我将不胜感激。

所以我用whereis uwsgi再次查看了每个有uwsgi实例的文件夹,发现默认的uwsgi应用程序似乎在/usr/local/uwsgi.

您是否尝试过将您的 uwsgi 配置放在一个单独的文件中?

ExecStart=/usr/bin/uwsgi --ini /path/to/your/app/uwsgi.ini

您可以阅读有关 uwsgi ini 配置的更多信息here