当以 sudo 用户身份设置运行 nginx、gunicorn、django 的新 Ubuntu 15.10 x64 服务器时。运行时收到一条错误消息service gunicorn start
(以 root 身份运行,是的,这是个坏主意):
Failed to start gunicorn.service:
Unit gunicorn.service failed to load: No such file or directory.
从活动的虚拟环境我可以使用以下命令启动 gunicorn:
任何关于如何解决这个问题的想法都将不胜感激,因为我已经尝试了各种网络搜索中的很多建议,这些建议提到了与此类似的问题,但都没有成功。
My gunicorn file is at `/etc/init/gunicorn.conf` and is configured as follows:
description "Gunicorn application server handling myproject"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid myuser
setgid www-data
chdir /home/myuser/myproject
exec myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/myproject/myproject.sock myproject.wsgi:application
这个问题与这里,但我没有权限发表评论,而且用户似乎已经找到了 systemd 的答案。最初的问题源于以下问题指导在 Ubuntu 15.10 上。我尝试检查该页面上的评论部分,使用我的 google fu 进行搜索,然后各种网站都到达了这里。
对于刚接触 Ubuntu 的人来说,非常感激能够获得简化的帮助。
答案1
实际情况是,您在需要使用 Systemd 时却尝试使用 Upstart。因此,您需要使用 Systemd 配置,而不是 Upstart。
取自http://docs.gunicorn.org/en/stable/deploy.html
系统化
在 Linux 系统上开始变得常见的工具是 Systemd。以下是用于在 systemd 中设置 Gunicorn 启动的配置文件以及 Gunicorn 将监听的接口。套接字将由 systemd 管理:
/lib/systemd/system/gunicorn.service:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
PIDFile=/run/gunicorn/pid
User=someuser
Group=someuser
WorkingDirectory=/home/someuser
ExecStart=/home/someuser/gunicorn/bin/gunicorn --pid /run/gunicorn/pid test:app
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
gunicorn.套接字:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn/socket
ListenStream=0.0.0.0:9000
ListenStream=[::]:8000
[Install]
WantedBy=sockets.target
tmpfiles.d/gunicorn.conf:
d /run/gunicorn 0755 someuser someuser -
运行 curl 之后http://本地主机:9000/此时 Gunicorn 应该启动了,你应该在日志中看到类似这样的内容:
2013-02-19 23:48:19 [31436] [DEBUG] 套接字激活套接字:unix:/run/gunicorn/socket,http://0.0.0.0:9000,http://[::]:8000