Как развернуть приложение Flask на Ubuntu VPS
Что означает выделение
Строки, которые пользователь должен ввести или настроить, будут выделены в этом руководстве! Остальное в основном должно быть доступно для копирования и вставки.
Введение
Flask — это микрофреймворк, написанный на Python и основанный на механизме шаблонов Werkzeug и Jinja2 для разработки веб-приложений. Он предназначен для быстрой разработки веб-приложений.
Настраивать
У вас должен быть уже установлен и запущен Apache на вашем VPS. Если это не так, следуйте первому шагу нашей статьи об установке стека LAMP в Ubuntu.
Шаг первый — установите и включите mod_wsgi
WSGI (Интерфейс шлюза веб-сервера) — это интерфейс между веб-серверами и веб-приложениями для Python. Mod_wsgi — это мод HTTP-сервера Apache, который позволяет Apache обслуживать приложения Flask.
Откройте терминал и введите следующую команду для установки mod_wsgi:
sudo apt-get install libapache2-mod-wsgi python-dev
Чтобы включить mod_wsgi, выполните следующую команду:
sudo a2enmod wsgi
Шаг второй — создание приложения Flask
На этом этапе мы создадим фляжное приложение. Мы поместим наше приложение в каталог /var/www.
Используйте следующую команду для перехода в каталог /var/www:
cd /var/www
Создайте структуру каталогов приложения, используя mkdir, как показано. Замените \FlaskApp\ именем, которое вы хотели бы дать своему приложению. Создайте начальный каталог FlaskApp, введя следующую команду:
sudo mkdir FlaskApp
Переместитесь внутрь этого каталога с помощью следующей команды:
cd FlaskApp
Создайте другой каталог FlaskApp, введя следующую команду:
sudo mkdir FlaskApp
Затем перейдите внутрь этого каталога и создайте два подкаталога с именами static и templates, используя следующие команды:
cd FlaskApp sudo mkdir static templates
Теперь ваша структура каталогов должна выглядеть так:
|----FlaskApp |---------FlaskApp |--------------static |--------------templates
Теперь создайте файл __init__.py, который будет содержать логику приложения flask.
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()
Сохраните и закройте файл.
Шаг третий — установить Flask
Настройка виртуальной среды позволит изолировать приложение и его зависимости от основной системы. Изменения в нем не повлияют на системные конфигурации облачных серверов.
На этом этапе мы создадим виртуальную среду для нашего фляжного приложения.
Мы будем использовать pip для установки virtualenv и Flask. Если pip не установлен, установите его в Ubuntu через apt-get.
sudo apt-get install python-pip
Если virtualenv не установлен, используйте pip для его установки с помощью следующей команды:
sudo pip install virtualenv
Введите следующую команду (где venv — это имя, которое вы хотите присвоить своей временной среде):
sudo virtualenv venv
Теперь установите Flask в этой среде, активировав виртуальную среду с помощью следующей команды:
source venv/bin/activate
Дайте эту команду, чтобы установить Flask внутри:
sudo pip install Flask
Затем выполните следующую команду, чтобы проверить, успешно ли прошла установка и работает ли приложение:
sudo python __init__.py
Оно должно отображать \Работает на http://localhost:5000/ или \Работает на http://127.0.0.1:5000/\. Если вы видите это сообщение, вы успешно настроили приложение.
Чтобы деактивировать среду, дайте следующую команду:
deactivate
Шаг четвертый — настроить и включить новый виртуальный хост
Выполните следующую команду в своем терминале:
sudo nano /etc/apache2/sites-available/FlaskApp
ПРИМЕЧАНИЕ. Более новые версии Ubuntu (13.10+) требуют расширения \.conf\ для файлов VirtualHost — вместо этого выполните следующую команду:
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
Шаг пятый — создайте файл .wsgi
Apache использует файл .wsgi для обслуживания приложения Flask. Перейдите в каталог /var/www/FlaskApp и создайте файл с именем flaskapp.wsgi со следующими командами:
cd /var/www/FlaskApp sudo nano flaskapp.wsgi
Добавьте следующие строки кода в файл 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
Шаг шестой — перезапустите 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-адресу, который вы ввели в конфигурации виртуального хоста.
Вы успешно развернули фляжное приложение.