Деплой Django Apache Linux

Деплоим Pyhton3-Django приложение на Apache

Если вы когда-нибудь разрабатывали приложение на Python с использованием фреймворка Django, то наверняка оценили удобный для разработки веб-сервер идущий в комплекте с фреймворком. Но к сожалению как признаются сами авторы фреймворка Django, что они умеют делать фреймворки, а не веб-серверы. Поэтому публиковать ваше приложение в сети придется с помощью другого более мощного веб-сервера. 

В данной статье мы рассмотрим шаг за шагом разворачивание вашего написанного приложения на веб-сервере Apache.

Стоит отметить тот факт, что у Python на данный момент две используемые ветки, это 3-я и 2.7. Поэтому сразу оговариваем с вами условие, что мы разворачиваем приложение написанное на Python 3 (и выше) и Django версии 1.8.

Ну чтож начнем, все работы мы будем проводить на Ubuntu 14.04.

Для начала нам нужно будет установить PIP для 3-й версии питона и PostgreSQL(именно его рекомендуют использовать разработчики фреймворка в своих приложениях):

sudo apt-get install python3-pip libpq-dev postgresql postgresql-contrib

Затем установим Django и коннектор для питона и PostgreSQL

sudo pip3 install django
sudo pip3 install psycopg2
Далее займемся настройкой PostgreSQL:
Для начала создадим пользователя и базу данных которую будет использовать наше приложение.
sudo su — postgres
psql
CREATE DATABASE имя_базы;
CREATE USER имя_пользоватлея WITH PASSWORD ‘пароль’;
ALTER USER имя_пользоватлея WITH SUPERUSER;
\q
exit
Затем необходимо поправить конфиги PostgreSQL:
(Внимание!!! обратите внимание, что 9.3 в пути — это версия PostgreSQL и у вас она может быть другой!)
sudo nano /etc/postgresql/9.3/main/postgresql.conf
Открыв файл конфигурации нам необходимо раскоментировать строку и поставить ей значение ‘*’:
listen_addresses = ‘*’
Затем выходим из редактора Nano нажатием ctrl+x и на вопрос о сохранение изменением нажимаем Y затем Enter.
Далее нужно настроить конфиг который отвечает за доступ к базе:

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Убеждаемся что есть строка следующего вида: (если есть но с методом отличным от md5(например peer) меняем его на md5)

local   all             all                                     md5

Затем выходим из редактора Nano нажатием ctrl+x и на вопрос о сохранение изменением нажимаем Y затем Enter.

Теперь перезапускаем PostgreSQL:

sudo service postgresql restart

Теперь когда у нас есть установленый python3,django, настроенный postgresql, можно протестировать работу вашего приложения. Скопируйте его в удобную для вас директорию (Например в домашнюю папку текущего пользователя)

Для переноса папки с проектом можете воспользоваться ФТП клиентом. Если у вас не настроен фтп на сервере с Ubuntu, то следующие строки посвящены вам =)

ставим фтп:

sudo apt-get install vsftpd  
sudo nano /etc/vsftpd.conf:
включаем возможность записи
write_enable=YES
после чего перезапустите vsftpd:
sudo service vsftpd restart

После того как вы залили свой готовый проект в домашнюю папку текущего пользователя, вам необходимо будет поправить Settings.py вашего проекта. А именно добавить в него строку:

 STATIC_ROOT = os.path.join(BASE_DIR, «static/»)

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

DATABASES = { ‘default’:

{ ‘ENGINE’: ‘django.db.backends.postgresql_psycopg2’,

‘NAME’: ‘имя_созданной_бд’,

‘USER’: ‘пользователь’,

‘PASSWORD’: ‘пароль_пользователя_бд’,

‘HOST’: », # Можно не указывать если бд находится на локалхосте.

‘PORT’: », # Можно не указывать если бд находится на локалхосте.

}

                       }

После того как файл settings.py будет приведен в порядок выполните команду

python3 manage.py collectstatic

Эта команда соберет все статические файлы используемые в проекте в одном месте (Это нам очень поможет при настройке Apache)

Теперь попробуйте запустить проект с помощью команды:

python3 manage.py runserver 0.0.0.0:8000

убеждаемся что приложение доступно и корректно работает.

Теперь установим апач и mod-wsgi для 3-го питона:
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi-py3
затем нужно будет добавить конфиг в sites-enabled Апача
Конфиг имеет приблизительно следующий вид:

WSGIPythonPath /home/user/projectname

<VirtualHost *:80>

WSGIScriptAlias / /home/user/projectname/projectname/wsgi.py

Alias /static/ /home/user/projectname/static/

#ServerName www.example.com

ServerAdmin user@something.com

<Directory /home/user/projectname/projectname>

<Files wsgi.py>

Require all granted

</Files>

</Directory>

<Directory /home/user/projectname/static>

Require all granted

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

 

</VirtualHost>

После этого переходим в домашнюю папку текущего пользователя
cd ~
И меняем права папке с проектом
chmod -R 755 porojectname
После этого перезапускаем Апач:
sudo service apache2 restart
Вот и все, теперь ваше приложение работает на веб-сервере Apache.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *