部署带有前缀的django应用时,静态文件无法加载。

1 人关注

我试图在同一个域名下将django应用程序和wordpress一起部署。Django应用应该在一个子url下。"domain.com/djangoapp"。我试着在nginx conf文件和django settings.py中把SCRIPT_NAME变量设置为这个前缀。它起作用了,可以在/djangoapp网址下访问django应用,但静态文件没有加载。

我有以下nginx配置。

server {
    server_name domain.com   www.domain.com;
    root /var/www/domain.com/htdocs;
    index index.php index.html index.htm;
    include  common/redis.conf;
    include common/wpcommon.conf;
    location /static {
        root /home/user/project;
    location /djangoapp/ {
        include proxy_params;
        proxy_pass http://unix:/home/user/project/project.sock
        proxy_set_header SCRIPT_NAME /djangoapp;

和settings.py。

FORCE_SCRIPT_NAME = '/djangoapp'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

我还试着在一个单独的域上部署django应用,那里的静态文件也能加载。除了SCRIPT_NAME部分,配置都是一样的。 谁能帮帮我?

2 个评论
你运行了 manage.py collectstatic 吗?参见 docs.djangoproject.com/en/1.10/ref/contrib/staticfiles/...
当然了。Nginx设置指向由 collectstatic 创建的目录
python
django
wordpress
nginx
gunicorn
Stonecold
Stonecold
发布于 2017-03-13
1 个回答
Stonecold
Stonecold
发布于 2017-03-14
0 人赞同

似乎staticfiles没有加载,因为位置路径中漏掉了 / 。或者是我在静态目录的路径上打错了字。

我把位置改成了。