无法启动 gunicorn.service:未找到单元 gunicorn.service。Ubunto 18.04

无法启动 gunicorn.service:未找到单元 gunicorn.service。Ubunto 18.04

我正在关注如何在 Ubuntu 18.04 上安装 Django 和 Postgres、Nginx 和 Gunicorn 指南。

我已经创建了以下文件 .socket

sudo nano /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

我已经创建了以下文件 .service

sudo nano /etc/systemd/system/gunicorn.service

原始 RECOMENDED_FORMATTING-s 在指导

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


[Service]
User=sammyRECOMENDED_FORMATTING
Group=www-data
WorkingDirectory=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING
ExecStart=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING/myprojectenvRECOMENDED_FORMATTING/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          myprojectRECOMENDED_FORMATTING.wsgi:application

[Install]
WantedBy=multi-user.target

我如何格式化我自己的版本我的虚拟环境位于服务器上的项目文件夹之外

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

[Service]
User=SERVER_USER
Group=www-data
WorkingDirectory=/home/SERVER_USER/MAIN_PROJECT_FOLDER
ExecStart=/home/SERVER_USER/ven/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/home/SERVER_USER/MAIN_PROJECT_FOLDER/MAINAPPLICATION_FOLDER.sock \
          MAINAPPLICATION_FOLDER.wsgi:application

[Install]
WantedBy=multi-user.target

我也尝试过按照最初的建议保留这些

--bind unix:/run/gunicorn.sock \

然后我尝试执行以下代码

sudo systemctl start gunicorn

错误消息 1

Failed to start gunicorn.service: Unit gunicorn.service not found.

我也尝试过 2

sudo systemctl start gunicorn.socket

错误消息 2

Failed to start gunicorn.socket: Unit gunicorn.socket is not loaded properly: Invalid argument.
See system logs and 'systemctl status gunicorn.socket' for details.

为了解决这个问题,我尝试过

答案1

您的服务中有 [Install] 部分,这意味着您需要运行命令sudo systemctl enable gunicorn.service在系统启动时启动该服务。

一旦运行该命令,就会在目录中创建指向该文件的符号链接/etc/systemd/system/multi-user.target.wants/

请注意,您还需要创建名为的套接字文件gunicorn.socket并启用它。启用后,您可以通过运行命令来激活套接字sudo systemctl start gunicorn.socket。您不需要运行该服务,因为 systemd 会找出依赖关系。

您可以使用 检查服务状态systemctl status gunicorn.service

答案2

就我而言,服务器没有创建该gunicorn.socket文件。所以,我必须自己创建该文件并启用它。

转到:/etc/systemd/system并通过命令检查所有可用的文件和目录ls

如果该文件不存在,请尝试通过以下方式从第一个文件重新创建:sudo nano ~/etc/systemd/system/gunicorn.socket, 或sudo nano gunicorn.socket

然后先通过以下方式启用它:sudo systemctl enable gunicorn.socket,启用后执行:sudo systemctl start gunicorn.socket

如果一切正常,您将看到文件的状态gunicorn.socket为活动状态,运行命令后sudo systemctl status gunicorn.socket您将看到:

     gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor prese>
     Active: active (listening) since Fri 2020-06-26 17:53:10 UTC; 14s ago
   Triggers: ● gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
      Tasks: 0 (limit: 1137)
     Memory: 0B
     CGroup: /system.slice/gunicorn.socket

相关内容