Используемый дистрибутив — Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться. Мы будем использовать виртуальное окружение [[http://pypi.python.org/pypi/virtualenv/|virtualenv]], которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий. ==== Устанавливаем базовые зависимости ==== {{{% sudo apt-get install python-virtualenv git build-essential python-dev}}}<> ==== Создаём виртуальное окружение ==== Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/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.d/localhost.cfg.lua}}} и добавьте в конец следующие строчки:<
><
> {{{Component "bnw.localhost"}}}<
> {{{ component_secret = "пароль для авторизации компонента"}}}<
><
> (Вместо {{{bnw}}} вы можете использовать любое имя, главное окончание {{{.localhost}}}) * Перезапускаем prosody: {{{% sudo /etc/init.d/prosody restart}}} ==== Устанавливаем и настраиваем HTTP-сервер ==== ==== Настраиваем сервис ==== Отредактируйте файл конфигурации сервиса {{{config.py}}}, который должен находиться в {{{$HOME/bnw/src/bnw/}}}, если вы точно соблюдали инструкции: * {{{srvc_port}}} в случае prosody надо установить в {{{5347}}} * {{{srvc_name}}} в случае локального варианта должен быть {{{bnw.localhost}}} (или то имя, которое вы настроили) * {{{srvc_pwd}}} должен совпадать со значением {{{component_secret}}} ==== Запускаем сервис ==== Перейдите в каталог сервиса {{{$HOME/bnw/src/bnw/}}} и запустите его с помощью:<
> {{{% twistd -ny instance.tac}}} Это подходит для тестовых запусков и отладки, но если вам нужно запускать сервис с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее: * Скопируйте шаблон скрипта в системный каталог:<
> {{{% 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}}} для запуска, остановки и перезагрузки сервиса соответственно. * Чтобы сервис запускался при старте компьютера, запустите команду:<
> {{{% update-rc.d bnw defaults}}} * Чтобы убрать из автозагрузки:<
> {{{% update-rc.d -f bnw remove}}} ==== Прочее ==== Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов ({{{% sudo /etc/init.d/server start}}}).