=== Установка BnW на Linux ===
[[../|BnW]] — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться (в частности, данная инструкция гарантированно работает с Debian Wheezy). Мы будем использовать виртуальное окружение [[http://pypi.python.org/pypi/virtualenv/|virtualenv]], которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий.
==== Устанавливаем базовые зависимости ====
||<#FF0000> TODO /!\ Обговорить версии всех необходимых компонентов.||
{{{
% sudo apt-get install python-virtualenv git build-essential python-dev
}}}
~-Примечание: ''build-essential'' и ''python-dev'' нужны для компиляция bson-модуля для ускорения работы txmongo-библиотеки.-~
==== Создаём виртуальное окружение ====
Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/srv/}}}
{{{
% cd $HOME
% virtualenv bnw
% cd bnw; source bin/activate
}}}
==== Устанавливаем библиотеки, получаем код ====
{{{
% mkdir src; cd src
% pip install twisted tornado PyRSS2Gen
% pip install -e git+https://github.com/fiorix/mongo-async-python-driver.git#egg=txmongo
% git clone https://github.com/stiletto/bnw.git
% cd bnw; git clone https://github.com/stiletto/linkshit.git
}}}
Шаблон конфига находится в файле {{{config.py.example}}}, копируем его:<
>
{{{
% cp config.py.example config.py
}}}
==== Устанавливаем и настраиваем MongoDB ====
{{{
% sudo apt-get install mongodb-server
}}}
И, в принципе, всё, но желательно ещё проделать следующее:
* Установите в файле {{{/etc/mongodb.conf}}} опции {{{bind_ip = 127.0.0.1}}} и {{{nohttpinterface = true}}}
* Перезапускаем mongo:
{{{
% sudo /etc/init.d/mongodb restart
}}}
* Удаляем тестовые базы:
{{{
% mongo test --eval 'db.dropDatabase()'
% mongo local --eval 'db.dropDatabase()'
}}}
==== Устанавливаем и настраиваем XMPP-сервер ====
Мы рассмотрим prosody, но вы также можете использовать ejabberd или jabberd2, их настройка во многом аналогична. (Вообще, подойдёт любой сервер, поддерживающий [[http://xmpp.org/extensions/xep-0114.html|XEP-0114: Jabber Component Protocol]], но эти три сервера наиболее популярны и просты в использовании.)
Устанавливаем prosody:
{{{
% sudo apt-get install prosody
}}}
Возможны два варианта настройки: локальный сервис, который доступен только вам (например, если нужно протестировать какие-то фичи), или сервис общего пользования.
===== Локальный вариант =====
* Установите в файле {{{/etc/prosody/prosody.cfg.lua}}} в глобальной секции опции:
{{{
c2s_interface = "127.0.0.1"
s2s_interface = "127.0.0.1"
legacy_ssl_interface = "127.0.0.1"
}}}
(Перед строчкой {{{----------- Virtual hosts -----------}}})
* Отредактируйте файл виртуального хоста {{{/etc/prosody/conf.avail/localhost.cfg.lua}}} и добавьте в конец следующие строки:
{{{
Component "bnw.localhost"
component_secret = "пароль авторизации компонента"
}}}
(Вместо {{{bnw}}} вы можете использовать любое имя, главное окончание {{{.localhost}}})
* Перезапускаем prosody:
{{{
% sudo /etc/init.d/prosody restart
}}}
===== Публичный вариант =====
Допустим, компьютер, на котором вы хотите запустить сервис, имеет доменное имя {{{example.com}}}, а сервис будет располагаться по адресу {{{bnw.example.com}}}.
* Создайте файл {{{/etc/prosody/conf.avail/example.com.cfg.lua}}} со следующим содержанием:
{{{
VirtualHost "example.com"
Component "bnw.example.com"
component_secret = "пароль авторизации компонента"
}}}
* Активируем только что созданную конфигурацию, а локальную деактивируем:
{{{
% sudo ln -s ../conf.avail/example.com.cfg.lua /etc/prosody/conf.d/example.com.cfg.lua
% sudo unlink /etc/prosody/conf.d/localhost.cfg.lua
}}}
* Перезапускаем prosody:
{{{
% sudo /etc/init.d/prosody restart
}}}
==== Устанавливаем и настраиваем HTTP-сервер ====
===== Локальный вариант =====
По умолчанию, BnW запускает веб-интерфейс по адресу [[http://localhost:7808/]], дополнительные действия не требуются.
===== Публичный вариант =====
||<#FF0000> TODO /!\ ||
==== Настраиваем сервис ====
Откройте в редакторе файл конфигурации сервиса {{{config.py}}}, который должен находиться в {{{$HOME/bnw/src/bnw/}}}, если вы точно соблюдали инструкции:
* {{{srvc_port}}} — порт, на котором работает XMPP-компонент BnW. В случае prosody надо установить в {{{5347}}}
* {{{srvc_name}}} — имя компонента, {{{bnw.localhost}}} или {{{bnw.example.com}}}, согласно примерам выше.
* {{{srvc_pwd}}} — пароль авторизации компонента, должен совпадать со значением {{{component_secret}}}.
* {{{webui_base}}} — базовая часть URL для формирования ссылок. В случае локального варианта имеет вид {{{localhost:7808}}} (если вы не меняли параметр {{{webui_port}}}) и ссылки, выдаваемые сервисом, будут иметь вид {{{http://localhost:7808/p/0XYNTA}}}. В случае публичного сервиса просто укажите его доменное имя.
* {{{webui_wsbase}}} — базовая часть URL вебсокетов. То же самое, что и для {{{webui_base}}} — {{{localhost:7808}}} или доменное имя в случае публичного варианта.
Остальные опции можно оставить как есть или прочитать к ним комментарии в этом же файле конфигурации.
==== Запускаем сервис ====
Перейдите в каталог сервиса {{{$HOME/bnw/src/bnw/}}} и запустите его с помощью:
{{{
% twistd -ny instance.tac
}}}
Не забудьте, что запускать сервис вы должны из виртуального окружения virtualenv, поэтому если вы открыли новую консоль, то перед запуском сервиса необходима повторная инициализация окружения:
{{{
% source $HOME/bnw/bin/activate
}}}
Такой вариант запуска подходит для отладки, но если вам нужно чтобы сервис запускался в режиме демона с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее:
* Скопируйте шаблон скрипта в системный каталог:
{{{
% sudo cp bnw.init.d.sh /etc/init.d/bnw
}}}
* Отредактируйте переменную {{{BNW_VENV_PATH}}} в этом скрипте по необходимости. Это путь до виртуального окружения virtualenv, в нашем случае {{{$HOME/bnw}}}
* Также по желанию отредактируйте переменные {{{USER}}} и {{{GROUP}}} — от этих пользователя и группы будет запускаться сервис. Системный пользователь и одноимённая группа {{{bnw}}} создаются с помощью команды:
{{{
% sudo adduser --system --no-create-home --group bnw
}}}
* Лог сервиса будет располагаться по адресу {{{/tmp/bnw.log}}}
Теперь вы можете использовать команды:
{{{
% sudo /etc/init.d/bnw start
% sudo /etc/init.d/bnw stop
% sudo /etc/init.d/bnw restart
}}}
для запуска, остановки и перезагрузки сервиса соответственно. При данном варианте инициализация окружения не требуется, скрипт об этом позаботится сам.
Чтобы сервис запускался при старте компьютера, выполните команду:<
>
{{{
% sudo update-rc.d bnw defaults
}}}
Чтобы отменить это действие:<
>
{{{
% sudo update-rc.d -f bnw remove
}}}
==== Прочее ====
Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов:
{{{
% sudo /etc/init.d/server_name start
}}}