无法启动 gunicorn.service:单元未正确加载:错误消息

无法启动 gunicorn.service:单元未正确加载:错误消息

我在配置 gunicorn 时遇到了困难。到目前为止,我已经将我的 django 代码拉到服务器上,为 python3.6 创建了一个虚拟环境,安装了 django gunicorn psycop2,使用 pip3,一切正常。

我可以运行 django 开发服务器并查看我的未样式化站点,并且已通过管理站点成功发布到数据库,因此一切正常。然后我直接使用以下命令启动它:

gunicorn django_version.wsgi:application --bind 10.88.58.95:80

并再次能够看到我的未设置样式的网站。我还尝试过:

/srv/pcc_django/django_env/bin/gunicorn --workers 3 --bind unix:/srv/pcc_django/django_version/django_version.sock django_version.wsgi:application

并且一切开始都没有错误。所以我的下一步是编写一个 .service 文件:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=user
Group=nginx
WorkingDirectory=/srv/pcc_django
ExecStart=/srv/pcc_django/django_env/bin/gunicorn --workers 3 --bind unix:/srv/pcc_django/django_version/django_version.sock django_version.wsgi:application

[Install]
WantedBy=multi-user.target

并尝试:

systemctl start gunicorn.service

我收到上述错误消息,它提示我执行以下操作:

systemctl status gunicorn.service

还有以下信息:

● gunicorn.service - gunicorn daemon
   Loaded: error (Reason: Bad message)
   Active: inactive (dead) since Thu 2019-10-17 08:39:02 UTC; 3h 16min ago
 Main PID: 29080 (code=exited, status=0/SUCCESS)

Oct 16 16:24:08 pcc-home-page.novalocal gunicorn[29080]: [2019-10-16 16:24:08 +0000] [29085] [INFO] Booting worker with pid: 29085
Oct 16 16:24:08 pcc-home-page.novalocal gunicorn[29080]: [2019-10-16 16:24:08 +0000] [29086] [INFO] Booting worker with pid: 29086
Oct 17 08:39:02 pcc-home-page.novalocal systemd[1]: Stopping gunicorn daemon...
Oct 17 08:39:02 pcc-home-page.novalocal gunicorn[29080]: [2019-10-17 08:39:02 +0000] [29084] [INFO] Worker exiting (pid: 29084)
Oct 17 08:39:02 pcc-home-page.novalocal gunicorn[29080]: [2019-10-17 08:39:02 +0000] [29080] [INFO] Handling signal: term
Oct 17 08:39:02 pcc-home-page.novalocal gunicorn[29080]: [2019-10-17 08:39:02 +0000] [29085] [INFO] Worker exiting (pid: 29085)
Oct 17 08:39:02 pcc-home-page.novalocal gunicorn[29080]: [2019-10-17 08:39:02 +0000] [29086] [INFO] Worker exiting (pid: 29086)
Oct 17 08:39:02 pcc-home-page.novalocal gunicorn[29080]: [2019-10-17 08:39:02 +0000] [29080] [INFO] Shutting down: Master
Oct 17 08:39:02 pcc-home-page.novalocal systemd[1]: Stopped gunicorn daemon.
Oct 17 08:39:14 pcc-home-page.novalocal systemd[1]: [/etc/systemd/system/gunicorn.service:12] Missing '='.

但有些奇怪的事情发生了,因为如果我这样做:

date +%H:%M:%S.%N

我得到以下时间戳:

11.57.13.124995238

所以我不确定此消息是否与 gunicorn 服务无法正确启动有关。我错过了什么导致 gunicorn 无法作为服务启动?

答案1

这里的问题是我没有 gunicorn.socket 文件,而这是服务文件中必需的。将以下文件添加到与服务文件相同的文件夹中:

/etc/systemd/system/

gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=multi-user.target

修复了问题的第一部分,然后更正了 .service 文件中的 .sock 文件位置(原始帖子上方),最后我还在服务文件的顶部添加了一个 shebang。更改位于 [Service] 部分顶部的第 1 行和第 11 行中间:

#!/bin/sh    

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=user
Group=nginx
WorkingDirectory=/srv/pcc_django
ExecStart=/srv/pcc_django/django_env/bin/gunicorn --workers 3 --bind unix:/run/gunicorn.sock django_version.wsgi:application

[Install]
WantedBy=multi-user.target

还要确保 .sock 文件的命名一致,我将其命名为“gunicorn.socket”,因此在路径中它被称为“gunicorn.sock”,在大多数教程中,它们将其命名为:

project_name.sock

并将其放在项目根文件夹中,还有人提到将其与代码放在一起存在安全问题,我发现与文件所在位置相比,知道文件的名称会让人感到困惑。因此,将其命名为 gunicorn.socket 对我来说更有意义,而且在 CLI 上很容易看到,因为它不会与文件路径混淆。

相关内容