Запустите Django FastCGI автоматически при загрузке OS X - PullRequest
2 голосов
/ 06 декабря 2011

У меня Django FastCGI / nginx прекрасно работает на OS X. Я запускаю процесс FastCGI с терминала следующим образом:

python manage.py runfcgi host=127.0.0.1 port=8000 --settings=settings

в моем файле nginx.conf, который у меня есть:

server {
    listen       8080;
    server_name  localhost;
    location / {
        fastcgi_pass 127.0.0.1:8000;

У меня nginx запускается автоматически с использованием launchd как подробно здесь .

Мой вопрос: Каков правильный подход к автоматическому запуску процесса FastCGI примашина загружается?

Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2011

Я бы предложил использовать wsgi в этом случае, учитывая, что процесс wsgi запускается с помощью nginx, поскольку он является «автономным» процессом. Типичный конфиг nginx и wsgi:

myproject.wsgi:

#!/usr/bin/python2.7

import djangorecipe.wsgi

application = djangorecipe.wsgi.main('settings', logfile='/var/log/django/myproject.wsgi.log')

myproject.nginx.conf:

server {
    listen       80;
    server_name  myproject.com;

    # static resources
    location ^~ /static/ {
        alias   /var/www/myproject/static/;
        expires 31d;
    }

    wsgi_var  REQUEST_METHOD      $request_method;
    wsgi_var  QUERY_STRING        $query_string;
    wsgi_var  CONTENT_TYPE        $content_type;
    wsgi_var  CONTENT_LENGTH      $content_length;
    wsgi_var  SERVER_NAME         $server_name;
    wsgi_var  SERVER_PORT         $server_port;
    wsgi_var  SERVER_PROTOCOL     $server_protocol;

    # additional variables (not used if unavailable)
    wsgi_var  REQUEST_URI         $request_uri;
    wsgi_var  DOCUMENT_URI        $document_uri;
    wsgi_var  DOCUMENT_ROOT       $document_root;
    wsgi_var  SERVER_SOFTWARE     $nginx_version;
    wsgi_var  REMOTE_ADDR         $remote_addr;
    wsgi_var  REMOTE_PORT         $remote_port;
    wsgi_var  SERVER_ADDR         $server_addr;
    wsgi_var  REMOTE_USER         $remote_user;

    location  / {
        client_body_buffer_size 50;
        wsgi_pass /var/www/myproject/myproject.wsgi;

        wsgi_pass_authorization off;
        wsgi_script_reloading on;
        wsgi_use_main_interpreter on;
    }

    # logging
    access_log  /var/log/nginx/myproject/access.log;
    error_log   /var/log/nginx/myproject/error.log;
}
...