Получаем права суперпользователя перманентно:
sudo -s
Устанавливаем необходимые для корректной работы бота компоненты:
apt-get install python2.7 python2.7-minimal git git-core postgresql openssl python-psycopg2
Скачиваем, собираем из исходников python-crontab и убираем за собой мусор:
cd /tmp wget https://pypi.python.org/packages/source/c/crontab/crontab-0.20.5.tar.gz#md5=e358955f1662810a7995ac4825d0c647 tar -xvf crontab-0.20.5.tar.gz cd crontab-0.20.5 python setup.py build python setup.py install cd .. && rm -rf /tmp/crontab*
Подготовим PostgreSQL к работе с ботом, поправим конфигурационный файл:
nano /etc/postgresql/9.3/main/pg_hba.conf
Приведем данную секцию local к следующему виду
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
Иногда бывают случаи, когда владелец бота халатно относится к безопасности своего сервера/компьютера, иногда злоумышленники находят какие-либо бреши в коде бота (как это не раз бывало с талисманами) и пользуются этим… Во избежание подобных проблем, рекомендую для ботов создавать отдельные учетные записи без прав sudo со своими домашними директориями. В данном мануале именно это мы и сделаем:
useradd isida
Назначаем пароль к учетной записи, отвечаем на вопросы…
Входим в домашнюю директорию бота и его учетную запись:
cd /home/isida su isida
Скачиваем из GIT-репозитория самого бота и входим в его директорию (в дальнейшем надо работать в ней):
git clone git://github.com/disabler/isida/4.git isida cd isida
Создаем конфиг бота на базе дефолтного и правим его:
cp settings/demo_config.py settings/config.py nano settings/config.py
Вносим свои данные, также указываем данные к доступу в PostgreSQL (относится к паролю, остальное в этой секции можно оставить как есть) <spoiler>
# -*- coding: utf-8 -*- #-------------------------------------------------------# # Isida-bot Config file # v3.2ru #-------------------------------------------------------# #-------------------------------------------------------# #--------------- Настройки подключения -----------------# Settings = { 'nickname': u'<пишем сюда ник бота>', # Ник бота в конференциях 'jid': u'isida-bot@server.tld/resource', # Jid бота с ресурсом 'password': u'********', # Пароль Jid'а бота 'status': u'online', # Статус бота chat|online|away|xa|dnd 'priority': 0, # Приоритет 'message': u'Йа аццкое железко!'} # Статус-сообщение #-------------------------------------------------------# #---------------- Стартовые настройки ------------------# SuperAdmin = u'username@server.tld' # JID владельца бота defaultConf = u'room@conference.server.tld' # Стартовая конференция prefix = u'_' # Префикс команд по умолчанию msg_limit = 2048 # Лимит символов в одном сообщении #-------------------------------------------------------# #---------------- Настройка прокси/хостов --------------# #proxy = {'host':'localhost','port':3128,'user':'me','password':'secret'} # Прокси #proxy = {'host':'127.0.0.1','port':3128,'user':'','password':''} #proxy = {'host':'localhost','port':3128} #server = 'allports.jabber.ru:443' # Подключение минуя ресольвер #secure = True # Включение ssl (порт 5223) #http_proxy = {'host':'localhost','port':3128,'user':'me','password':'secret'} # Http-прокси #http_proxy = {'host':'127.0.0.1','port':3128,'user':None,'password':None} #-------------------------------------------------------# #-------------- Отладка, системные логи ----------------# #ignore_owner = True # не исполнять для владельца бота отключенные команды #halt_on_exception = True # останавливать работу бота при исключениях #debug_xmpppy = True # режим отладки xmpppy #debug_console = True # режим показа действий бота в консоле #database_debug = True # режим отладки PostgreSQL CommandsLog = True # логгирование команд бота #thread_type = None # тип тредов thread/threading. по умолчанию - threading #ENABLE_TLS = False # принудительное отключение TLS при сбоях на больших станзах на старых версиях OpenSSL #ENABLE_SASL = False # отключение SASL #-------------------------------------------------------# #----------------- Настройка баз данных ----------------# #---------------------- PostgreSQL ---------------------# base_type = 'pgsql' # тип базы: pgsql base_name = 'isidabot' # название базы для PostgreSQL base_user = 'isidabot' # пользователь базы для PostgreSQL base_host = 'localhost' # хост базы для PostgreSQL base_pass = '******' # пароль базы для PostgreSQL base_port = '5432' # порт для подключения. стандартный - 5432 #----------------------- SQLite3 -----------------------# #base_type = 'sqlite3' # тип базы: sqlite3 #------------------------ MySQL ------------------------# #base_type = 'mysql' # тип базы: mysql #base_name = 'isidabot' # название базы для MySQL #base_user = 'isidabot' # пользователь базы для MySQL #base_host = 'localhost' # хост базы для MySQL #base_pass = '******' # пароль базы для MySQL #base_port = 3306 # порт для подключения. стандартный - 3306 #-------------------------------------------------------# #------------------ Файлы, пути к файлам ---------------# tmp_folder = 'tmp/%s' # папка временных данных data_folder = 'data/%s' # папка данных set_folder = 'settings/%s' # папка настроек sqlite_base = data_folder % 'sqlite3.db' # файл с базой sqlite3 slog_folder = data_folder % 'log/%s' # папка системных логов back_folder = data_folder % 'backup/%s' # папка хранения резервных копий loc_folder = data_folder % 'locales/%s.txt' # папка локализаций log_folder = data_folder % 'conflogs/%s' # папка логов конференций LOG_FILENAME = slog_folder % 'error.txt' # логи ошибок ver_file = tmp_folder % 'version' # версия бота cens = data_folder % 'censor.txt' # цензор custom_cens = data_folder % 'custom_censor.txt' # цензор пользователя public_log = log_folder % 'chatlogs/%s' # папка публичных логов конференций system_log = log_folder % 'syslogs/%s' # папка системных логов конференций logs_css_path = '../../../.css/isida.css' # путь к css файлу для логов tld_list = data_folder % 'tldlist.txt' # список tld кодов poke_file = data_folder % 'poke.txt' # список ответов для команды poke answers_file = tmp_folder % 'answers.txt' # имя файла по умолчанию для импорта/экспорта ответов date_file = data_folder % 'date.txt' # список праздников pastepath = data_folder % 'paste/' # путь для больших сообщений pasteurl = 'http://fill_it_before_use/paste/' # url для сообщений. необходимо вписать *СВОЙ* сайт! paste_css_path = '.css/isida.css' # путь к css default_msg_limit = msg_limit # размер сообщений по умолчанию smile_folder = '.smiles' # папка со смайлами в чатлогах smile_descriptor = 'icondef.xml' # дескриптор смайлов back_file = back_folder % '%s.back' # шаблон копий файлов starttime_file = tmp_folder % 'starttime' #-------------------------------------------------------# # Регекспы для блокиратора рекламы, регистронезависимые # adblock_regexp = [u'([-0-9a-zа-я_+]+@c[-0-9a-z-.]+)', u'https?://(.*?icq.*?/[-a-z0-9?+./=?&]*?)'] #-------------------------------------------------------# #------------- Дополнительные настройки ----------------# #default_censor_set = 2 # номер набора правил для цензора. 1 - слово целиком, 2 - кроме первой буквы #-------------------------------------------------------#
</spoiler> Сохраняем и выходим из редактора. Также временно выходим из учетной записи isida, нажав сочетание CTRL+D, либо написав команду exit.
Создадим базы данных для бота, используя его шаблоны (именно поэтому при настройке БД необходимо находиться в директории бота)
su postgres createuser -P isidabot createdb isidabot -E UTF8 -T template0 psql -U isidabot isidabot -f scripts/pgsql.schema psql -U isidabot isidabot -f data/db/defcodes.dump psql -U isidabot isidabot -f data/db/dist.dump psql -U isidabot isidabot -f data/db/gis.dump psql -U isidabot isidabot -f data/db/wz.dump psql -U isidabot isidabot -f data/db/ru_alias.dump exit
<fc #ff0000>Внимание!</fc>
<fc #ffff00>После создания Базы Данных и импорта дампов рекомендуется очистить БД от дублей следующей командой:</fc>
psql -U isidabot isidabot -f pgsql_remove_duplicates.schema
до выхода из учетной записи PostgreSQL. На этом подготовка и настройка закончены.
Как говорилось выше, для бота лучше всего иметь свою учетныю запись без права выполнять привилигерованные действия. Это означает, что его запуск и работа также должны быть из этой учетки. Поэтому снова логинимся:
su isida
и при условии, что мы все еще находимся в директории /home/isida/isida производим запуск бота
sh launch.sh &
Если вы хотите, чтобы бот стартовал при запуске операционной системы, воспользуйтесь следующим костылем:
создайте скрипт запуска бота:
touch isida.sh nano isida.sh
Вставляем в скрипт следующее
#!/bin/sh cd /home/isida/isida && sh launch.sh & exit
и прописываем в /etc/rc.local его запуск от учетной записи isida при старте ОС (как ни странно, напрямую запустить бота у меня не получилось, поэтому и костыли в помощь )
nano /etc/rc.local
вставить код
sleep 15 && sudo -H -b -u isida sh /home/isida/isida.sh
в целом выглядеть должно примерно так: <spoiler>
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sleep 15 && sudo -H -b -u isida sh /home/isida/isida.sh exit 0
</spoiler>
Это самое основное, что надо сделать для установки и запуска бота Isida.
Материал для этой статьи честно скоммуниздил с Wiki Isida.
Всю остальную информацию по более тонкой настройке вы сможете взять оттуда.