Развертывание Django на alwaysdata.com - PullRequest
9 голосов
/ 23 декабря 2009

Я новичок в Джанго. Я пробовал это, но я не могу развернуть. Как я могу сделать

#!/usr/bin/python
import sys
import os

base = os.path.dirname(os.path.abspath(__file__)) + '/..'
sys.path.append(base)

os.environ['DJANGO_SETTINGS_MODULE'] = 'myfirstapp.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler() 

AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(adminmedia/.*)$ - [L]
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi)
RewriteRule ^(.*)$ mysite.fcgi/$1 [L]

Ответы [ 3 ]

21 голосов
/ 24 декабря 2009

Вот вики-запись alwaysdata для настройки Django с помощью fastcgi. Единственный недостаток: написано по-французски.

Ну, я не говорю по-французски, но то, что он в основном говорит:

  1. Создайте каталог с именем public в папке вашего проекта django.
  2. В этом каталоге создайте файл django.fcgi со следующим содержимым:

    #!/usr/bin/python
    import os, sys
    
    _PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0, _PROJECT_DIR)
    sys.path.insert(0, os.path.dirname(_PROJECT_DIR))
    
    _PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
    os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME
    
    from django.core.servers.fastcgi import runfastcgi
    runfastcgi(method="threaded", daemonize="false")
    
  3. Затем создайте .htaccess в папке public со следующим содержимым:

    AddHandler fcgid-script .fcgi
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
    
  4. Если вы планируете включить интерфейс администратора django, создайте эту символическую ссылку в каталоге public:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media
    
  5. В итоге иерархия дерева папок должна выглядеть примерно так:

    myproject/
        __init__.py
        manage.py
        public/
            django.fcgi
            .htaccess
            media/
        settings.py
        urls.py
        myapp/
            views.py
            models.py
    

Надеюсь, это поможет. Я поговорил с администратором, и он сказал, что скоро предоставит английскую вики. Будем надеяться, что это произойдет в ближайшее время.


ОБНОВЛЕНИЕ: В настоящее время существует статья на английском вики.

6 голосов
/ 23 декабря 2009

Вы пытаетесь смешать два разных метода интеграции с веб-сервером: fcgi (fast cgi) и wsgi.

Ваш первый фрагмент предназначен для интерфейса wsgi с веб-сервером и является рекомендуемым методом интеграции Django с Apache. Очень хорошие ресурсы (включая примеры), которые помогут вам правильно настроить это, можно найти в официальных документах Django Как использовать Django с Apache и mod_wsgi и документах mod_wsgi Интеграция с Django

Второй фрагмент (со строкой AddHandler) предназначен для fcgi. Этот тип интерфейса чаще используется для взаимодействия Django с веб-серверами lighttpd и nginx. Ресурсы для настройки интерфейса fcgi можно найти в официальных документах Django Как использовать Django с FastCGI, SCGI или AJP .

Так как это выглядит как alwaysdata.com использует только интерфейс FastCGI (fcgi), вы застряли с этим методом. Похоже, на их вики-странице есть примеры Déployer и приложения Django , и, в частности, вам нужно заменить свой первый (wsgi) фрагмент на следующий:

#!/usr/bin/python
import os, sys

_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _PROJECT_DIR)
sys.path.insert(0, os.path.dirname(_PROJECT_DIR))

_PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
2 голосов
/ 27 марта 2015

Мы получили (через пару месяцев) статью на английском: Django на alwaysdata.com

С уважением,

...