welcome: please sign in
location: Diff for "u/Stiletto/BnW/Установка_BnW_на_Linux"
Differences between revisions 17 and 30 (spanning 13 versions)
Revision 17 as of 2012-07-12 10:07:22
Size: 8903
Editor: Kagami
Comment: HTTP
Revision 30 as of 2012-08-02 13:55:59
Size: 11566
Editor: anonymous
Comment: поиск
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
[[../|BnW]] — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться. Мы будем использовать виртуальное окружение [[http://pypi.python.org/pypi/virtualenv/|virtualenv]], которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий. [[../|BnW]] — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться, в частности, данная инструкция гарантированно работает с Debian Wheezy. (Если у вас совсем другой дистрибутив, посмотрите [[https://raw.github.com/stiletto/bnw/master/Makefile|Makefile]] и действуйте согласно его специфике.)
Line 4: Line 4:
==== Устанавливаем базовые зависимости ====
||<#FF0000> TODO /!\ Обговорить версии всех необходимых компонентов.||
{{{% sudo apt-get install python-virtualenv git build-essential python-dev}}}<<FootNote(''build-essential'' и ''python-dev'' нужны для компиляция сишного bson-модуля mongo-библиотеки для ускорения её работы.)>>
Мы будем использовать виртуальное окружение [[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
}}}
Line 9: Line 20:
Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/srv/}}}. {{{
% cd bnw
% make install-venv
}}}
Эта команда установит необходимые базовые зависимости и настроит виртуальное окружение в подкаталоге {{{.venv}}}
Line 11: Line 26:
{{{% cd $HOME}}}<<BR>>
{{{% virtualenv bnw}}}<<BR>>
{{{% cd bnw; source bin/activate}}}

