Развертывание Django по alwaysdata.com

Я являюсь новым на django. Я попробовал это, но я не могу развернуться. Как я могу сделать

#!/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]
9
задан gturri 10 July 2017 в 16:23
поделиться

2 ответа

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

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

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

    #!/usr/bin/python
    импорт ош, ош
    
    _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
    
    с django.core.servers.fastcgi импорт runfastcgi
    runfastcgi(метод="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/ media
    
  5. В конце концов иерархия дерева папок должна выглядеть так:

    myproject/
     Я не знаю...
     manage.py
     публичный/
     джанго.fcgi
     хтакесс
     СМИ/
     настройки.пи
     urls.py
     мьяп/
     views.py
     models.py
    

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


UPDATE: Сейчас есть английская вики-статья.

21
ответ дан 4 December 2019 в 07:35
поделиться

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

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

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

Так как выглядит так, что alwaysdata.com использует только интерфейс FastCGI (fcgi), то вы застряли с этим методом. Похоже, что на их вики-странице Déployer une application 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")
6
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: