[Из песочницы] 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/):
WSGIDaemonProcess flask user=www-data group=www-data processes=2 threads=5 WSGIScriptAlias / /var/www/youname/flaskapp.wsgi
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.