Развёртывание приложения Flask на сервере Ubuntu

Flask – это микрофреймворк для быстрой разработки веб-приложений, написанный в Python и основанный на библиотеке Werkzeug and шаблонизаторе Jinja2.

Примечание: Всё, что нужно ввести самостоятельно или отредактировать, выделено красным. Остальной код можно просто скопировать и вставить.

 

Требования

Для выполнения руководства нужно предварительно установить Apache. Подробнее об этом можно прочесть здесь.

1: Установка и включение mod_wsgi

WSGI (или Web Server Gateway Interface) – это интерфейс взаимодействия веб-серверов и веб-приложений Python. Mod_wsgi – это модуль Apache для обслуживания приложений Flask.

Откройте терминал и введите команду для установки mod_wsgi:

sudo apt-get install libapache2-mod-wsgi python-dev

Чтобы включить mod_wsgi, запустите:

sudo a2enmod wsgi

2: Создание приложения Flask

Теперь нужно создать приложение Flask и поместить его в каталог /var/www.

Перейдите в каталог /var/www:

cd /var/www

Создайте структуру каталогов для приложения при помощи команды mkdir.

Примечание: замените условное имя приложения FlaskApp именем своего приложения.

Создайте исходный каталог при помощи следующей команды:

sudo mkdir FlaskApp

Откройте этот каталог:

cd FlaskApp

Создайте ещё один каталог с именем приложения:

sudo mkdir FlaskApp

Откройте этот каталог и создайте  в нём два подкаталога по имени static и templates:

cd FlaskApp
sudo mkdir static templates

Теперь структура каталога имеет такой вид:

|----FlaskApp
|---------FlaskApp
|--------------static
|--------------templates

Создайте файл __init__.py, в котором будет храниться логика приложения:

sudo nano __init__.py

Внесите в этот файл следующий код:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, I love Digital Ocean!"
if __name__ == "__main__":
app.run()

Сохраните и закройте файл.

3: Установка Flask

Теперь нужно создать виртуальное окружение (virtualenv, или virtual environment), чтобы изолировать приложение и его зависимости от основной системы. Изменения в виртуальном окружении не будут влиять на настройки системы облачного сервера.

Итак, чтобы создать виртуальное окружение для приложения Flask, нужно сначала установить virtualenv и Flask при помощи pip.

Примечание: Если менеджер пакетов pip еще не установлен, установите его при помощи команды:

sudo apt-get install python-pip

Чтобы установить инструмент virtualenv, введите:

sudo pip install virtualenv

При помощи следующей команды можно создать виртуальную среду для приложения (замените условное имя venv именем своей виртуальной среды):

sudo virtualenv venv

Теперь нужно включить виртуальное окружение и установить в него Flask:

source venv/bin/activate
sudo pip install Flask

Используйте следующую команду, чтобы убедиться, что фреймворк установлен успешно и приложение работает должным образом:

sudo python __init__.py

Если всё настроено правильно, на экране должно появиться сообщение:

Running on http://localhost:5000/

или

Running on http://127.0.0.1:5000/

Чтобы отключить виртуальное окружение, используйте команду:

deactivate

4: Настройка виртуального хоста

Введите в терминал:

sudo nano /etc/apache2/sites-available/FlaskApp

Примечание: Более новые версии Ubuntu (13.10+) требуют расширения .conf для файлов хостов; в таком случае запустите команду:

sudo nano /etc/apache2/sites-available/FlaskApp.conf

В этот файл внесите следующий код. В строке ServerName укажите доменное имя или IP-адрес сервера.

<VirtualHost *:80>
ServerName mywebsite.com
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/FlaskApp/static
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните и закройте файл.

Включите виртуальный хост:

sudo a2ensite FlaskApp

5: Создание файла .wsgi

Для обслуживания приложений Flask сервер Apache использует файл .wsgi. перейдите в каталог приложения (/var/www/FlaskApp) и создайте файл flaskapp.wsgi (вместо flaskapp укажите имя своего приложения):

cd /var/www/FlaskApp
sudo nano flaskapp.wsgi

Внесите в файл следующий код:

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
from FlaskApp import app as application
application.secret_key = 'Add your secret key'

На данном этапе структура каталогов имеет такой вид:

|--------FlaskApp
|----------------FlaskApp
|-----------------------static
|-----------------------templates
|-----------------------venv
|-----------------------__init__.py
|----------------flaskapp.wsgi

6: Перезапуск Apache

Перезапустите Apache при помощи следующей команды:

sudo service apache2 restart

На экране может появиться сообщение:

Could not reliably determine the VPS's fully qualified domain name, using 127.0.0.1 for ServerName

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

Приложение flask готово!

Tags: , , , ,

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