Использование Pylons
Данное руководство не является документацией по web-фреймворку Pylons.
Предполагается, что пользователь данного фреймворка знаком с его основами.
Кроме того, в качестве ORM используется SQLAlchemy. Ввиду того, что это,
по-видимому, наиболее популярный и многофункциональный ORM для python,
возможность его использования для web-приложений является весьма
привлекательной.
Кроме того, данное руководство описывает только процесс запуска pylons-проекта
на хостинге. Создание egg-файлов, документации и т.п. не описывается.
Версии
Используется Pylons 0.9.7 и все идущие вместе с фреймворком пакеты,
которые устанавливаются на локальный компьютер при помощи утилиты easy_install. Например, все верно
для версий:
- beaker-1.3-py2.5
- decorator-3.0.0-py2.5
- formencode-1.2.1-py2.5
- mako-0.2.4-py2.5
- nose-0.10.4-py2.5
- paste-1.7.2-py2.5
- pastedeploy-1.3.3-py2.5
- pastescript-1.7.3-py2.5
- Pygments-1.0-py2.5
- pylons-0.9.7-py2.5
- routes-1.10.3-py2.5
- weberror-0.10.1-py2.5
- webhelpers-0.6.4-py2.5
- simplejson-2.0.8-py2.5-win32
- tempita-0.2-py2.5
- webob-0.9.6.1-py2.5
- webtest-1.1-py2.5
- sqlalchemy-0.5.0-py2.5
- pysqlite2
Установка
- Создаем в домашней директории директорию packages:
[user@babylon] ~$ mkdir ~/packages
- Копируем необходимые пакеты с локальной машины в созданную директорию packages (например, при помощи FTP-клиента).
- В public_html директории Вашего WSGI-сайта создаем файл .htaccess следующего содержания:
RewriteEngine On
RewriteRule ^(.*)$ /webapp/$1 [L,QSA]
- На локальной машине создаем конфигурационный файл вашего проекта (для проекта под названием myapp) командой:
[user@babylon] ~$ paster make-config myapp production.ini
ВАЖНО - параметр отладки должен быть отключен:
set debug = false
- Всю директорию проекта myapp переносим на сервер (например, в директорию ~/myapp)
- Настраиваем WSGI-коннектор на хостинге:
В файл webapp.wsgi в директории webapp вашего WSGI-сайт пишем следующее:
# -*- coding: utf-8 -*-
import sys, os
# Путь к директории пользователя
prefix = os.path.abspath('~/')
# Делаем нужные пакеты видимыми для интерпретатора
sys.path.insert(0, prefix + 'packages/beaker-1.3-py2.5.egg')
sys.path.insert(0, prefix + 'packages/decorator-3.0.0-py2.5.egg')
sys.path.insert(0, prefix + 'packages/formencode-1.2.1-py2.5.egg')
sys.path.insert(0, prefix + 'packages/mako-0.2.4-py2.5.egg')
sys.path.insert(0, prefix + 'packages/nose-0.10.4-py2.5.egg')
sys.path.insert(0, prefix + 'packages/paste-1.7.2-py2.5.egg')
sys.path.insert(0, prefix + 'packages/pastedeploy-1.3.3-py2.5.egg')
sys.path.insert(0, prefix + 'packages/pastescript-1.7.3-py2.5.egg')
sys.path.insert(0, prefix + 'packages/Pygments-1.0-py2.5.egg')
sys.path.insert(0, prefix + '/packages/pylons-0.9.7-py2.5.egg')
sys.path.insert(0, prefix + 'packages/routes-1.10.3-py2.5.egg')
sys.path.insert(0, prefix + 'packages/sqlalchemy-0.5.0rc1-py2.5.egg')
sys.path.insert(0, prefix + 'packages/weberror-0.10.1-py2.5.egg')
sys.path.insert(0, prefix + 'packages/webhelpers-0.6.4-py2.5.egg')
sys.path.insert(0, prefix + 'packages/simplejson-2.0.8-py2.5-win32.egg')
sys.path.insert(0, prefix + 'packages/tempita-0.2-py2.5.egg')
sys.path.insert(0, prefix + 'packages/webob-0.9.6.1-py2.5.egg')
sys.path.insert(0, prefix + 'packages/webtest-1.1-py2.5.egg')
sys.path.insert(0, prefix + 'myapp/')
os.environ['PYTHON_EGG_CACHE']= prefix + 'myapp/python-eggs'
# Запуск wsgi приложения
from paste.deploy import loadapp
application = loadapp("config:" + prefix + "myapp/production.ini")
Где username - это Ваш логин на хостинге.
- Посещаем свою страницу и видим работающее приложение myapp
|