Как можно развернуть проекты Django с минимальными затратами на установку? - PullRequest
3 голосов
/ 22 августа 2009

Чтобы развернуть сайт с Python / Django / MySQL, мне пришлось сделать это на сервере (RedHat Linux):

  • Установить MySQLPython
  • Установить ModPython
  • Установить Django (используя python setup.py install )
  • Добавить некоторые директивы в файл httpd.conf (или использовать .htaccess)

Но, когда я развернул другой сайт с PHP (используя CodeIgniter), мне не пришлось ничего делать. Я столкнулся с некоторыми проблемами при развертывании проекта Django на общем сервере. Теперь мои вопросы:

  • Можно ли упростить процесс развертывания проекта Django?
  • Я слишком много делаю?
  • Можно ли пропустить некоторые шаги?
  • Как лучше всего развернуть сайт django на общем сервере?

Ответы [ 7 ]

4 голосов
/ 22 августа 2009

Чтобы включить легкое развертывание Django, я бы сделал следующее:

Конфигурация сервера первого времени

  • Установка mod_wsgi , позволяющая запускать в режиме внедренный ИЛИ в режиме демон .
  • Установите Python и virtualenv

В вашей среде разработки

  • Используйте virtualenv. Взгляните на mod_wsgi и конфигурацию virtualenv
  • Установите Django вашу версию django (используя python setup.py install)
  • Установите свои библиотеки Python
  • Разработайте свой проект

Каждый раз, когда вы хотите развернуть

  • Скопируйте вашу виртуальную среду на рабочий сервер
  • Просто добавьте директиву Include в файле httpd.conf (или используйте .htaccess) в конфигурацию apache вашего проекта. Как указано в интеграции mod_wsgi с документацией django , одним из примеров того, как можно настроить файл, включенный в Apache, будет:

</p> <pre><code>Alias /media/ /usr/local/django/mysite/media/ <Directory /usr/local/django/mysite/media> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi <Directory /usr/local/django/mysite/apache> Order deny,allow Allow from all </Directory>

Автоматизация развертывания

  • Я бы рассмотрел использование Fabric для автоматизации развертывания
3 голосов
/ 22 августа 2009

Можно ли упростить процесс развертывания проекта django?

Нет. Вы можете написать это, если хотите. Однако вы никогда не собираетесь снова устанавливать MySQL, MySQLPuthon, mod_wsgi (или mod_python) или Django.

Тем не менее, вы будете постоянно подстраивать ваше приложение.

Я слишком много делаю?

Нет. Python (и Django) не являются частью Apache. PHP встроен в Apache. PHP в точности как mod_python (или mod_wsgi). Всего один кусок пирога. (Очевидно, некоторые хосты обрабатывают установку PHP для вас, но не обрабатывают установку mod_wsgi или mod_python.)

Можно ли пропустить некоторые шаги?

Нет. Однако вы делаете это только один раз.

Как лучше всего развернуть сайт django на общем сервере?

Вы делаете это правильно.

Когда я развернул другой сайт с php (используя CodeIgniter), мне не пришлось ничего делать

Конечно, несправедливое сравнение. Судя по всему, они уже установили PHP и базу данных для вас. Хороший из них.

Кроме того, PHP не является Python. PHP это плагин для Apache. Python - это «просто» язык программирования, для которого требуется отдельный плагин для Apache (т.е. mod_python или mod_wsgi).

См. Насколько хорошо Python работает с HTML по сравнению с PHP?

2 голосов
/ 22 августа 2009

Поддержка хостинга Django не так широко распространена, как для PHP, но есть несколько хороших вариантов. Я могу рекомендовать WebFaction - они предоставляют простую в использовании панель управления, которая предлагает различные комбинации версий Django, версий Python, mod_python, mod_wsgi, MySQL, PostgreSQL и т. Д. Они также являются экономически эффективными. Если вы используете их настройки, вы получаете доступ по SSH, но практически все настройки можно выполнить через их панель управления, кроме фактической загрузки папки вашего проекта.

Отказ от ответственности: кроме того, что я счастливый клиент, я не имею с ними никакой связи.

1 голос
/ 22 августа 2009

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

1 голос
/ 22 августа 2009

Вам не нужно было ничего делать при развертывании сайта PHP, потому что ваш хостинг-провайдер уже установил его. Веб-хосты, которые поддерживают Django, обычно устанавливают и настраивают его для вас.

0 голосов
/ 22 августа 2009

Вы можете использовать Python virtualenv и pip (см. Также « Инструменты современного Python Hacker: Virtualenv, Fabric and Pip »). Я разработал свой проект Django в виртуальной среде. Я копирую файл виртуальной среды на рабочий компьютер при развертывании своего приложения. Я использую mod_wsgi. Вы должны написать это в файле mod_wsig:

import site  
site.addsitedir('C:\PythonVirtualEnv\IntegralEnv\Lib\site-packages') 
0 голосов
/ 22 августа 2009

Большинство сайтов с общим хостингом используют стек LAMP (Linux, Apache, MySQL, PHP), поэтому развертывание - это просто копирование некоторых файлов. Если бы вы использовали одну из PHP-фреймворков, например CakePHP, или что-то, что сервис не установил (например, библиотеку изображений), вы бы также прошли дополнительные этапы развертывания.

С Django (или Rails, или любым другим сложным фреймворком) вы должны самостоятельно настроить стек один раз, и тогда все готово.

Однако вам также следует подумать об обновлении после развертывания. Если это то, что вы собираетесь делать часто, вы можете также изучить Fabric или Capistrano , чтобы помочь автоматизировать это.

P.S. Я поддержу эту рекомендацию WebFaction. Это так же близко к установке одной кнопкой, как я видел. Довольно счастливый клиент, хотя я в основном использую их для тестовых сайтов и прототипирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...