无法启动gunicorn.service:找不到单位gunicorn.service。乌本托 18.04

sog*_*ogu 1 18.04

我正在关注如何在 Ubuntu 18.04 上使用 Postgres、Nginx 和 Gunicorn 设置 Django 指南。

\n\n

我创建了以下文件 .socket

\n\n

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

\n\n
[Unit]\nDescription=gunicorn socket\n\n[Socket]\nListenStream=/run/gunicorn.sock\n\n[Install]\nWantedBy=sockets.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

我创建了以下文件 .service

\n\n

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

\n\n

指南中的原始 RECOMENDED_FORMATTING-s

\n\n
[Unit]\nDescription=gunicorn daemon\nRequires=gunicorn.socket\nAfter=network.target\n\n\n[Service]\nUser=sammyRECOMENDED_FORMATTING\nGroup=www-data\nWorkingDirectory=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING\nExecStart=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING/myprojectenvRECOMENDED_FORMATTING/bin/gunicorn \\\n          --access-logfile - \\\n          --workers 3 \\\n          --bind unix:/run/gunicorn.sock \\\n          myprojectRECOMENDED_FORMATTING.wsgi:application\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
[Unit]\nDescription=gunicorn daemon\nRequires=gunicorn.socket\nAfter=network.target\n\n[Service]\nUser=SERVER_USER\nGroup=www-data\nWorkingDirectory=/home/SERVER_USER/MAIN_PROJECT_FOLDER\nExecStart=/home/SERVER_USER/ven/bin/gunicorn \\\n          --access-logfile - \\\n          --workers 3 \\\n          --bind unix:/home/SERVER_USER/MAIN_PROJECT_FOLDER/MAINAPPLICATION_FOLDER.sock \\\n          MAINAPPLICATION_FOLDER.wsgi:application\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

比我尝试执行以下代码

\n\n

sudo systemctl start gunicorn

\n\n

错误信息1

\n\n

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

\n\n

我也尝试过 2

\n\n

sudo systemctl start gunicorn.socket

\n\n

错误信息2

\n\n
Failed to start gunicorn.socket: Unit gunicorn.socket is not loaded properly: Invalid argument.\nSee system logs and \'systemctl status gunicorn.socket\' for details.\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
    \n
  • /sf/ask/2849822321/这指向与我正在做的完全相同的指南,除了旧版本的linux 。
  • \n
  • 这不是相同的代码并且没有回答单位gunicorn.service无法加载:没有这样的文件或目录
  • \n
  • 运行:systemctl status gunicorn.socket结果:Warning: The unit file, source configuration file or drop-ins of gunicorn.socket changed on disk\n\xe2\x97\x8f gunicorn.socket - gunicorn daemon\nLoaded: error (Reason: Invalid argument)\nActive: inactive (dead)
  • \n
  • 运行:systemctl is-enabled gunicorn.socket结果:enabled
  • \n
  • 运行:systemctl is-enabled gunicorn.service结果:Failed to get unit file state for gunicorn.service: No such file or directory
  • \n
\n

小智 6

您的服务中有 [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