Đây là cấu hình nginx tôi:Phục vụ các tập tin tĩnh với Nginx + Gunicorn + Django
server {
listen 80;
server_name localhost;
keepalive_timeout 5;
access_log /home/tunde/django-projects/mumu/nginx/access.log;
error_log /home/tunde/django-projects/mumu/nginx/error.log;
root /home/tunde/django-projects/mumu;
location/{
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
}
}
settings.py của tôi trông giống như:
import os
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))
STATIC_ROOT = '/home/tunde/django-projects/mumu/STATIC/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static/'),
)
tập tin supervisord.conf tôi trông như thế:
[program: mumu]
command = /home/tunde/ENV1/bin/gunicorn -w 1 --bind=127.0.0.1:8000 mumu.wsgi:application
directory = /home/tunde/django-projects/mumu/
stdout_logfile= /home/tunde/django-projects/mumu/supervisor/logfile.log
stderr_logfile= /home/tunde/django-projects/mumu/supervisor/error.log
user = tunde
Vấn đề là các tệp tĩnh không được phân phát và tôi không biết mình đang làm gì sai. Một url như /static/css/styles.css trả về 404. Trợ giúp sẽ được đánh giá cao.
Cảm ơn @scott Do một kinh nghiệm trước đây với Django bằng cách nào đó bỏ qua các tập tin tĩnh được lưu trữ trong một thư mục gọi là "tĩnh", tôi quyết định thay đổi vị trí và tên cho tĩnh của tôi các tập tin. Sau khi khởi động lại nginx, cấu hình của tôi hoạt động mà không cần phải thêm khối vị trí được đề xuất của bạn. – Tundebabzy
Khi bạn xem tệp nhật ký giám sát của mình, bạn có thấy các yêu cầu đi qua cho các tệp tĩnh (img, css, javascript) không? –
logfile.log của tôi tức là stdout_logfile trong supervisord.conf hoàn toàn trống – Tundebabzy