Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Настраиваем Django 1.6 с python 3.3 под Apache2 на Ubuntu 12.04 Server

Anna | 16.06.2014 | нет комментариев
Приятного времени суток!
Появилась надобность настроить на своём сервере с PHP под Apache поддержку Django. Думал это будет не трудно и всё пройдёт как по маслу, но получилось не вовсе так. Дело в том, что я решил настроить последнюю версию фраемворка с помощью третьего питона. Здесь то и начали всплывать подводные камни.

Основные возникшие задачи:
  • Версия питона на Ubuntu Server 12.04 — 2.7, а мне хотелось применять третью версию
  • Django поддерживает версию питона начиная с 3.2, в то время как mod_wsgi в стабильной версии не поддерживает версию 3.2
  • Неимение полного начальства для решению этих задач

Собственно в основном из-за третьего пункта я и провозился довольно длинное время и позднее решил написать эту статью.

Приступим

Сразу скажу, что я исхожу из того, что apache2 и PHP теснее стоит на сервере. Мы лишь добавляем функциональность к тому, что у нас теснее есть.

Для начала я для себя решил, что не нехорошо бы поставить самую последнюю версию питона — 3.3 (данный сервер огромнее для учебных целей, а учиться хочется на всём самом новом), но в Ubuntu 12.04 по умолчанию дозволено поставить только 3.2. Для того, Дабы добавить поддержку последней версии добавим новейший репозиторий:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update

Устанавливаем питон 3.3 и питон 3.3-dev (он нам потребуется для компиляции mod_wsgi чуть позднее):

sudo apt-get install python3.3
sudo apt-get install python3.3-dev

Дальнейшим шагом установим mod_wsgi, он необходим для связки питона и apache. Нам не подойдёт имеющийся в дистрибутиве, доступный по команде aptitude, так как он не поддерживает питон версии 3.3. Но разработчики модуля работают над этим и в репозитории теснее есть нужный код, так что нам остаётся только собрать последнюю версию из исходников и добавить при компиляции адрес до только что установленного питона:

hg clone https://code.google.com/p/modwsgi/
cd ./modwsgi/mod_wsgi
./configure --with-python=/usr/bin/python3.3
make
sudo make install

Сейчас переходим к установке Django 1.6. Нам опять не подходит установка из репозитория, так как там версия 1.3, что крепко поменьше, чем 1.6 и, к тому же, не поддерживает питон 3, так что опять устанавливаем не на прямую:

wget https://www.djangoproject.com/download/1.6/tarball/
tar xzvf index.html
cd Django-1.6
sudo python setup.py install

И так, сейчас у нас есть предустановленный apache, установлен конечный питон, джанго и сейчас нам осталось всё это сконфигурировать. Для начала сотворим папку для нашего сайта и джанго приложение:

mkdir  -p ~/public_html/domain1.com
cd ~/public_html/domain1.com
django-admin.py startproject MyProject
Создаём virtual host и WSGI файл

Создаём virtual host:

sudo nano /etc/apache2/sites-available/domain1.com

Внутри этого файла пишем:

<VirtualHost *:80>
        ServerName domain1.com
        ServerAlias www.domain1.com
        WSGIScriptAlias / /home/username/public_html/domain1.com/MyProject.wsgi
</VirtualHost>

Создаём WSGI файл:

nano ~/public_html/domain1.com/MyProject.wsgi

Записываем настройки для нашего сайта:

import os
import sys	
sys.path.append('~/public_html/domain1.com/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'MyProject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Настройка апача

Сейчас необходимо отредактировать файл httpd.conf:

sudo nano /etc/apache2/httpd.conf

Пишем в него:

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

WSGIScriptAlias / /home/username/public_html/domain1.com/MyProject/MyProject/wsgi.py
WSGIPythonPath /home/username/public_html/domain1.com/MyProject

<Directory /home/username/public_html/domain1.com>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
Примерно готово

Включаем virtual host, перезагружаем апач:

sudo a2ensite domain1.com
sudo service apache2 restart

Теперь ваш новейший сайт должен запуститься и счастливо вам известить, что: «It worked!», и: «Of course, you haven’t actually done any work yet. Next, start your first app by running python manage.py startapp [appname].».

Вот и всё! Верю у вас это получится значительно стремительней, чем получилось у меня. Славного кодинга!

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB