welcome: please sign in
location: Diff for "u/Stiletto/BnW/Установка_BnW_на_Linux"
Differences between revisions 7 and 10 (spanning 3 versions)
Revision 7 as of 2012-07-10 14:36:57
Size: 4037
Editor: Kagami
Comment: mongo
Revision 10 as of 2012-07-10 17:02:12
Size: 8183
Editor: Kagami
Comment: init
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
{{{% sudo apt-get install build-essential python-dev python-virtualenv git}}}<<FootNote(''build-essential'' и ''python-dev'' нужны для компиляция сишного bson-модуля mongo-библиотеки для ускорения её работы.)>> {{{% sudo apt-get install python-virtualenv git build-essential python-dev}}}<<FootNote(''build-essential'' и ''python-dev'' нужны для компиляция сишного bson-модуля mongo-библиотеки для ускорения её работы.)>>
Line 7: Line 7:
Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/srv/}}}. Также разумно создать отдельного пользователя, от которого будет запускаться сервис: {{{% sudo adduser --system --no-create-home --group bnw}}}<<BR>><<BR>> Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/srv/}}}. Также разумно создать отдельного пользователя, от которого будет запускаться сервис: <<BR>><<BR>>
Line 17: Line 17:
{{{% cd bnw; git clone https://github.com/stiletto/linkshit.git}}} {{{% cd bnw; git clone https://github.com/stiletto/linkshit.git}}}<<BR>>
Шаблон конфига находится в файле {{{config.py.example}}}, копируем его:<<BR>>
{{{% cp config.py.example config.py}}}<<BR>>
Line 21: Line 23:
{{{% sudo apt-get install mongodb-server}}}<<BR>> {{{% sudo apt-get install mongodb-server}}}
Line 23: Line 26:
 * установите в файле {{{/etc/mongodb.conf}}} опции {{{bind_ip = 127.0.0.1}}} и {{{nohttpinterface = true}}}
 * перезапускаем mongo:<<BR>>
 * Установите в файле {{{/etc/mongodb.conf}}} опции {{{bind_ip = 127.0.0.1}}} и {{{nohttpinterface = true}}}
 * Перезапускаем mongo:<<BR>>
Line 26: Line 29:
 * удаляем тестовые базы:<<BR>>  * Удаляем тестовые базы:<<BR>>
Line 31: Line 34:
Мы рассмотрим настройку prosody, но вы также можете использовать ejabberd или jabberd2, их настройка во многом аналогична. (Вообще, подойдёт любой сервер, поддерживающий [[http://xmpp.org/extensions/xep-0114.html|XEP-0114: Jabber Component Protocol]], но эти три сервера наиболее популярны и просты в использовании.)<<BR>> Мы рассмотрим prosody, но вы также можете использовать ejabberd или jabberd2, их настройка во многом аналогична. (Вообще, подойдёт любой сервер, поддерживающий [[http://xmpp.org/extensions/xep-0114.html|XEP-0114: Jabber Component Protocol]], но эти три сервера наиболее популярны и просты в использовании.)

Устанавливаем prosody:
<<BR>>
Line 33: Line 38:

Возможны два варианта настройки: локальный сервис, который доступен только вам (например, если нужно протестировать какие-то фичи), или сервис общего пользования.

===== Локальный вариант =====

 * Установите в файле {{{/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>>
 (Перед строчкой {{{----------- Virtual hosts -----------}}})
 * Отредактируйте файл виртуального хоста {{{/etc/prosody/conf.d/localhost.cfg.lua}}} и добавьте в конец следующие строчки:<<BR>><<BR>>
 {{{Component "bnw.localhost"}}}<<BR>>
 {{{ component_secret = "пароль для авторизации компонента"}}}<<BR>><<BR>>
 (Вместо {{{bnw}}} вы можете использовать любое имя, главное окончание {{{.localhost}}})
 * Перезапускаем prosody:
 {{{% sudo /etc/init.d/prosody restart}}}
Line 36: Line 57:
==== Настраиваем и запускаем сервис ==== ==== Настраиваем сервис ====
Отредактируйте файл конфигурации сервиса {{{config.py}}}, который должен находиться в {{{$HOME/bnw/src/bnw/}}}, если вы точно соблюдали инструкции:
 * {{{srvc_port}}} в случае prosody надо установить в {{{5347}}}
 * {{{srvc_name}}} в случае локального варианта должен быть {{{bnw.localhost}}} (или то имя, которое вы настроили)
 * {{{srvc_pwd}}} должен совпадать со значением {{{component_secret}}}
Line 38: Line 63:
Шаблон конфига находится в файле {{{config.py.example}}}, копируем его:<<BR>>
{{{% cp config.py.example config.py}}}<<BR>>
Открываем в любимом редакторе и правим нужные опции. Файл содержит подробные комментарии, так что всё должно быть понятно.
==== Запускаем сервис ====
Перейдите в каталог сервиса {{{$HOME/bnw/src/bnw/}}} и запустите его с помощью:<<BR>>
{{{% twistd -ny instance.tac}}}

Это подходит для тестовых запусков и отладки, но если вам нужно запускать сервис с помощью стандартного механизма стартовых скриптов, неоходимо сделать следующее:
 * Скопируйте шаблон скрипта в системный каталог:<<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}}}
 * Лог сервиса будет располагаться по адресу {{{/tmp/bnw.log}}}

Теперь вы можете использовать команды:
 * {{{% sudo /etc/init.d/bnw start}}}
 * {{{% sudo /etc/init.d/bnw stop}}}
 * {{{% sudo /etc/init.d/bnw restart}}}
для запуска, остановки и перезагрузки сервиса соответственно.

 * Чтобы сервис запускался при старте компьютера, запустите команду:<<BR>>
 {{{% update-rc.d bnw defaults}}}
 * Чтобы убрать из автозагрузки:<<BR>>
 {{{% update-rc.d -f bnw remove}}}

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

Используемый дистрибутив — Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться. Мы будем использовать виртуальное окружение virtualenv, которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий.

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

% sudo apt-get install python-virtualenv git build-essential python-dev1

Создаём виртуальное окружение

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

  1. build-essential и python-dev нужны для компиляция сишного bson-модуля mongo-библиотеки для ускорения её работы. (1)

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