我尝试用Nginx在远程服务器上部署我的Django项目,但我的文件没有被服务。
我想我的路径不正确,但不知道为什么。
python3 manage.py collectstatic获取我所有在intensecov_static文件夹中的文件。
homezebra
- intensecov_app
- intensecov
- coverage (project)
- manage.py
- static
- ...
- intensecov_static
- css
- style.css
- images
- ...
设置.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'randomization_management/static'),
os.path.join(BASE_DIR,'randomization_settings/static'),
os.path.join(BASE_DIR,'randomization/static'),
)
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = '/home/zebra/intensecov_static'
etcnginxsites-availableintensecov
server {
listen 80;
server_name 192.168.80.9;
root /home/zebra/intensecov_app;
location /static {
alias /home/zebra/intensecov_static;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8000;
break;
}
}
}
希望你的nginx.conf是你声明的。
location /static {
alias /home/zebra/intensecov_static;
}
试试这个
location /static {
alias /home/zebra/intensecov_static/;
}
看来nginx需要尾部的 /
以使文件夹正常工作.或者说,至少在删除后面的静态文件时,静态文件的服务中断了。/
.
STATIC_ROOT是所有静态文件被收集的地方,当你运行命令 python manage.py collectstatic
而STATIC_URL是指向STATIC_ROOT的。
查看这里以供参考 https:/docs.djangoproject.comen3.0refsettings#std:setting-STATIC_ROOT。
改变nginx文件的位置应该可以解决这个问题。