Поиск по сайту:

Как развернуть приложение 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-адресу, который вы ввели в конфигурации виртуального хоста.

Вы успешно развернули фляжное приложение.