Ubuntu 16.04/Django - gunicorn - Worker 启动失败
Ubuntu 16.04/Django - gunicorn - Worker failed to boot
我正在 Digital Ocean Ubuntu 16.04 VPS 上部署 Django 项目。我使用了 Django 的一键安装,然后替换为我的项目。
问题是服务器 returns 502 Error
.
编辑:
/home/django/realestate_scanner/
dir
里面没有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
returns这个:
...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
returns这个:
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 restart gunicorn
sudo systemctl enable gunicorn
问题已解决。希望这个回答能帮到你。
我有一个类似的错误,原来是我的 Django 代码中引入的语法错误。
因此,尝试 运行 Django standalone
总是一个好主意
python manage.py runserver
当你突然有一个 Gunicorn "Worker failed to boot" 错误
我正在 Digital Ocean Ubuntu 16.04 VPS 上部署 Django 项目。我使用了 Django 的一键安装,然后替换为我的项目。
问题是服务器 returns 502 Error
.
编辑:
/home/django/realestate_scanner/
dir
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
returns这个:
...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
returns这个:
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 restart gunicorn
sudo systemctl enable gunicorn
问题已解决。希望这个回答能帮到你。
我有一个类似的错误,原来是我的 Django 代码中引入的语法错误。
因此,尝试 运行 Django standalone
总是一个好主意python manage.py runserver
当你突然有一个 Gunicorn "Worker failed to boot" 错误