Развёртывание приложения Flask на сервере Ubuntu
Python, 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: Apache, Flask, mod_wsgi, pip, WSGI