http://habrahabr.ru/post/222069/
Потихоньку изучаю 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.