welcome: please sign in
location: Diff for "u/Stiletto/BnW/Установка_BnW_на_Linux"
Differences between revisions 22 and 23
Revision 22 as of 2012-07-12 22:54:04
Size: 11028
Editor: Minoru
Comment: Инструкция гарантированно работает с Debian Wheezy
Revision 23 as of 2012-07-13 08:24:02
Size: 11274
Editor: Kagami
Comment: (м)
Deletions are marked like this. Additions are marked like this.
Line 112: Line 112:
 * {{{webui_wsbase}}} — базовая часть URL вебсокетов. То же самое, что и для {{{webui_base}}} — {{{localhost:7808}}} или доменное имя в случае публичного варианта.

Установка BnW на Linux

BnW — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться (в частности, данная инструкция гарантированно работает с Debian Wheezy). Мы будем использовать виртуальное окружение virtualenv, которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий.

Устанавливаем базовые зависимости

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, их настройка во многом аналогична. (Вообще, подойдёт любой сервер, поддерживающий 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/, дополнительные действия не требуются.

Публичный вариант

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_baselocalhost: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

u/Stiletto/BnW/Установка_BnW_на_Linux (last edited 2012-08-02 13:55:59 by anonymous)