Установка Django 1.6 + Apache 2 + mod_wsgi на Ubuntu

  • 4 года назад

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

Вы перечитали кучу мануалов, перепробовали всё на свете, но так и не получили работающее приложение. Если вы попали в такую непростую ситуацию, то эта статья расскажет вам, как установить и настроить Django 1.6 с веб-сервером Apache 2 и операционной системой Ubuntu.

Установка ПО

В данной статье в качестве продуктового сервера мы будем использовать Ubuntu 12. Если ещё у вас нет сервера, то создайте его (например в DigitalOcean), затем войдите на сервер по ssh и выполните команды (если у вас уже есть сервер с настроенными приложениями, то пропустите этот шаг):

~~~{.sh} sudo apt-get update sudo apt-get upgrade


После обновления системы, установите python и менеджер пакетов **pip**, мы будем использовать версию питона 2.7 (В Ubuntu 12 она установлена по умолчанию):

~~~{.sh}
sudo apt-get install python-pip python-dev build-essential 
sudo pip install --upgrade pip

Теперь установите веб-сервер Apache 2 и модуль mod_wsgi и git:

~~~{.sh} sudo apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert git-core sudo apt-get install libapache2-mod-wsgi


А теперь перейдите в директорию `/var/www` и склонируйте ваш проект из git репозитория (или загрузите его другим удобным для вас способом).

~~~{.sh}
cd /var/www
git clone https://github.com/exampe/example_com.git

После того как вы выполните эти команды, будет создана директория /var/www/example_com, это будет корневая директория вашего проекта. Теперь нужно настроить виртальный хост Apache.

~~~{.sh} sudo nano /etc/apache2/sites-available/example.com


И добавляем туда следующий код:

~~~{.apache}
<VirtualHost *:80>
    ServerName example.com

    WSGIDaemonProcess example_com processes=2 threads=15 display-name=%{GROUP} python-path=/var/www/example_com
    WSGIProcessGroup example_com

    WSGIScriptAlias / /var/www/example_com/example_com/wsgi.py

    <Directory /var/www/example_com/example_com>
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn

    Alias /static/ /var/www/example_com/static/
    <Directory /var/www/example_com/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

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

~~~{.sh} pip install django


pip install ... и другие библиотеки, которые используются в вашем приложении

~~~{.sh}
sudo a2ensite example.com
sudo service apache2 restart

Ещё немного настроек

Думаю, что ваше приложение будет отправлять электронную почту, например при регистрации пользователей, и для этого необходимо установить sendmail, делается это просто:

~~~{.sh} sudo apt-get install sendmail


Настройки в вашем приложении (example_com.settings.py) для отправки почты, должны быть такие:

~~~{.python}
DEFAULT_FROM_EMAIL = 'noreply@example.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_USE_TLS = True

Вот примерно и всё что нужно, для базовой настройки django проекта на боевом сервере.