...

среда, 7 мая 2014 г.

[Из песочницы] 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/):



<VirtualHost *:80>
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

<Directory //var/www/youname.ru/>
WSGIProcessGroup flask
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Затем создаем файл запуска приложения с расширением 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 = "<h1>"+sys.version+"</h1>"
return "Hello, I am ”+PyVer
if __name__ == "__main__":
app.run(host="xxx.xxx.xxx.xxx")


Делаем рестарт апача:



sudo service apache2 restart


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий