=== Установка BnW на Linux === [[../|BnW]] — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться, в частности, данная инструкция гарантированно работает с Debian Wheezy. (Если у вас совсем другой дистрибутив, посмотрите [[https://raw.github.com/stiletto/bnw/master/Makefile|Makefile]] и действуйте согласно его специфике.) Мы будем использовать виртуальное окружение [[http://pypi.python.org/pypi/virtualenv/|virtualenv]], которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий. ==== Получаем код ==== Вначале установите git, если у вас его нет: {{{ % sudo apt-get install git }}} Перейдите в {{{$HOME}}} (на сервере уместнее будет устанавливать в {{{/srv}}}) и получите код из репозитория в каталог {{{bnw}}}: {{{ % cd $HOME % git clone https://github.com/stiletto/bnw.git bnw }}} ==== Создаём виртуальное окружение ==== {{{ % cd bnw % make install-venv }}} Эта команда установит необходимые базовые зависимости и настроит виртуальное окружение в подкаталоге {{{.venv}}} ==== Настраиваем MongoDB ==== Настройки по умолчанию вполне рабочие, но желательно ещё проделать следующее: * Установите в файле {{{/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 = "пароль авторизации компонента" }}} Можно и наоборот — сервис будет доступен по адресу {{{example.com}}}, а для XMPP-сервера выбрать какое-нибудь имя вроде {{{xmpp.example.com}}}: {{{ VirtualHost "xmpp.example.com" Component "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 }}} ===== Создание XMPP-аккаунтов ===== Т.к. по умолчанию регистрация с помощью клиентов в prosody запрещена, в случае локального варианта используйте команду: {{{ sudo prosodyctl adduser user@localhost }}} (вас попросят ввести пароль). В случае публичного сервера подставьте вместо {{{localhost}}} его имя или можете использовать ваш уже имеющийся аккаунт на любом другом XMPP-сервере. ==== Устанавливаем и настраиваем HTTP-сервер ==== ===== Локальный вариант ===== По умолчанию, BnW запускает веб-интерфейс по адресу [[http://localhost:7808/]], дополнительные действия не требуются. ===== Публичный вариант ===== ||<#FF0000> TODO /!\ <>|| ==== Настраиваем сервис ==== Перейдите в каталог сервиса (в нашем случае {{{$HOME/bnw}}}) и выполните команду: {{{ make config }}} Это создаст конфиг-файл из шаблона и откроет его для редактирования. Обратите внимание на следующие опции: * {{{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}}} или доменное имя в случае публичного варианта. Остальные опции можно оставить как есть или прочитать к ним комментарии в этом же файле конфигурации. ==== Запускаем сервис ==== {{{ % make run }}} (это надо делать из каталога сервиса). Такой вариант запуска подходит для отладки и тестов, но если вам нужно чтобы сервис запускался в режиме демона с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее: * Скопируйте шаблон скрипта в системный каталог: {{{ % sudo cp bnw.init.d.sh /etc/init.d/bnw }}} * Отредактируйте переменную {{{BNW_PATH}}} в этом скрипте по необходимости — это путь до каталога сервиса, в нашем случае {{{$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 }}} ==== Поиск ==== Сервис поиска запускается командой: {{{ % make run_search }}} Или скопируйте и установите стартовый скрипт {{{bnw_search.init.d.sh}}} по аналогии со скриптом основного сервиса. ==== Прочее ==== Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов: {{{ % sudo /etc/init.d/server_name start }}}