部署Django,静态文件路径

时间:2014-04-11 17:53:17

标签: django deployment static

我试图将我的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但我的静态文件仍然无法显示。

3 个答案:

答案 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"),
)

我希望这有帮助!