==== Устанавливаем библиотеки, получаем код ====
{{{% mkdir src; cd src}}}<<BR>>
{{{% pip install twisted tornado PyRSS2Gen}}}<<BR>>
{{{% pip install -e git+https://github.com/fiorix/mongo-async-python-driver.git#egg=txmongo}}}<<BR>>
{{{% git clone https://github.com/stiletto/bnw.git}}}<<BR>>
{{{% cd bnw; git clone https://github.com/stiletto/linkshit.git}}}

Шаблон конфига находится в файле {{{config.py.example}}}, копируем его:<<BR>>
{{{% cp config.py.example config.py}}}<<BR>>

==== Устанавливаем и настраиваем MongoDB ====
{{{% sudo apt-get install mongodb-server}}}

И, в принципе, всё, но желательно ещё проделать следующее:
==== Настраиваем MongoDB ====
Настройки по умолчанию вполне рабочие, но желательно ещё проделать следующее:
Line 30: Line 29:
 * Перезапускаем mongo:<<BR>>
 {{{% sudo /etc/init.d/mongodb restart}}}
 * Удаляем тестовые базы:<<BR>>
 {{{% mongo test --eval 'db.dropDatabase()'}}}<<BR>>
 {{{% mongo local --eval 'db.dropDatabase()'}}}
 * Перезапускаем mongo:
 {{{
% sudo /etc/init.d/mongodb restart
}}}
 * Удаляем тестовые базы:
 {{{
% mongo test --eval 'db.dropDatabase()'
% mongo local --eval 'db.dropDatabase()'
}}}
Line 39: Line 42:
Устанавливаем prosody:<<BR>>
{{{% sudo apt-get install prosody}}}
Устанавливаем prosody:
{{{
% sudo apt-get install prosody
}}}
Line 45: Line 50:
 * Установите в файле {{{/etc/prosody/prosody.cfg.lua}}} в глобальной секции опции:<<BR>><<BR>>
 {{{c2s_interface = "127.0.0.1"}}}<<BR>>
 {{{s2s_interface = "127.0.0.1"}}}<<BR>>
 {{{legacy_ssl_interface = "127.0.0.1"}}}<<BR>><<BR>>
 * Установите в файле {{{/etc/prosody/prosody.cfg.lua}}} в глобальной секции опции:
 {{{
c2s_interface = "127.0.0.1"
s2s_interface = "127.0.0.1"
legacy_ssl_interface = "127.0.0.1"
}}}
Line 50: Line 57:
 * Отредактируйте файл виртуального хоста {{{/etc/prosody/conf.avail/localhost.cfg.lua}}} и добавьте в конец следующие строчки:<<BR>><<BR>>
 {{{
Component "bnw.localhost"}}}<<BR>>
 {{{
component_secret = "пароль для авторизации компонента"}}}<<BR>><<BR>>
 * Отредактируйте файл виртуального хоста {{{/etc/prosody/conf.avail/localhost.cfg.lua}}} и добавьте в конец следующие строки:
 {{{
Component "bnw.localhost"
component_secret = "пароль авторизации компонента"
}}}
Line 55: Line 64:
 {{{% sudo /etc/init.d/prosody restart}}}  {{{
% sudo /etc/init.d/prosody restart
}}}
Line 58: Line 69:
||<#FF0000> TODO /!\ || Допустим, компьютер, на котором вы хотите запустить сервис, имеет доменное имя {{{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-сервере.
Line 65: Line 106:
||<#FF0000> TODO /!\ || ||<#FF0000> TODO /!\ <<Color2("Штилетта, сделай!", #FF0000)>>||
Line 68: Line 109:
Отредактируйте файл конфигурации сервиса {{{config.py}}}, который должен находиться в {{{$HOME/bnw/src/bnw/}}}, если вы точно соблюдали инструкции:
 * {{{srvc_port}}} в случае prosody надо установить в {{{5347}}}
 * {{{srvc_name}}} в случае локального варианта должен быть {{{bnw.localhost}}} (или то имя, которое вы настроили)
 * {{{srvc_pwd}}} должен совпадать со значением {{{component_secret}}}
||<#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}}} или доменное имя в случае публичного варианта.
Остальные опции можно оставить как есть или прочитать к ним комментарии в этом же файле конфигурации.
Line 75: Line 122:
Перейдите в каталог сервиса {{{$HOME/bnw/src/bnw/}}} и запустите его с помощью:<<BR>>
{{{% twistd -ny instance.tac}}}
{{{
% make run
}}}
(это надо делать из каталога сервиса).
Line 78: Line 127:
Это подходит для тестовых запусков и отладки, но если вам нужно запускать сервис в режиме демона с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее:
 * Скопируйте шаблон скрипта в системный каталог:<<BR>>
 {{{
% sudo cp bnw.init.d.sh /etc/init.d/bnw}}}
 * Отредактируйте переменную {{{BNW_VENV_PATH}}} в этом __скрипте__ по необходимости. Это путь до виртуального окружения virtualenv, в нашем случае {{{$HOME/bnw}}}.
 * Также по желанию отредактируйте переменные {{{USER}}} и {{{GROUP}}} — от этих пользователя и группы будет запускаться сервис. Системный пользователь и одноимённая группа {{{bnw}}} создаются с помощью команды:<<BR>>
 {{{
% sudo adduser --system --no-create-home --group bnw}}}
Такой вариант запуска подходит для отладки и тестов, но если вам нужно чтобы сервис запускался в режиме демона с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее:
 * Скопируйте шаблон скрипта в системный каталог:
 {{{
% 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
}}}
Line 87: Line 140:
 * {{{% sudo /etc/init.d/bnw start}}}
 * {{{% sudo /etc/init.d/bnw stop}}}
 * {{{% sudo /etc/init.d/bnw restart}}}
{{{
% sudo /etc/init.d/bnw start
% sudo /etc/init.d/bnw stop
% sudo /etc/init.d/bnw restart
}}}
Line 92: Line 147:
 * Чтобы сервис запускался при старте компьютера, выполните команду:<<BR>>
 {{{
% sudo update-rc.d bnw defaults}}}
 *
Чтобы отменить это действие:<<BR>>
 {{{
% sudo update-rc.d -f bnw remove}}}
Чтобы сервис запускался при старте компьютера, выполните команду:
{{{
% sudo update-rc.d bnw defaults
}}}
Чтобы отменить это действие:
{{{
% sudo update-rc.d -f bnw remove
}}}

==== Поиск ====
Сервис поиска запускается командой:
{{{
% make run_search
}}}
Или скопируйте и установите стартовый скрипт {{{bnw_search.init.d.sh}}} по аналогии со скриптом основного сервиса.
Line 98: Line 164:
Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов ({{{% sudo /etc/init.d/server start}}}). Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов:
{{{
% sudo /etc/init.d/server_name start
}}}

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

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

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

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

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

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