На виртуальном хостинге используется устаревшая версия Python. Для использования актуальных версий Python мы рекомендуем выбрать Облачный хостинг.
Работа с Django на облачном хостинге описана в отдельной статье.
В данной статье рассмотрена установка микрофреймворка Flask, который позволяет создавать простые сайты на языке Python.
Flask -- это легковесный веб-фреймворк на языке Python.
Flask на хостинге доступен на тарифах Лайт, Стандарт и Профи.
В данной статье будет описываться один из способов запуска фреймворка Flask на хостинге. Выполнение настроек на сервере будет производиться через протокол SSH. Для установки соединения можно воспользоваться программой PUTTY и инструкциями из статьи SSH-доступ.
Авторизовавшись на сервере, мы окажемся в своем домашнем каталоге. Внутри домашнего каталога располагаются каталоги ваших сайтов, а также служебные каталоги bin, etc, log и tmp.
Для облегчения работы с библиотеками и приложениями Python на хостинге мы воспользуемся дополнительным приложением virtualenv, который установлен на всех серверах хостинга. Инструмент virtualenv позволит нам создать собственное изолированное окружение Python:
virtualenv --system-site-packages ~/python
После выполнения указанной выше команды будет создан каталог python
. Его
содержимое выглядит следующим образом:
bin
include
lib
В директории python/bin
находится исполняемый бинарный файл python и
несколько дополнительных скриптов. В python/lib
-- дерево каталогов,
повторяющее оное у текущего установленного python в системе.
Для того чтобы код, написанный на языке python, работал в этом окружении, его
нужно запускать, используя интерпретатор /home/uXXXX/python/bin/python
, или
воспользоваться следующими командами:
source ~/python/bin/activate
echo "source ~/python/bin/activate" >> ~/.bashrc
Если вы уже активировали изолированное окружение, то установка может быть
выполнена с помощью команды pip
:
pip install Flask
Вместе с пакетом Flask будут автоматически установлены пакеты Werkzeug и Jinja2.
Проверьте, импортируется ли модуль flask.
python
>>> import flask
>>> flask.__version__
'0.9'
>>> flask.__file__
'/home/uXXXX/python/local/lib/python2.7/site-packages/flask/__init__.pyc'
Если указанные команды выполняются без ошибок, значит установка Flask на хостинге прошла успешно.
В принципе, не имеет значения, где именно будет расположен проект на Flask. Мы предлагаем расположить его в каталоге с именем сайта.
Проект на Flask может состоять всего из одного файла. Создайте файл
~/sitename.ru/myapp.py
со следующим содержимым (пример скопирован с
официального сайта проекта):
from flask import Flask
app = Flask(__name__)
# Раскомментировать для получения traceback
# app.debug = True
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Поскольку Flask будет работать через интерфейс FastCGI, то для включения соответствующих настроек нам необходимо создать FastCGI-обработчик (враппер):
touch ~/sitename.ru/cgi-bin/flask-wrapper.fcgi && chmod 755 ~/sitename.ru/cgi-bin/flask-wrapper.fcgi
Созданный файл нужно заполнить следующим текстом:
#!/home/uXXXXX/python/bin/python
# -*- coding: utf-8 -*-
import sys, os
# Add a custom Python path.
sys.path.insert(0, "/home/uXXXXX/sitename.ru")
# Switch to the directory of your project. (Optional.)
# os.chdir("/home/uXXXXX/sitename.ru")
from flup.server.fcgi import WSGIServer
from myapp import app
if __name__ == '__main__':
WSGIServer(app).run()
здесь:
uXXXXX
-- имя вашего пользователя на сервере хостингаmyapp
-- название созданного проектаОбратите особое внимание на первую строку:
#!/home/uXXXXX/python/bin/python
Эта строка заставляет работать Python в созданном виртуальном окружении.
Теперь необходимо сообщить веб-серверу Apache о том, что для обработки
поступающих запросов должен использоваться созданный ранее враппер. Создадим
файл .htaccess
в каталоге sitename.ru/www
и запишем в него следующее
указание:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/flask-wrapper.fcgi/$1 [QSA,L]
Обратившись к сайту sitename.ru через браузер, мы должны увидеть приветственное сообщение от Flask. Это означает, что настройки выполнены правильно и можно приступать к работе с проектом.
pkill -u uXXXX -f flask-wrapper.fcgi
app.debug = True