每当我加载我的网站时,在加载图片和css时都会出现404错误。
我的nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
client_max_body_size 4G;
server_name _;
keepalive_timeout 5;
# Your Django project's media files - amend as required
location /media {
alias /home/django/django_project/django_project/media;
}
# your Django project's static files - amend as required
location /static/ {
alias /home/django/django_project/csite/static/csite/;
autoindex on;
}
# Proxy the static assests for the Django Admin panel
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://app_server;
}
}
我的settings.py
:
STATIC_ROOT = os.path.join(BASE_DIR, "csite/static")
STATIC_URL = '/static/'
您可以查看目录结构here
我的应用名称为csite
。
答案 0 :(得分:0)
试试这个
location /static/ {
root /home/django/django_project/csite/;
}
答案 1 :(得分:0)
根据我的情况,这是一个答案,但你应该找到你的问题的答案。就我而言,我有:
我的Django IP服务器:172.30.10.92
我的Nginx IP服务器:172.30.10.93
WSGI是使用Django项目创建的文件。
该文件位于/path/to/your/project/Myproject/wsgi.py
我们必须像这样编辑这个文件:
import os
from django.core.wsgi import get_wsgi_application
import sys sys.path.append('/var/www/html/Myproject')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Myproject.settings")
application = get_wsgi_application()
为了安装gunicorn / supervisor,你必须在你的shell中执行:
pip install gunicorn
pip install supervisor
然后,您必须在/etc/supervisor/conf.d/Myproject.conf
中创建一个新文件,如下所示:
[program:Myproject]
command = /home/valentin/.virtualenvs/MyprojectEnv/bin/gunicorn Myproject.wsgi:application --name "Myproject" --workers=4 --bind=0.0.0.0:8080 -- user="valentin" --group="valentin" ; Command to start app
user = username #You have to replace by your username
stdout_logfile = /var/log/supervisor/supervisor.log
redirect_stderr = true
log
environment=LANG=fr_FR.UTF-8,LC_ALL=fr_FR.UTF-8
我指定了端口8080 ,这是我的应用服务器和我的网络服务器之间的通信端口。
您必须编辑位于/etc/hosts
的主机文件并向Django服务器添加新条目:
127.0.0.1 localhost
127.0.1.1 valentin
172.30.10.92 Myproject
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
此新文件应放在/etc/nginx/sites-available/Myproject.conf
server {
listen 8080;
server_name Myproject;
root /var/www/html/Myproject/;
location /static/ {
root /var/www/html/;
}
location / {
include proxy_params;
proxy_pass http://172.30.10.92:8080;
}
}
IP地址对应于我的Django服务器地址。我指定了监听端口(8080),我的Django项目的路径&静态目录。
然后,您必须创建指向已启用网站的符号链接。
操作完成后,重新启动nginx服务:
sudo service nginx restart
您必须编辑 settings.py 文件,以便在 ALLOWED_HOSTS 中允许nginx IP地址:
ALLOWED_HOSTS = ['localhost', '172.30.10.93', '127.0.0.1', '[::1]']
最后,你必须开始枪手。您应该在Django根项目中并执行:
gunicorn Myproject.wsgi:application --bind 172.30.10.92:8080
现在,在您的浏览器中,尝试使用端口连接到您的nginx服务器:
http://172.30.10.93:8080
有效!
您的静态目录不能放在与django项目相同的目录中。
创建一个新的静态目录,在settings.py文件中指定路径,然后创建python manage.py collectstatic
。
不要忘记编辑你的nginx文件。