2017-08-11 20 views
0

我有一个使用django运行的vps,我正在从本地机器开发网站,并通过git将其推送到vps。Django不能在服务器上找到静态文件,但在本地机器上工作正常

在我的本地机器上,我刚刚安装了initializr,并且更改了所有脚本以使用静态位置,并且一切正常,但是当我将它推送到我的vps时,它发现的只是.html文件,它不能找到任何的.css或.js文件 VPS被运行Debian 8. *最小,nginx的脚本和gunicorn 我的本地机器上运行Mac系统 两台机器上运行的Python 3.6.2,Django的和1.11.4

以下是来自settings.py的相关设置:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
... 
TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, "BaseFiles/templates")], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 
... 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "BaseFiles/static"), 
) 

我的路径是:

Project_folder/ -> BaseFiles | Django_project | manage.py 
BaseFiles/ -> static | templates 

UPDATE 好了,事实证明,如果我从VPS手动运行Django的,它加载CSS和JS文件细,所以问题是独立于Nginx的

Nginx的:

server { 
     listen 80; 
     server_name domaine.com; 

    location = /favicon.ico { access_log off; log_not_found off; } 
    location /static/ { 
     root /home/user/project_folder; 
    } 

因此,原来我在nginx的站点文件有错误配置。 project_folder后添加以下后,它工作得很好

/BaseFiles 
+0

请,添加错误跟踪你。 –

+0

有没有错误跟踪我只是得到一个没有CSS或JavaScript的HTML页面,CONSOL只是说它无法找到文件在域名/static/* – Alexander

+0

在服务器django模式DEBUG = False,在本地计算机上' DEBUG = TRUE'?如果是这样的答案可以帮助你:https://stackoverflow.com/a/6406429/8060120 –

回答

0

试试这个:

给一个静态的根在你的settings.py

STATIC_ROOT = '/var/www/project/static/' 

而在你的nginx:

location /static/ { 
    alias /var/www/project/static/; 
} 

python3 manage.py collectstaticsudo service nginx restart ,这应该可能工作。 希望这有助于。谢谢。

相关问题