Я являюсь новым на 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]
Вот запись вики alwaysdata для настройки Django с fastcgi. Только обратная сторона: она написана на французском языке.
Ну, я не говорю по-французски, но в основном там написано:
public
в папке вашего проекта django.В этом каталоге создайте файл 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")
Далее создайте .htaccess в папке public
со следующим содержимым:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
Если вы планируете включить интерфейс администрирования django, создайте эту символическую ссылку в каталоге public
:
ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media/ media
В конце концов иерархия дерева папок должна выглядеть так:
myproject/
Я не знаю...
manage.py
публичный/
джанго.fcgi
хтакесс
СМИ/
настройки.пи
urls.py
мьяп/
views.py
models.py
Надеюсь, это поможет. Я поговорил с администратором, и он сказал, что скоро предоставит английскую вики. Будем надеяться, что это произойдёт в ближайшее время.
UPDATE: Сейчас есть английская вики-статья.
Вы пытаетесь смешать два различных метода интеграции с веб-сервером: 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")