Использование 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

Установка

  1. Создаем в домашней директории директорию packages:
    [user@babylon] ~$ mkdir ~/packages
    
  2. Копируем необходимые пакеты с локальной машины в созданную директорию packages (например, при помощи FTP-клиента).
  3. В public_html директории Вашего WSGI-сайта создаем файл .htaccess следующего содержания:
    RewriteEngine On
    RewriteRule ^(.*)$ /webapp/$1 [L,QSA]
  4. На локальной машине создаем конфигурационный файл вашего проекта (для проекта под названием myapp) командой:
    [user@babylon] ~$ paster make-config myapp production.ini
    
    ВАЖНО - параметр отладки должен быть отключен:
    set debug = false
  5. Всю директорию проекта myapp переносим на сервер (например, в директорию ~/myapp)
  6. Настраиваем 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 - это Ваш логин на хостинге.
  7. Посещаем свою страницу и видим работающее приложение myapp

© 2006 — ООО «Дремучий лес»
Служба техподдержки: support@diphost.ru
Политика обработки персональных данных Отзывы о хостинге diphost.ru Отзывы на hostobzor.ru