我正在使用以下方式部署Django项目:
遵循本教程:https://www.digitalocean.com/community/tutorials/how-to-deploy-a-local-django-app-to-a-vps
我的配置
django设置
ClaimsPrinciple
的/ etc / nginx的/位点可用/ esmart2
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
STATIC_URL = '/static/'
运行
GNU nano 2.0.9 File: /etc/nginx/sites-available/esmart2
server {
server_name 192.168.30.17;
access_log off;
location /static/ {
alias /new_esmart/esmart2/static/;
}
location / {
proxy_pass http://127.0.0.1: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"';
}
}
我的Django项目正在运行,但是:
(esmart_env) [root@eprssrv09 esmart2]# /new_esmart/esmart_env/bin/gunicorn --bind 192.168.30.17:8001 esmart2.wsgi:application
有什么建议吗?
更新1 我认为已经避免了nginx设置:
删除'sites-enabled'文件夹中的任何引用,运行django项目并保留有关静态文件的问题。
更新2
如果在Django设置Not Found: /static/admin/css/login.css
我得到
debug=True
答案 0 :(得分:2)
似乎我解决了但我认为不是更好的解决方案。我的意思是,根据项目要求,这是一个很好的解决方案:我允许使用这个解决方案。
安装包
$stmt->bind_result($firstname, $lastname,...)
我添加了:
pip install whitenoise
这样会忽略nginx site conf(但我认为他们已经忽略了!)
Django WhiteNoise documentation
使用几行配置WhiteNoise允许您的网络应用程序 提供自己的静态文件,使其成为一个独立的单元 部署在任何地方,而不依赖于nginx,Amazon S3或任何其他 外部服务。 (特别适用于Heroku,OpenShift等 PaaS提供商。)
它可以很好地与CDN一起使用,适用于高流量网站 不必为了简单而牺牲性能。
WhiteNoise适用于任何兼容WSGI的应用程序,但有一些特殊功能 Django的自动配置功能。</ p>
WhiteNoise会为您提供最佳实践,例如:
提供压缩内容(gzip和Brotli格式,处理 正确接受编码和Vary标头)设置远期缓存 内容上的标题不会改变担心服务静态 使用Python的文件是非常低效的?仍然认为你应该 使用Amazon S3?看看不常见的问题。
答案 1 :(得分:1)
在我看来,这个问题有两个方面:
您的nginx配置中可能有错误。 new_esmart/
真的在您的根目录/
中,还是在/home/sam/new_esmart/
之类的地方?如果它不在您的根目录中,请确保提供完整路径。
您的STATIC_ROOT
似乎会指向path/to/new_esmart/static/
而不是/new_esmart/esmart2/static/
。请注意,当您在最初创建静态文件时,STATIC_ROOT
而不是您个人放置静态文件的位置时,collectstatic
是将静态文件复制到的位置。
所以您可能需要做的是确认您确实希望将静态文件收集到/actual/path/to/new_esmart/static/
,然后在nginx配置中使用相同的路径。
此外,正如评论中所讨论的,您可以尝试将listen 8001;
添加到您的nginx配置中:
server {
listen 8001;
server_name 192.168.30.17;
access_log off;
...