我正在尝试将我的django应用程序部署到我的vps。所以我遵循了几个教程,我唯一的问题是我无法让我的静态文件出现。所以下面你可以在VPS上找到我的文件的结构。

  • 虚拟env:/ opt / myapps /
  • Django项目:/ OPT / MYAPPS / UNIPROGRESS /
  • 静态文件:/ opt / myapps / uniprogress / static /

nginx配置:/ etc / nginx /站点可用/单级招生

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:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# Template Dirs

TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)

# 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但仍然我的静态文件不会显示。

更新 我使用的教程可以在数字海洋

我仔细检查服务器上的文件。

也可以访问静态文件,如: http://188.xxx。 xxx.93 / static / css / bootstrap.css

在我的源代码 http:///188.xxx.xxx .93:8001 / ,它将静态文件链接使用端口。

这意味着:<link href="/static/css/bootstrap.css" rel="stylesheet">

所以它试图在 http://188.xxx.xxx.93 中找到引导程序。 :8001 /static/bootstrap.css和文件不存在(必须删除帖子以使其工作)。

有帮助吗?

解决方案

为静态文件在nginx级别(如

)中这样做
server {
server_name 188.xxx.xxx.93;

access_log off;

location ~ ^/(static)/  {
  #  root:- you static files path
  #  alias /opt/myapps/uniprogress/static/;
     root /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"';
}
}
.

现在所有静态文件都将从您的nginx服务。

其他提示

您的static_root正在收集静态文件:

/ opt / myapps / uniprogress / opt / myapps / uniprogress / static /

与服务器配置不匹配,指向以下位置:

opt / myapps / uniprogress / static /

static_root只是一个文件夹,将所有静态文件(图像,css,所有内容)保存在一个部署的一个地方,因此将其设置为类似于'/ courtected_static /'并修复服务器配置。

检查此事

1是否可由nginx访问静态较旧的较旧较旧的,我的意思是文件夹权限。

2或执行此[/ p>

替换:

STATIC_ROOT = '/opt/myapps/uniprogress/static/'
.

用这个

STATIC_ROOT = ''
.

并在设置

中添加此
STATICFILES_DIRS = (
     '/opt/myapps/uniprogress/static/',
)
.

希望这有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top