我正在尝试在一个vps上部署一个django网站,现在它已经启动并运行了(在经历了很多麻烦之后!),但现在我的媒体和静态文件不显示在我的网站,我真的尝试了很多方法,但没有一个工作。
我的nginx配置:
server {
listen 80;
server_name domain_name;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/real_estate/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
gunicorn.service:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=shahriar
Group=www-data
WorkingDirectory=/home/shahriar/Amlak/real_estate
ExecStart=/home/shahriar/Amlak/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
real_estate.wsgi:application
[Install]
WantedBy=multi-user.target
settings.py:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
STATIC_URL = '/var/www/real_estate/static/'
STATIC_ROOT = '/var/www/real_estate/static/assets'
STATICFILES_DIRS = [ 'static/', BASE_DIR/'static/', '/var/www/real_estate/static/'
]
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# Media Settings
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR.joinpath('media')
最后,我重启了所有可能的服务,但没有一个静态文件显示出来。
我试着把settings.py改成这样:
STATIC_URL = 'static/'
STATIC_ROOT = 'assets/'
STATICFILES_DIRS = [ 'static/', BASE_DIR/'static/'
]
这是:
STATIC_URL = '/var/www/real_estate/static/'
STATIC_ROOT = '/var/www/real_estate/static/assets'
STATICFILES_DIRS = [ 'static/', BASE_DIR/'static/', '/var/www/real_estate/static/'
]
我试着从这个改变:
server {
listen 80;
server_name domain_name;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/real_estate/static/;
}
location /assets/ {
root /var/www/real_estate/assets/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
这是:
server {
listen 80;
server_name domain_name;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/real_estate/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
1条答案
按热度按时间e4yzc0pl1#
在你的Django设置中,确保你正确设置了以下配置来服务静态文件是至关重要的:
一旦你对Django的设置做了这些更改,下一步就是将静态文件收集到指定的STATIC_ROOT目录中。你可以通过在Django项目目录中运行以下命令来实现这一点:
此外,检查您的媒体文件设置,类似于我们为下面的静态文件所做的:
这些设置定义媒体文件的URL和根目录。
我们还需要确保您的静态和媒体目录的权限设置正确,以允许Nginx和Gunicorn读取这些文件。您可以按照以下方式调整权限:
通过执行这些步骤并确认您的配置和权限是准确的。让我知道它是否解决了你的问题!