在我的 ubuntu 20.04 上,我正在嘗試使用 nginx 和 gunicorn 部署一個 Django 3.2.8 專案。問題是服務器找不到靜態檔案。因此,頁面顯示時沒有 css 和影像。
我嘗試了許多來自互聯網的解決方案,但沒有任何幫助。提前感謝您的寶貴時間!
起初我啟動這個腳本(start_gunicorn.sh)
#!/bin/bash
source /root/myapps/zhanna_first_web/env/bin/activate
exec gunicorn -c /root/myapps/zhanna_first_web/zhanna/gunicorn_config.py lawyer>
gunicorn_config.py:
command = '/root/myapps/zhanna_first_web/env/bin/gunicorn'
pythonpath = '/root/myapps/zhanna_first_web/zhanna'
bind = '185.46.8.164:8001'
workers = 3
user = 'root'
limit_request_fields = 32000
limit_request_field_size = 0
raw_env = 'DJANGO_SETTINGS_MODULE=lawyer.settings'
/etc/nginx/sites-enabled/default
server {
listen 80;
server_name 185.46.8.164;
location /static {
autoindex on;
root /myapps/zhanna_first_app/zhanna/static;
}
location / {
proxy_pass http://185.46.8.164:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
add_header Access-Control-Allow-Origin *;
}
}
Ubuntu 使用此輸出回應 start_gunicorn 腳本的啟動。
[2022-01-09 09:53:31 0300] [76583] [INFO] Starting gunicorn 20.1.0
[2022-01-09 09:53:31 0300] [76583] [INFO] Listening at: http://185.46.8.164:8001 (76583)
[2022-01-09 09:53:31 0300] [76583] [INFO] Using worker: sync
[2022-01-09 09:53:31 0300] [76585] [INFO] Booting worker with pid: 76585
[2022-01-09 09:53:31 0300] [76586] [INFO] Booting worker with pid: 76586
[2022-01-09 09:53:31 0300] [76587] [INFO] Booting worker with pid: 76587
之后,該站點啟動并在 185.46.8.164:8001 可用。我可以打開網站的不同頁面,但靜態不可用。
從錯誤日志中,我意識到服務器正在訪問正確的靜態檔案夾。也就是說,他正在它所在的檔案夾中尋找它。但由于某種原因,他在那里看不到它并給出錯誤 404 NOT FOUND
PS我真的嘗試了很多東西。例如,我將配置中的 ip 從 127.0.01 更改為我的服務器的真實 ip 并回傳。我將配置“位置/靜態”更改為“位置/靜態/”并回傳。然后我將路徑從 /path/to 更改為 path/to/static 并回傳。將別名更改為 root 并回傳。互聯網論壇上提供的更多內容
我希望你能幫助我,因為我已經完全沒有想法了
uj5u.com熱心網友回復:
使用位置/static/ 而不是 /static
server {
listen 80;
server_name 185.46.8.164;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /myapps/zhanna_first_app/zhanna/static;
}
location /media/ {
root /path-to-media-folder;
}
location / {
proxy_pass http://185.46.8.164:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
add_header Access-Control-Allow-Origin *;
}
}
確保運行 collectstatic 和 restat nginx
uj5u.com熱心網友回復:
原來,錯誤是nginx給出了502錯誤。我重新配置了我的檔案,502 錯誤消失了。但現在我遇到了 500 錯誤。
來自 /var/log/nginx/error.log 的行:
worker_connections are not enough while connecting to upstream...
我的配置:my_app.conf(nginx 配置):
server {
listen 82;
server_tokens off;
server_name 185.46.8.164;
#root /var/www/
location / {
include uwsgi_params;
uwsgi_pass unix:///run/uwsgi/app/myapp/socket;
#
try_files $uri $uri/ =404;
#
proxy_pass http://185.46.8.164:82;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
add_header Access-Control-Allow-Origin *;
}
location /static/ {
root /eva/static;
}
}
myapp.ini(uwsgi.ini 檔案):
[uwsgi]
chdir = /root/eva/lawyer
env = DJANGO_SETTINGS_MODULE= lawyer.settings.production
wsgi-file = lawyer/wsgi.py
#module = lawyer.uwsgi:application
workers = 1
max-requests = 5000
#plugins-dir=/usr/lib/uwsgi/plugins/
#plugins = python3
#virtualenv = /root/eva/venv
home = /root/eva/venv
processes = 5
threads = 2
master = true
die-on-term = true
socket = /run/sedova.sock
chmod-socket = 666
vacuum = true
uid = www-data
gui = www-data
我在網上找到了兩種方法。1) 更改 my_app.conf。但這些變化對我沒有幫助。2)在/etc/nginx/nginx.conf中,修改worker_connections的值,添加worker_rlimit_nofile引數。但是太大的值會導致我的 socket() 失敗...錯誤(如下所示)。而且太小 - 不解決問題。socket() 失敗(24:對許多打開的檔案)...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410406.html
標籤:
上一篇:從匹配條件的陣列中計算大小
下一篇:從回圈內部更新回圈外部的變數
