Документация проекта “Виртуальная рында”¶
“Виртуальная Рында” - это средство для координации взаимопомощи. Сайт позволяет каждому сообщить о своей беде или желании помочь через различные каналы (Интернет, мобильная связь). Затем такие сообщения систематизируются и наносятся на карту. “Виртуальная рында” написана на python с использованием фреймворка Django.
Содержание:
О проекте¶
Краткое описание проекта
Возможности¶
- Создание и хранение разовых сообщений (просьб о помощи и предложений).
- Отображение сообщений на карте (на главной странице и на странице сообщения).
- Жизненный цикл сообщения (новое - непроверенное - проверенное - закрытое).
- Поиск по просьбам и предложениям - по категориям, типу, содержанию (поиск по тексту сообщения)
- Регистрация на сайте в качестве постоянно действующего волонтера.
- Информационные страницы (можно размещать произвольный текст)
- Новости сайта - можно вести микроблог.
- Интерфейс администратора и модератора, позволяющий полноценно управлять сообщениями и пользователями.
История¶
Деятельность блоггеров и пользователей Рунета во время пожаров лета 2010 года показала огромный потенциал взаимопомощи среди российских граждан в целом и пользователей Интернета в частности. Не менее важно, что для раскрытия этого потенциала необходима единая информационная платформа для координации действий людей, позволяющая сделать оказание помощи более эффективным.
Именно тогда родился наш первый проект, “Карта помощи пострадавшим от пожаров”. Этот сайт стал базой данных, с одной стороны, позволяющей каждому предоставить информацию, а с другой — систематизировать ее согласно актуальности, времени, месту и типу сообщения. Координационный центр, работавший на базе «Карты», позволил значительно повысить эффективность оказания помощи через согласование действий между теми, кто хотел помочь, и теми, кто в помощи нуждался.
Затем была открыта “Карта помощи в холода”. После трагедии в Японии — “Карта радиации”.
Со временем на эти сайты стали приходить сообщения, не связанные с темами пожаров, холодов и техногенных катастроф. Стало очевидно, что нужна единая база, куда человек может обратиться за помощью и советом. Так родилась идея “Виртуальной Рынды”.
Быстрый старт¶
Создаем и активируем virtualenv:
$ virtualenv rynda $ source rynda/bin/activate
Клонируем репозиторий:
$ git clone https://github.com/sarutobi/Rynda.git
Переходим в клонированный репозиторий:
$ cd Rynda
Устанавливаем все зависимости:
$ pip install -r requirements\test.txt
Копируем mysettings.py.example в mysettings.py
Задаем структуру базы данных и пароль суперпользователя:
$ bash createdb.sh
Дважды вводим пароль суперпользователя. Имя суперпользователя по умолчанию: admin
Запускаем локальный сервер:
$ python manage.py runserver
Открываем в браузере http://localhost:8000
Чтобы протестировать систему запускаем:
$ python manage.py test
Установка Рынды в «боевом» режиме¶
Для установки в боевом режиме под веб сервером Apache потребуется установить модуль mod-wsgi. В ОС Debian это можно сделать командой:
$ sudo aptitude install libapache2-mod-wsgi
Примечание
Стоит заметить, что если у вас стоит модуль mpm-itk
, то он может быть причиной того, что модуль mod-wsgi
не будет работать.
Настройки VirtualHost¶
Запуск в режиме демона является рекомендуемым методом запуска mod_wsgi
на не Windows платформах. Чтобы создать процесс, в описание VirtualHost потребуется добавить директивы WSGIDaemonProcess
, WSGIProcessGroup
и WSGIScriptAlias
.
WSGIDaemonProcess - основная директива настройки демона, её формат:
WSGIDaemonProcess имя_процесса processes= threads= python-path=
где:
python-path — это путь к библиотекам виртуального окружения сайта в формате: /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages processes — определяет количество процессов демона, которые должны быть запущены в этой группе процессов, определенной директивой WSGIProcessGroup. По умолчанию (когда кол-во не определено) будет запущен только один процесс. threads — определяет кол-во потоков для обработки запросов по каждому из процессов демона внутри группы процессов, определенных директивой WSGIProcessGroup.
WSGIProcessGroup - группирует процессы демона:
WSGIProcessGroup имя_процесса
WSGIScriptAlias - местоположение скрипта, обрабатывающего запросы к приложению:
WSGIScriptAlias site_root /path/to/mysite.com/wsgi.py
Пример:
<Directory /path/to/mysite.com/mysite/Rynda/scripts>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Примечание
если вы используете Apache версии 2.4 или старее, замените одну строку Require all granted
на
Order deny, allow
Allow from all
Настройки обработки статических файлов¶
В отличие от сайтов, написанных на php, Django не обрабатывает статические файлы (изображения, таблицы стилей, скрипты). Их обработка должна настраиваться отдельно.
Для сервера Apache:
Аlias /static/ /path/to/mysite.com/static
Для сервера nginx:
location /static {alias /path/to/mysite.com/static; }
Примечание
рекомендуется использовать nginx в качестве backend’a для раздачи статических файлов, так как он делает это более эффективно, нежели Apache
Теперь запустим команду по сбору статических файлов, которая в автоматическом режиме разместит все статические файлы в правильном месте:
./manage.py collectstatic
Пример описания виртуального хоста для Apache¶
<Directory /path/to/my/site/www/demo.openrynda.com/Rynda/rynda/Rynda>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
<VirtualHost 1.2.3.4:81 >
ServerName demo.openrynda.com
DocumentRoot /path/to/my/site/www/demo.openrynda.com
WSGIDaemonProcess openrynda processes=5 threads=1 python-path=/path/to/my/site/www/demo.openrynda.com/Rynda:/path/to/my/site/www/demo.openrynda.com/rynda/lib/python2.7/site-packages:/path/to/my/site/www/demo.openrynda.com/rynda/lib/python2.7/
WSGIProcessGroup openrynda
WSGIScriptAlias / /path/to/my/site/www/demo.openrynda.com/rynda/Rynda/wsgi.py
Аlias /static/ /path/to/my/site/www/demo.openrynda.com/static # расположение статики (при необходимости измените)
ServerAlias www.demo.openrynda.com
</VirtualHost>