digital ocean deployment error: 502 Bad Gateway
digital ocean deployment error: 502 Bad Gateway
我的网站已启动并 运行ning,但管理员 CSS 未加载,我不确定服务器不同意我做了什么,但现在整个网站都是关闭 502 Bad Gateway
消息。
这里是一些关键文件的内容
sudo nano /etc/systemd/system/gunicorn.socket
文件:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
gunicorn.service
文件 (sudo nano /etc/systemd/system/gunicorn.service
)
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=eson
Group=www-data
WorkingDirectory=/home/eson/example
ExecStart=/home/eson/example/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
example.wsgi:application
[Install]
WantedBy=multi-user.target
这是 Nginx 的 sudo nano /etc/nginx/sites-available/example
:
server {
server_name www.example.com example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/eson/example;
}
location /media/ {
root /home/eson/example;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name www.example.com example.com;
return 404; # managed by Certbot
}
当我输入 sudo systemctl status gunicorn.socket
时,我得到:
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: failed (Result: service-start-limit-hit) since Wed 2022-05-11 01:42:19 UTC; 2s ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
当我 运行 file /run/gunicorn.sock
我得到 /run/gunicorn.sock: socket
Nginx 看起来不错:
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
但是,当我 运行 sudo tail -30 /var/log/nginx/error.log
我得到:
2022/05/11 15:26:47 [error] 739#739: *49 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.219.87, server: www.example.com, request: "GET /owa/auth/x.js HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/x.js", host: "128.199.2.252"
2022/05/11 15:29:47 [error] 739#739: *51 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.212.218, server: www.example.com, request: "GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "128.199.2.252"
2022/05/11 15:30:50 [error] 739#739: *53 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.221.172, server: www.example.com, request: "GET /owa/auth/logon.aspx HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/logon.aspx", host: "128.199.2.252"
2022/05/11 15:49:48 [error] 739#739: *55 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 72.143.229.153, server: www.example.com, request: "GET /admin/login/?next=/admin/ HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/admin/login/?next=/admin/", host: "example.com"
2022/05/11 16:13:25 [crit] 739#739: *57 SSL_do_handshake() failed (SSL: error:14201044:SSL routines:tls_choose_sigalg:internal error) while SSL handshaking, client: 23.92.22.17, server: 0.0.0.0:443
2022/05/11 16:21:15 [crit] 739#739: *61 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 45.9.20.101, server: _, request: "GET /_ignition/execute-solution HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/_ignition/execute-solution", host: "128.199.2.252:80"
我的防火墙允许以下应用程序:
sudo ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
当我启动并启用 gunicorn 时,gunicorn 套接字状态正常:
sudo systemctl status gunicorn.socket
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: active (listening) since Wed 2022-05-11 16:14:05 UTC; 11min ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
Tasks: 0 (limit: 2339)
Memory: 0B
CGroup: /system.slice/gunicorn.socket
但是,gunicorn 状态不是:
sudo systemctl status gunicorn
● gunicorn.service - gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2022-05-11 14:01:54 UTC; 2h 23min ago
TriggeredBy: ● gunicorn.socket
Main PID: 1775 (code=exited, status=1/FAILURE)
我确实尝试重新启动一切:
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
sudo systemctl enable gunicorn.socket
当我运行sudo tail -F /var/log/nginx/error.log
:
2022/05/11 15:07:00 [error] 739#739: *43 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 137.226.113.44, server: www.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "www.example.com"
2022/05/11 15:07:29 [crit] 739#739: *45 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 92.255.85.190, server: _, request: "GET / HTTP/1.0", upstream: "http://unix:/home/django/gunicorn.socket:/"
2022/05/11 15:23:42 [crit] 739#739: *47 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 87.251.101.78, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/", host: "128.199.2.252:80"
2022/05/11 15:26:47 [error] 739#739: *49 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.219.87, server: www.example.com, request: "GET /owa/auth/x.js HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/x.js", host: "128.199.2.252"
2022/05/11 15:29:47 [error] 739#739: *51 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.212.218, server: www.example.com, request: "GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "128.199.2.252"
2022/05/11 15:30:50 [error] 739#739: *53 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.221.172, server: www.example.com, request: "GET /owa/auth/logon.aspx HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/logon.aspx", host: "128.199.2.252"
2022/05/11 15:49:48 [error] 739#739: *55 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 72.143.229.153, server: www.example.com, request: "GET /admin/login/?next=/admin/ HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/admin/login/?next=/admin/", host: "example.com"
2022/05/11 16:13:25 [crit] 739#739: *57 SSL_do_handshake() failed (SSL: error:14201044:SSL routines:tls_choose_sigalg:internal error) while SSL handshaking, client: 23.92.22.17, server: 0.0.0.0:443
2022/05/11 16:21:15 [crit] 739#739: *61 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 45.9.20.101, server: _, request: "GET /_ignition/execute-solution HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/_ignition/execute-solution", host: "128.199.2.252:80"
2022/05/11 16:44:28 [error] 739#739: *67 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 185.39.144.147, server: www.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "www.example.com"
**connect() to unix:/run/gunicorn.sock failed (2: No such file or directory)**
This indicates that Nginx was unable to find the gunicorn.sock file at the given location. You should compare the proxy_pass location defined within /etc/nginx/sites-available/myproject file to the actual location of the gunicorn.sock file generated by the gunicorn.socket systemd unit. If you cannot find a gunicorn.sock file within the /run directory, it generally means that the systemd socket file was unable to create it. Go back to the section on checking for the Gunicorn socket file to step through the troubleshooting steps for Gunicorn.
所以我做了,它说 运行 file /run/gunicorn.sock
我得到 /run/gunicorn.sock: socket
,与他们的输出相同。
此外,当我 运行: sudo journalctl -u gunicorn.socket
我明白了:
-- Logs begin at Tue 2022-02-22 09:51:29 UTC, end at Wed 2022-05-11 01:49:37 UTC. --
May 10 21:53:50 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 10 23:51:14 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 10 23:52:17 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:18:28 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:20:47 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:35:43 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:36:19 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:40:16 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:40:33 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:40:51 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:42:19 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
lines 1-12/12 (END)
我做了运行sudo journalctl -u gunicorn
,我发现那里有错误。这是回溯:
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: worker.init_process()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.load_wsgi()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.wsgi = self.app.wsgi()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.callable = self.load()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return self.load_wsgiapp()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return util.import_app(self.app_uri)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: mod = importlib.import_module(module)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return _bootstrap._gcd_import(name[level:], package, level)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap_external>", line 848, in exec_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/example/wsgi.py", line 16, in <module>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: application = get_wsgi_application()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: django.setup(set_prefix=False)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: apps.populate(settings.INSTALLED_APPS)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: app_config = AppConfig.create(entry)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/apps/config.py", line 224, in create
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: import_module(entry)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return _bootstrap._gcd_import(name[level:], package, level)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: ModuleNotFoundError: No module named 'corsheaders'
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: [2022-05-11 16:50:35 +0000] [4393] [INFO] Worker exiting (pid: 4393)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 209, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.sleep()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 357, in sleep
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: ready = select.select([self.PIPE[0]], [], [], 1.0)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.reap_workers()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: During handling of the above exception, another exception occurred:
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/bin/gunicorn", line 8, in <module>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: sys.exit(run())
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 67, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 231, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: super().run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Arbiter(self).run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 229, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 342, in halt
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.stop()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 393, in stop
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: time.sleep(0.1)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.reap_workers()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.service: Failed with result 'exit-code'
我检查了我的 settings.py 文件中的 corsheader,它是:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 3rd party apps:
'corsheaders',
...
]
MIDDLEWARE = [
# 3rd party middleware
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
...
]
CORS_ALLOWED_ORIGINS = [
"https://example.com",
"http://example.com",
"http://localhost:8000",
"http://localhost:3000",
"http://127.0.0.1:8000",
]
那么,我的问题是什么?是吗
"Nginx was unable to find the gunicorn.sock file at the given
location"
是 corsheader 的东西吗?或者可能两者兼而有之?以及,如何解决?在进行一些更改以修复管理页面中的 css 问题之前,我确实有相同的代码,并且它没有抱怨 corseheader。感谢您阅读这么长的日志和问题。我认为您需要查看全貌才能判断可能的原因。非常感谢您的帮助,因为这让我们的网站在关键时刻无法正常运行。
编辑 1:
我还应该注意,当我 运行 sudo nano /run/gunicorn.sock
时,文件打开时显示以下消息:
[ Error reading /run/gunicorn.sock: No such device or address ]
编辑 2:
This Stackover flow post 帮助我进一步调试。 运行命令
gunicorn --log-file=- <app_name>.wsgi:application
我发现在我的本地机器上安装时,有几个包 (python-dotenv
) 包没有安装在 Droplet 上。安装包后,我仍然收到错误消息,因为 .env
文件未在 droplet 上设置。所以,基本上我现在的问题是是否可以跟踪 .env
文件,是否应该在 droplet 上创建一个单独的 .env
文件并将我所有的环境变量放在那里,或者是否有另一种方法在 digitalocean droplet 上设置环境变量(注意 droplet 与其应用平台不同)
所以,我的问题(也可能是其他人的问题)是:
- 我没有在我的虚拟环境中安装所有的包(因此臭名昭著
502 bad gateway
)
- 我的环境变量没有设置(所以,我得到
500 Server Error
)。我刚刚在服务器上做了一个.env
文件,把我所有的环境变量复制到那里(不建议跟踪.env
文件)
- 我的迁移没有迁移到我的生产数据库。所以,我必须
python manage.py migrate
我能够通过在 settings.py 中设置 DEBUG = True
来调试问题,并查看我在哪里得到错误以及这些编程错误的真正含义(例如,如果你得到一个 AttributeError
, 这意味着你还没有迁移一些迁移文件)。哦,确保你之后打开 DEBUG = False
以避免暴露该站点。我希望这可以节省 3 天的挖掘和调试工作;)
我的网站已启动并 运行ning,但管理员 CSS 未加载,我不确定服务器不同意我做了什么,但现在整个网站都是关闭 502 Bad Gateway
消息。
这里是一些关键文件的内容
sudo nano /etc/systemd/system/gunicorn.socket
文件:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
gunicorn.service
文件 (sudo nano /etc/systemd/system/gunicorn.service
)
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=eson
Group=www-data
WorkingDirectory=/home/eson/example
ExecStart=/home/eson/example/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
example.wsgi:application
[Install]
WantedBy=multi-user.target
这是 Nginx 的 sudo nano /etc/nginx/sites-available/example
:
server {
server_name www.example.com example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/eson/example;
}
location /media/ {
root /home/eson/example;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name www.example.com example.com;
return 404; # managed by Certbot
}
当我输入 sudo systemctl status gunicorn.socket
时,我得到:
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: failed (Result: service-start-limit-hit) since Wed 2022-05-11 01:42:19 UTC; 2s ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
当我 运行 file /run/gunicorn.sock
我得到 /run/gunicorn.sock: socket
Nginx 看起来不错:
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
但是,当我 运行 sudo tail -30 /var/log/nginx/error.log
我得到:
2022/05/11 15:26:47 [error] 739#739: *49 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.219.87, server: www.example.com, request: "GET /owa/auth/x.js HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/x.js", host: "128.199.2.252"
2022/05/11 15:29:47 [error] 739#739: *51 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.212.218, server: www.example.com, request: "GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "128.199.2.252"
2022/05/11 15:30:50 [error] 739#739: *53 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.221.172, server: www.example.com, request: "GET /owa/auth/logon.aspx HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/logon.aspx", host: "128.199.2.252"
2022/05/11 15:49:48 [error] 739#739: *55 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 72.143.229.153, server: www.example.com, request: "GET /admin/login/?next=/admin/ HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/admin/login/?next=/admin/", host: "example.com"
2022/05/11 16:13:25 [crit] 739#739: *57 SSL_do_handshake() failed (SSL: error:14201044:SSL routines:tls_choose_sigalg:internal error) while SSL handshaking, client: 23.92.22.17, server: 0.0.0.0:443
2022/05/11 16:21:15 [crit] 739#739: *61 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 45.9.20.101, server: _, request: "GET /_ignition/execute-solution HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/_ignition/execute-solution", host: "128.199.2.252:80"
我的防火墙允许以下应用程序:
sudo ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
当我启动并启用 gunicorn 时,gunicorn 套接字状态正常:
sudo systemctl status gunicorn.socket
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: active (listening) since Wed 2022-05-11 16:14:05 UTC; 11min ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
Tasks: 0 (limit: 2339)
Memory: 0B
CGroup: /system.slice/gunicorn.socket
但是,gunicorn 状态不是:
sudo systemctl status gunicorn
● gunicorn.service - gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2022-05-11 14:01:54 UTC; 2h 23min ago
TriggeredBy: ● gunicorn.socket
Main PID: 1775 (code=exited, status=1/FAILURE)
我确实尝试重新启动一切:
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
sudo systemctl enable gunicorn.socket
当我运行sudo tail -F /var/log/nginx/error.log
:
2022/05/11 15:07:00 [error] 739#739: *43 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 137.226.113.44, server: www.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "www.example.com"
2022/05/11 15:07:29 [crit] 739#739: *45 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 92.255.85.190, server: _, request: "GET / HTTP/1.0", upstream: "http://unix:/home/django/gunicorn.socket:/"
2022/05/11 15:23:42 [crit] 739#739: *47 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 87.251.101.78, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/", host: "128.199.2.252:80"
2022/05/11 15:26:47 [error] 739#739: *49 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.219.87, server: www.example.com, request: "GET /owa/auth/x.js HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/x.js", host: "128.199.2.252"
2022/05/11 15:29:47 [error] 739#739: *51 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.212.218, server: www.example.com, request: "GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "128.199.2.252"
2022/05/11 15:30:50 [error] 739#739: *53 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 192.241.221.172, server: www.example.com, request: "GET /owa/auth/logon.aspx HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/owa/auth/logon.aspx", host: "128.199.2.252"
2022/05/11 15:49:48 [error] 739#739: *55 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 72.143.229.153, server: www.example.com, request: "GET /admin/login/?next=/admin/ HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/admin/login/?next=/admin/", host: "example.com"
2022/05/11 16:13:25 [crit] 739#739: *57 SSL_do_handshake() failed (SSL: error:14201044:SSL routines:tls_choose_sigalg:internal error) while SSL handshaking, client: 23.92.22.17, server: 0.0.0.0:443
2022/05/11 16:21:15 [crit] 739#739: *61 connect() to unix:/home/django/gunicorn.socket failed (2: No such file or directory) while connecting to upstream, client: 45.9.20.101, server: _, request: "GET /_ignition/execute-solution HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/_ignition/execute-solution", host: "128.199.2.252:80"
2022/05/11 16:44:28 [error] 739#739: *67 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 185.39.144.147, server: www.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "www.example.com"
**connect() to unix:/run/gunicorn.sock failed (2: No such file or directory)**
This indicates that Nginx was unable to find the gunicorn.sock file at the given location. You should compare the proxy_pass location defined within /etc/nginx/sites-available/myproject file to the actual location of the gunicorn.sock file generated by the gunicorn.socket systemd unit. If you cannot find a gunicorn.sock file within the /run directory, it generally means that the systemd socket file was unable to create it. Go back to the section on checking for the Gunicorn socket file to step through the troubleshooting steps for Gunicorn.
所以我做了,它说 运行 file /run/gunicorn.sock
我得到 /run/gunicorn.sock: socket
,与他们的输出相同。
此外,当我 运行: sudo journalctl -u gunicorn.socket
我明白了:
-- Logs begin at Tue 2022-02-22 09:51:29 UTC, end at Wed 2022-05-11 01:49:37 UTC. --
May 10 21:53:50 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 10 23:51:14 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 10 23:52:17 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:18:28 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:20:47 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:35:43 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:36:19 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:40:16 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:40:33 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
May 11 01:40:51 django-s-1vcpu-2gb-sfo3-01 systemd[1]: Listening on gunicorn socket.
May 11 01:42:19 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.socket: Failed with result 'service-start-lim>
lines 1-12/12 (END)
我做了运行sudo journalctl -u gunicorn
,我发现那里有错误。这是回溯:
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: worker.init_process()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.load_wsgi()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.wsgi = self.app.wsgi()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: self.callable = self.load()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return self.load_wsgiapp()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return util.import_app(self.app_uri)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: mod = importlib.import_module(module)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return _bootstrap._gcd_import(name[level:], package, level)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap_external>", line 848, in exec_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/example/wsgi.py", line 16, in <module>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: application = get_wsgi_application()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: django.setup(set_prefix=False)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: apps.populate(settings.INSTALLED_APPS)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: app_config = AppConfig.create(entry)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/home/eson/example/env/lib/python3.8/site-packages/django/apps/config.py", line 224, in create
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: import_module(entry)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: return _bootstrap._gcd_import(name[level:], package, level)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: ModuleNotFoundError: No module named 'corsheaders'
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4393]: [2022-05-11 16:50:35 +0000] [4393] [INFO] Worker exiting (pid: 4393)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 209, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.sleep()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 357, in sleep
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: ready = select.select([self.PIPE[0]], [], [], 1.0)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.reap_workers()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: During handling of the above exception, another exception occurred:
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Traceback (most recent call last):
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/bin/gunicorn", line 8, in <module>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: sys.exit(run())
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 67, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 231, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: super().run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: Arbiter(self).run()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 229, in run
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 342, in halt
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.stop()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 393, in stop
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: time.sleep(0.1)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: self.reap_workers()
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: File "/home/eson/example/env/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 gunicorn[4375]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
May 11 16:50:35 django-s-1vcpu-2gb-sfo3-01 systemd[1]: gunicorn.service: Failed with result 'exit-code'
我检查了我的 settings.py 文件中的 corsheader,它是:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 3rd party apps:
'corsheaders',
...
]
MIDDLEWARE = [
# 3rd party middleware
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
...
]
CORS_ALLOWED_ORIGINS = [
"https://example.com",
"http://example.com",
"http://localhost:8000",
"http://localhost:3000",
"http://127.0.0.1:8000",
]
那么,我的问题是什么?是吗
"Nginx was unable to find the gunicorn.sock file at the given location"
是 corsheader 的东西吗?或者可能两者兼而有之?以及,如何解决?在进行一些更改以修复管理页面中的 css 问题之前,我确实有相同的代码,并且它没有抱怨 corseheader。感谢您阅读这么长的日志和问题。我认为您需要查看全貌才能判断可能的原因。非常感谢您的帮助,因为这让我们的网站在关键时刻无法正常运行。
编辑 1:
我还应该注意,当我 运行 sudo nano /run/gunicorn.sock
时,文件打开时显示以下消息:
[ Error reading /run/gunicorn.sock: No such device or address ]
编辑 2:
This Stackover flow post 帮助我进一步调试。 运行命令
gunicorn --log-file=- <app_name>.wsgi:application
我发现在我的本地机器上安装时,有几个包 (python-dotenv
) 包没有安装在 Droplet 上。安装包后,我仍然收到错误消息,因为 .env
文件未在 droplet 上设置。所以,基本上我现在的问题是是否可以跟踪 .env
文件,是否应该在 droplet 上创建一个单独的 .env
文件并将我所有的环境变量放在那里,或者是否有另一种方法在 digitalocean droplet 上设置环境变量(注意 droplet 与其应用平台不同)
所以,我的问题(也可能是其他人的问题)是:
- 我没有在我的虚拟环境中安装所有的包(因此臭名昭著
502 bad gateway
) - 我的环境变量没有设置(所以,我得到
500 Server Error
)。我刚刚在服务器上做了一个.env
文件,把我所有的环境变量复制到那里(不建议跟踪.env
文件) - 我的迁移没有迁移到我的生产数据库。所以,我必须
python manage.py migrate
我能够通过在 settings.py 中设置 DEBUG = True
来调试问题,并查看我在哪里得到错误以及这些编程错误的真正含义(例如,如果你得到一个 AttributeError
, 这意味着你还没有迁移一些迁移文件)。哦,确保你之后打开 DEBUG = False
以避免暴露该站点。我希望这可以节省 3 天的挖掘和调试工作;)