我试图将我的django应用程序部署到我的VPS。所以我遵循了本教程(link),我遇到的唯一问题是我无法显示静态文件。
我可以看到我的静态文件(因此nginx工作正常): 例如:http://188.xxx.xxx.93/static/css/bootstrap.css。
但是当我访问我的网站时,我可以看到它链接了一个这样的css文件:
<link href="/static/css/bootstrap.css" rel="stylesheet">
所以它试图找到文件(使用端口):http://188.xxx.xxx.93: 8001 /static/bootstrap.css显然不起作用。为了使静态文件有效,我应该更改我的django设置?
下面你可以在VPS上找到我文件的结构。
Virtual Env: /opt/myapps/
Django project: /opt/myapps/uniprogress/
Static Files: /opt/myapps/uniprogress/static/
Nginx config:/ etc / nginx / sites-available / uniprogress
server {
server_name 188.xxx.xxx.93;
access_log off;
location /static/ {
alias /opt/myapps/uniprogress/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 settings.py中:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_ROOT = '/opt/myapps/uniprogress/static/'
STATIC_URL = '/static/'
我还使用过:python manage.py collectstatic但我的静态文件仍然无法显示。
答案 0 :(得分:1)
我刚刚阅读了另一个教程link,我发现STATIC_URL可能是这样的:
STATIC_URL = 'http://static.example.com/'
所以我猜解决方案就是这个?
如果有经验的人可以告诉我这是否是正确的方法,或者这是不正确的方法?
聚苯乙烯。我现在在我的网站上的css文件是这样的:
<link href="http://188.xxx.xxx.93/static/css/bootstrap.min.css" rel="stylesheet">
。
答案 1 :(得分:0)
我建议您阅读以下文档,这将更好地理解Django静态文件。 http://bitsoul.com/2012/10/04/understanding-django-static-files-for-beginners/
答案 2 :(得分:0)
我建议你做一些不同的事情,这样你的整个项目都可以移植。在settings.py中,这是一个例子:
# Get the current directory
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Define the URL path
STATIC_URL = '/static/'
# Join the BASE_DIR with static, which means you can move the project folder anywhere
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
我希望这有帮助!