Gunicorn on lighttpd - 更改来自localhost的静态文件的基本URL:8080

时间:2014-11-18 07:59:43

标签: django lighttpd gunicorn static-files

现在我正在研究Django项目,这是我第一次通过gunicorn在服务器(Lighttpd)上运行Django应用程序。问题是 - 我用这样的gunicorn运行应用程序:

$PYTHON $MANAGEPATH run_gunicorn -D -b 127.0.0.1:18002 -p $GUNICORN_PIDPATH --log-file $GUNICORN_LOGPATH

Django settings.py的一部分:

from __future__ import absolute_import

import os
from socket import gethostname

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
HOSTNAME = gethostname()

def make_path(path):
    return os.path.join(BASE_DIR, path)

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = make_path('static_root')

# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'

在/etc/lighttpd/vhost.d/my_conf.conf中我对非静态文件有很好的重定向:

$SERVER["socket"] == ":82" {
    server.document-root = "/home/mefioo/public_html/generator/static"
    $HTTP["url"] !~ "\.(js|css|gif|jpg|png|ico|txt|swf|html|htm|svg|xlsx)$" {
        proxy.server = ("" => ( "localhost" => (
        "host" => "127.0.0.1",
        "port" => 18002,
        "fix-redirects" => 1
        ) ) )
    }
}

Idea - .js或.css等静态文件位于

/home/mefioo/public_html/generator/static

(这是Django app中static_root dir的代理),应该可以从url中获得

my_domain.com:82/my_file.js

应用程序的其余部分,所有网址都是这样的:

my_domain.com:82/url

应该像这样寻找django应用程序:

127.0.0.1:18002/url

因为lighttpd conf。

问题是 - 当我尝试访问我的静态文件时,我得到了404,因为app正在寻找

localhost:8080/my_file.js

而不是

my_domain.com:82/my_file.js

我不明白为什么,特别是当我有两个应用程序实例时,一个在我自己的服务器上(第二台PC,没有工作),一个在外部VPS上(按预期工作)。我是用错误的方式运行gunicorn,还是在lighttpd设置中丢失了一些东西?

1 个答案:

答案 0 :(得分:0)

我也是django / gunicorn的新手,但这是我配置我的应用程序的方式:

settings.py中的

设置

STATIC_ROOT = "/path to static files"
STATIC_URL = '/static/'
STATICFILES_DIRS = (
   os.path.join(BASE_DIR, 'static'),
)

我没有使用lighttpd而是使用nginx,这是配置:

server{
        server_name example.com www.example.com;

        access_log off;

location /static {
        autoindex on;
        alias /path_to_static_files;
    }
        location / {
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
    }

之后我们必须收集配置目录中的静态文件。这可以通过以下方式完成:python3 manage.py collectstatic

所有文件都应该复制到正确的目录中,lightppd或者nginx可以为它们提供服务,而gunicorn可以使用django / python - part