FreeBSD 9 + Cherokee / uWSGI + PINAX
В данном топике рассмотрим такую интересную вещь, как Pinax — заготовку для создания сайтов на базе фреймворка Django (шаблонизатор, основные функции, web-сервер для тестировния), работающего в свою очередь на Python. Особенность Pinax в том, что нам предлагается не готовая CMS, а заготовки для разных типов проектов. Тут и регистрация пользователей с поддержкой openid и топики и комментарии и блоги, сообщества, твиты, галереи, теги и прочее. Для всего этого уже готова структура базы данных.
Начнем со сборки Cherokee из портов:
Не забываем отметить галку uWSGI:
Будет собран Python:
Устанавливаем pip для удобной установки пакетов Python:
Также для начала нам не помешает поддержка sqlite и imaging:
Устанавливаем virtualenv, с помощью которого мы создадим виртуальное окружение для нашего проекта, python с библиотеками будет располагаться в отдельной директории, эдакий jail:
Для работы с виртуальным окружением желателен bash, в дальнейшем будем использовать его:
Создадим виртуальное окружение и перейдем в него:
Устанавливаем Pinax внутри нашего виртуального окружения:
Просмотреть список заготовок проектов можно так:
Создаем из шаблона social:
При этом будет скачан Django и куча дополнений к нему согласно шаблону.
Открываем директорию с нашим новым проектом, создаем базу данных (будет использована sqlite) и запускаем web-сервер Django:
Веб сервер будет работать на 127.0.0.1, порт 8000.
Можно запустить на всех интерфейсах, чтобы был доступ со внешки:
В шаблоне social мы видим готовую регистрацию, админку, твиты, топики, сообщества и многое другое:
Шаблон company — минималистичная CMS для создания сайта компании с редко обновляемым статическим контентом:
Шаблон code — для сайтов, посвященных программным продуктам. Тут есть wiki и топики:
Список заготовок этим не заканчивается.
Теперь настроим работу нашего проекта на Pinax через Cherokee.
Сначала мы должны будем перенести директории с нашим проектом mysite и виртуальное окружение mysite-env в директорию, доступную для Cherokee. Кроме того, uWSGI будет стартовать от пользователя и группы www, соответственно должны быть выставлены права в данных директориях.
Строка запуска uWSGI выглядит примерно так:
Т.е. uWSGI, запускаемый от имени пользователя www запускает в виртуальном окружении /usr/local/www/mysite-env/ скрипт /usr/local/www/mysite/deploy/pinax.wsgi, с которого все и начинается.
Также нам возможно понадобится в settings.py прописать абсолютный путь к базе данный sqlite:
Пример настроек Cherokee — правила виртуального хоста:
Настройка «Information Sources»
Фактически, все делается как и в случае с FastCGI — стартует несколько процессов, Cherokee передает им http запросы и возвращает ответы. Cherokee отвечает за балансировку нагрузки, при желании обслуживает статический контент, что очень предпочтительно.
Почитать:
www.slideshare.net/pydanny/pinax-long-tutorial-slides
Начнем со сборки Cherokee из портов:
cd /usr/ports/www/cherokee
make install
Не забываем отметить галку uWSGI:
Будет собран Python:
Устанавливаем pip для удобной установки пакетов Python:
cd /usr/ports/devel/py-pip
make install
Также для начала нам не помешает поддержка sqlite и imaging:
cd /usr/ports/databases/py-sqlite3
make install
cd /usr/ports/graphics/py-imaging
make install
Устанавливаем virtualenv, с помощью которого мы создадим виртуальное окружение для нашего проекта, python с библиотеками будет располагаться в отдельной директории, эдакий jail:
/usr/local/bin/pip install virtualenv
Для работы с виртуальным окружением желателен bash, в дальнейшем будем использовать его:
cd /usr/ports/shells/bash
make install
/usr/local/bin/bash
Создадим виртуальное окружение и перейдем в него:
virtualenv mysite-env
source mysite-env/bin/activate
Устанавливаем Pinax внутри нашего виртуального окружения:
pip install Pinax
Просмотреть список заготовок проектов можно так:
pinax-admin setup_project -l
Создаем из шаблона social:
pinax-admin setup_project -b social mysite
При этом будет скачан Django и куча дополнений к нему согласно шаблону.
Открываем директорию с нашим новым проектом, создаем базу данных (будет использована sqlite) и запускаем web-сервер Django:
cd mysite
python manage.py syncdb
python manage.py runserver
Веб сервер будет работать на 127.0.0.1, порт 8000.
Можно запустить на всех интерфейсах, чтобы был доступ со внешки:
python manage.py runserver 0.0.0.0:8000
В шаблоне social мы видим готовую регистрацию, админку, твиты, топики, сообщества и многое другое:
Шаблон company — минималистичная CMS для создания сайта компании с редко обновляемым статическим контентом:
Шаблон code — для сайтов, посвященных программным продуктам. Тут есть wiki и топики:
Список заготовок этим не заканчивается.
Теперь настроим работу нашего проекта на Pinax через Cherokee.
Сначала мы должны будем перенести директории с нашим проектом mysite и виртуальное окружение mysite-env в директорию, доступную для Cherokee. Кроме того, uWSGI будет стартовать от пользователя и группы www, соответственно должны быть выставлены права в данных директориях.
Строка запуска uWSGI выглядит примерно так:
/usr/local/bin/uwsgi -s 127.0.0.1:62789 -M -p 2 -z 15 -L -l 128 --virtualenv /usr/local/www/mysite-env/ /usr/local/www/mysite/deploy/pinax.wsgi
Т.е. uWSGI, запускаемый от имени пользователя www запускает в виртуальном окружении /usr/local/www/mysite-env/ скрипт /usr/local/www/mysite/deploy/pinax.wsgi, с которого все и начинается.
Также нам возможно понадобится в settings.py прописать абсолютный путь к базе данный sqlite:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3", # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
"NAME": "/usr/local/www/mysite/dev.db", # Or path to database file if using sqlite3.
"USER": "", # Not used with sqlite3.
"PASSWORD": "", # Not used with sqlite3.
"HOST": "", # Set to empty string for localhost. Not used with sqlite3.
"PORT": "", # Set to empty string for default. Not used with sqlite3.
}
}
Пример настроек Cherokee — правила виртуального хоста:
Настройка «Information Sources»
Фактически, все делается как и в случае с FastCGI — стартует несколько процессов, Cherokee передает им http запросы и возвращает ответы. Cherokee отвечает за балансировку нагрузки, при желании обслуживает статический контент, что очень предпочтительно.
Почитать:
www.slideshare.net/pydanny/pinax-long-tutorial-slides
- —
- 25 ноября 2011, 17:04
Комментарии (1)
RSS свернуть / развернутьИнтересно, пробовал ли кто-нибудь ли писать скрипты для FastCGI на bash? По-моему, это возможно.
yababay
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.