[Из песочницы] Flask + Python3.4 на VPS

Потихоньку изучаю Python, взялся сразу за 3.* версию. Естественно первые эксперименты проводил на локальной машине в сочетании с OpenServer 4.8. Позднее задумался о легком VPS под обучение, доступном из любой точки моего местонахождения.Почему VPS? Потому что повелся на некие российские хостинги, позициирующие себя как Python/Ruby ориентированные. На деле оказалось что действительно подходящий тариф на таком хостинге начинается с ценника в 12$.

Эксперементирую с фреймворком Flask, поэтому статья будет затрагивать основные и самые простые вопросы развертывания рабочего окружения на сервере. Основной вопрос — сделать все максимально просто, на основе того, что уже стоит на сервере.За исходные данные принимаем:

Простой российский VPS за 4$. Сервер Ubuntu версии 13.10 (стоял по умолчанию) Веб-сервер Apache2.4 (аналогично) Интерфейс wsgi Фактически, все уже стоит из коробки и работает. Но моя задача — получить последние версии Python для работы. Использовать бэкпорты не стал — проще оказалось обновить весь сервер до последнего релиза: sudo apt-get update sudo Apt-get upgrade sudo apt-get install update-manager-core sudo do-release-upgrade Обновление элементарное, в процессе отвечаем на редкие вопросы. На весь процесс потрачено около 3-х минут.В итоге получаем последние версии Ubuntu-servera и Python. Веб-сервер у нас уже стоит (Apache), теперь попробуем развернуть веб-приложение с использованием фреймворка Flask.

Устанавливаем необходимый инструментарий для работы (будем устанавливать версии для 2.7 и 3.4 Python):

sudo apt-get install python-pip python-dev build-essential Для удобства использования пакетного менеджера установим его версию для Python 3:

sudo apt-get install python3-pip Теперь ставим сам flask:

sudo pip3 install flask Ставим wsgi именно для Python 3, он заменяет версию для Python 2 и обратно:

sudo apt-get install libapache2-mod-wsgi-py3 На всякий случай если не подключился модуль на автомате:

sudo a2enmod wsgi В общем и целом все — теперь необходимо лишь настроить apache:

Создаем виртуальный хост для нашего приложения на Python (/etc/apache2/sites-avaliable/):

ServerAdmin webmaster@youname.ru ServerName youname.ru ServerAlias www.youname.ru DocumentRoot /var/www/youname

WSGIDaemonProcess flask user=www-data group=www-data processes=2 threads=5 WSGIScriptAlias / /var/www/youname/flaskapp.wsgi

WSGIProcessGroup flask WSGIApplicationGroup %{GLOBAL} Order deny, allow Allow from all

ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Затем создаем файл запуска приложения с расширением wsgi (я создал его в папке с сайтом, можно перемещать по желанию с изменением конфига Apache):

Имя файла: flaskapp.wsgi

import sys sys.path.insert (0, '/var/www/youname) from youname import app as application Там же я создал само приложение, очень простое и бессмысленное:

Имя файла: youname.py

from flask import Flask import sys app = Flask (__name__) @app.route (»/») def hello (): PyVer = »

»+sys.version+»

» return «Hello, I am »+PyVer if __name__ == »__main__»: app.run (host=«xxx.xxx.xxx.xxx») Делаем рестарт апача:

sudo service apache2 restart В результате мы получаем полностью рабочую среду для экспериментов с Flask на Python 3.

© Habrahabr.ru