8246
Comment: (м)
|
11227
Makefile
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Используемый дистрибутив — Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться. Мы будем использовать виртуальное окружение [[http://pypi.python.org/pypi/virtualenv/|virtualenv]], которое позволяет устанавливать библиотеки в выбранный каталог, никак не затрагивая системные версии, не требует прав суперпользователя и при желании позволяет легко удалить установленное приложение без каких-либо последствий. | === Установка BnW на Linux === [[../|BnW]] — это сервис микроблоггинга, написанный на языке программирования Python. В данной статье мы рассмотрим его установку и настройку для Ubuntu 12.04, установка для Debian и других Debian-based дистрибутивов не должна сильно отличаться, в частности, данная инструкция гарантированно работает с Debian Wheezy. (Если у вас совсем другой дистрибутив, посмотрите [[https://raw.github.com/stiletto/bnw/master/Makefile|Makefile]] и действуйте согласно его специфике.) |
Line 3: | 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 8: | Line 20: |
Виртуальное окружение будет находиться в домашнем каталоге пользователя. Вы можете поместить его в другое место по желанию. Например, на сервере уместнее будет использовать каталог {{{/srv/}}}. | {{{ % cd bnw % make install-venv }}} Эта команда установит необходимые базовые зависимости и настроит виртуальное окружение в подкаталоге {{{.venv}}} |
Line 10: | 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.d/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 57: | Line 68: |
===== Сервис общего пользования ===== ||<#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 61: | Line 102: |
||<#FF0000> TODO /!\ || | ===== Локальный вариант ===== По умолчанию, BnW запускает веб-интерфейс по адресу [[http://localhost:7808/]], дополнительные действия не требуются. ===== Публичный вариант ===== ||<#FF0000> TODO /!\ <<Color2("Штилетта, сделай!", #FF0000)>>|| |
Line 64: | Line 109: |
Отредактируйте файл конфигурации сервиса {{{config.py}}}, который должен находиться в {{{$HOME/bnw/src/bnw/}}}, если вы точно соблюдали инструкции: * {{{srvc_port}}} в случае prosody надо установить в {{{5347}}} * {{{srvc_name}}} в случае локального варианта должен быть {{{bnw.localhost}}} (или то имя, которое вы настроили) * {{{srvc_pwd}}} должен совпадать со значением {{{component_secret}}} |
Перейдите в каталог сервиса (в нашем случае {{{$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 70: | Line 122: |
Перейдите в каталог сервиса {{{$HOME/bnw/src/bnw/}}} и запустите его с помощью:<<BR>> {{{% twistd -ny instance.tac}}} |
{{{ % make run }}} (это надо делать из каталога сервиса). |
Line 73: | 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 82: | 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 87: | 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 }}} |
Line 93: | Line 157: |
Обратите внимание, что для работы сервиса необходимы как минимум запущенные 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_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
Прочее
Обратите внимание, что для работы сервиса необходимы как минимум запущенные XMPP и MongoDB сервера. По умолчанию, при установке они добавляются в автозагрузку, но если по какой-то причине один из серверов не загружен, запустите его с помощью механизма стартовых скриптов:
% sudo /etc/init.d/server_name start