settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'adminstatic')
mynginx.conf /etc/nginx/sites-enabled/mynginx.conf
你可以确定我在启用网站的文件夹中只有这个conf文件
server {
listen *:80;
server_name _;
access_log /var/log/myapp.access.log;
error_log /var/log/myapp.error.log;
# Django media
location /static/ {
alias /root/proj/myapp/adminstatic/; #your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass unix:/tmp/myapp.sock;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
在此之后我尝试了collectstatic命令
python manage.py collectstatic
它已经成功收集了adminstatic文件夹中的所有静态信息。我在crossstked中,adminstatic文件夹中有一个名为admin
的文件夹。此admin文件夹有3个名为css
,img
,js
的文件夹。
我在生产机器上做的所有这些。因此,当我尝试通过生产的IP访问本地浏览器上的django管理页面时,管理面板正在打开,但加载了任何css / js。我做了F12并在网络标签中看到。所有静力学都有禁止的错误。
PS:我正在使用uWsgi和nginx。
像往常一样,我已经看过几个SO主题和博客。但它并没有帮助我。
答案 0 :(得分:3)
nginx网络流程用户(通常为www-data
)可能没有/root/proj/myapp/adminstatic/
的读取权限。我想如果你检查myapp.error.log
你会看到权限被拒绝的消息。
您需要将项目移动到nginx进程有权阅读的文件夹中(您真的不应该从/root
提供这些内容),或者您可以chown
/ chmod
/root/proj/myapp/adminstatic/
适当地提供对www-data
的访问权限。
答案 1 :(得分:1)
我将静态文件移动到/ data / www并且有效。
答案 2 :(得分:0)
将您的项目移至/var/www/html/
,然后运行sudo chown -R www-data:www-data project-directory/
。请记住在/etc/systemd/system/gunicorn.service
和/etc/nginx/sites-available/your-project.conf
上编辑您的配置以固定到新位置。
然后运行
sudo systemctl daemon-reload,
sudo systemctl restart gunicorn,
sudo systemctl restart nginx