Skip to main content
 首页 » 编程设计

python之Ubuntu 16.04/Django之gunicorn之Worker 启动失败

2024年08月20日42daizhj

我正在 Digital Ocean Ubuntu 16.04 VPS 上部署 Django 项目。我使用了 Django 的一键安装,然后替换为我的项目。

问题是服务器返回 502 Error。

编辑: /home/django/realestate_scanner/ 目录中没有realestate_scanner.sock

你知道问题出在哪里吗?

gunicorn.service

[Unit] 
Description=Gunicorn daemon for Realestate Scanner 
Before=nginx.service 
After=network.target 
 
[Service] 
WorkingDirectory=/home/django/realestate_scanner 
ExecStart=/usr/bin/gunicorn --name=realestate_scanner --pythonpath=/home/django/realestate_scanner --bind unix:/home/django/gunicorn.socket --config /etc/gunicorn.d/gunicorn.py realestate_scanner.wsgi:application 
Restart=always 
SyslogIdentifier=gunicorn 
User=django 
Group=django 
 
 
[Install] 
WantedBy=multi-user.target 

日志:

> sudo journalctl -u gunicorn 

返回这个:

...skipping... 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     self.reap_workers() 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Service hold-off time over, scheduling restart. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Stopped Gunicorn daemon for Realestate Scanner. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Start request repeated too quickly. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Failed to start Gunicorn daemon for Realestate Scanner. 
...skipping... 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     self.reap_workers() 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Service hold-off time over, scheduling restart. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Stopped Gunicorn daemon for Realestate Scanner. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Start request repeated too quickly. 
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Failed to start Gunicorn daemon for Realestate Scanner. 

和

> sudo systemctl status gunicorn 

返回这个:

root@django-512mb-ams2-01-beta:/home/django/realestate_scanner# sudo systemctl status gunicorn 
● gunicorn.service - Gunicorn daemon for Realestate Scanner 
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled) 
   Active: active (running) since Wed 2017-07-19 06:36:04 UTC; 4ms ago 
 Main PID: 20517 ((gunicorn)) 
    Tasks: 0 
   Memory: 0B 
      CPU: 0 
   CGroup: /system.slice/gunicorn.service 
           └─20517 (gunicorn) 
 
Jul 19 06:36:04 django-512mb-ams2-01-beta systemd[1]: Started Gunicorn daemon for Realestate Scanner. 
root@django-512mb-ams2-01-beta:/home/django/realestate_scanner# sudo journalctl -u gunicorn 
-- Logs begin at Tue 2017-07-18 20:09:42 UTC, end at Wed 2017-07-19 06:36:50 UTC. -- 
Jul 18 20:10:00 django-512mb-ams2-01-beta systemd[1]: Started Gunicorn daemon for Django Project. 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Starting gunicorn 19.4.5 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Listening at: unix:/home/django/gunicorn.socket (2093) 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Using worker: gevent 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2101] [INFO] Booting worker with pid: 2101 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2102] [INFO] Booting worker with pid: 2102 
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2105] [INFO] Booting worker with pid: 2105 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:49 +0000] [2105] [ERROR] Error handling request / 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]: Traceback (most recent call last): 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/async.py", line 52, in handle 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     self.handle_request(listener_name, req, client, addr) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/ggevent.py", line 163, in handle_request 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     super(GeventWorker, self).handle_request(*args) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/async.py", line 105, in handle_request 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     respiter = self.wsgi(environ, resp.start_response) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 189, in __call__ 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     response = self.get_response(request) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 207, in get_response 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return debug.technical_500_response(request, *sys.exc_info(), status_code=400) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/views/debug.py", line 97, in technical_500_response 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     html = reporter.get_traceback_html() 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/views/debug.py", line 384, in get_traceback_html 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return t.render(c) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 210, in render 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return self._render(context) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 202, in _render 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return self.nodelist.render(context) 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 905, in render 
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     bit = self.render_node(node, context) 
...skipping... 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     self.stop() 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 347, in stop 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     time.sleep(0.1) 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 219, in handle_chld 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     self.reap_workers() 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE 
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state. 
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'. 

请您参考如下方法:

我知道这个问题有一段时间没有答案,可能已经解决了,但这可以帮助某人。 第一次尝试:

gunicorn --log-file=- (your_project_name).wsgi:application

您会在加载 gunicorn 引导时看到包含其他参数的日志。 在我的例子中,缺少一个包,我安装了那个包并输入了 foward 命令:

sudo systemctl daemon-reload sudo systemctl 重启 gunicorn sudo systemctl 启用 gunicorn

问题解决了。我希望这个答案能有所帮助。