Niniejszy tekst powstał, aby ośmielić polskie instytucje budżetowe i zachęcić osoby, które w nich pracują, do korzystania z protokołu XMPP. Niedawno słyszeliśmy o wdrożeniu w Urzędzie Komunikacji Elektronicznej tzw. bota internetowego o nazwie Teabot i od tego czasu nastała cisza w sprawie dalszych wdrożeń. To niedobrze, ponieważ w miejscach, gdzie jest przechowywana, tworzona lub publikowana treść mająca dotrzeć do możliwie szerokiego grona odbiorców, stosowanie Teabota jest godne polecenia.

Próbowałem poznać przyczynę braku masowych wdrożeń wspomnianego oprogramowania, więc rozejrzałem się po sieci chcąc znaleźć informacje nt. jego instalacji. Ostatecznie ich nie znalazłem, a ponieważ od programistów, którzy i tak dużo czasu poświęcili na stworzenie projektu, trudno wymagać, aby dodatkowo zajmowali się tego rodzaju publikacjami, postanowiłem zaproponować własną metodę wdrożenia, a nuż się komuś przyda, przynajmniej jako zbiór wskazówek, który można dowolnie modyfikować i uzupełniać, przy czym jedynym ograniczeniem tych czynności jest nasza wyobraźnia. Przyznaję, nie czytałem wpisów na Forum projektu, nawet możliwe, że znalazłbym tam opis instalacji, lecz ciekawsze było zajrzenie do źródeł Teabota.

Ponieważ miałem już zainstalowany, działający system operacyjny w ramach dystrybucji Gentoo Linux, wszystkie czynności wykonywałem w oparciu o w/w dystrybucję.

Instalacja ejabberd

Na początku uruchomiłem serwer Jabber w sposób opisany na stronie: Ejabberd – wybrany przeze mnie wpis do pliku /etc/portage/package.use to:
net-im/ejabberd -ldap -mod_irc -mod_muc -mod_pubsub -odbc ssl web .

W tym miejscu od razu podam wpisy z pliku /etc/portage/package.keywords, które będą potrzebne nieco później:

dev-python/xmpppy ~amd64
dev-python/sqlobject ~amd64

Uwaga: W przypadku korzystania z procesorów 32-bitowych, zamiast ~amd64 należy wpisać ~x86.

Gdy już mamy pewność, że serwer obsługujący protokół XMPP prawidłowo działa, można zainstalować program współpracujący z ww. protokołem, który umożliwi nam założenie konta na właśnie uruchomionym serwerze. W moim przypadku jest to program Psi zainstalowany na jednej ze zdalnych, windowsowych* stacji roboczych.

* Celowo piszę o maszynach windowsowych, aby pokazać, że ten sposób komunikacji nie jest ograniczony wyłącznie do systemów pochodzących z rodziny Unix/Linux. Ostatnio w RadioTux wspomniano o oprogramowaniu Facebook, gdyż ono także obsługuje protokół XMPP i podobno jest znane wielu internautom, dlatego postanowiłem podać również ten przykład.

Innym sposobem na założenie konta na serwerze Jabber jest wydanie spod konsoli następującego polecenia: ejabberdctl register username domainame password. Możliwe, że administratorzy serwerów wybiorą tę opcję.

Instalacja Teabota

Zajmijmy się teraz pobraniem źródeł Teabota. Na stronie projektu znajduje się informacja o tym, jak to zrobić. Jednak, zanim wykonamy tę czynność, zacznijmy od zainstalowania wymaganego systemu kontroli wersji. Robimy to wydając polecenie:

a) emerge mercurial

Następnie:
b) mkdir ~/jabber
c) cd ~/jabber
d) w katalogu jabber wykonujemy polecenie: hg clone http://hg.teabot.org/bot bot
e) cd ~/jabber/bot
h) hg update

Uwaga: Aby mieć uporządkowaną strukturę katalogów na dysku, najpierw w katalogu użytkownika utworzyłem podkatalog o nazwie jabber i do niego sklonowałem źródła, co będzie widoczne na kilku zrzutach ekranu, lecz ta porządkująca czynność nie jest wymagana w procesie instalacji.

Zajrzyjmy teraz do pliku ~/jabber/bot/src/setup.py i dowiedzmy się, jakie pakiety są wymagane do uruchomienia Teabota. Jeśli nie są one zainstalowane w naszym systemie, to dobry moment, aby te braki nadrobić. Niektóre z pakietów mogą być zamaskowane, dlatego w razie potrzeby do pliku /etc/portage/package.use należy dodać wpisy, które wkleiłem powyżej.

Instalacja bazy danych

a) emerge mysql
b) sudo hostname nazwa_komputera_inna_od_localhost – ten krok nie jest wymagany, jeśli nasz komputer ma już inną nazwę
c) emerge –config dev-db/mysql i definiujemy hasło roota
d) przed zalogowaniem się do serwera MySQL, o ile w kroku b) musieliśmy zmienić nazwę komputera, przywracamy nazwę localhost poleceniem: sudo hostname localhost
e) włączamy serwer MySQL poleceniem: /etc/init.d/mysql start
f) wykonujemy polecenie: mysql -u root -h localhost -p oraz tworzymy bazę danych, np. o nazwie teabot: CREATE DATABASE teabot;
g) upewniamy się, że nowa baza danych została utworzona: SHOW DATABASES;
h) poleceniem: u teabot rozpoczynamy korzystanie z bazy danych teabot.

Konfiguracja Teabota

Zainstalujmy pozostałe pakiety wraz z zależnościami. W tym celu wydajemu polecenie: emerge xmpppy feedparser sqlobject soappy pydns simplejson lxml 4suite pyenchant mysql-python formencode

Niektóre wymagane moduły nie są wpisane do tablicy o nazwie requires znajdującej się w pliku ~/jabber/bot/src/setup.py, lecz w przypadku Gentoo Linux należało także doinstalować sześć ostatnich pakietów z listy powyżej. Jeśli ktoś chce być dokładny, we wspomnianym pliku może zmienić numer wersji na 0.1.

Nadszedł czas, aby napisać treść pliku konfiguracyjnego Teabota. Jak wynika z pliku ~/jabber/bot/src/start.py, umożliwienie automatycznej konfiguracji wymaga wykonania dwóch czynności wstępnych:

a) utworzenia katalogu teabot: sudo mkdir /etc/teabot
b) utworzenia pliku konfiguracyjnego: sudo vim /etc/teabot/teabot.conf

Uwaga: W zależności od tego, jaką nazwę nosi nasz ulubiony edytor tekstu, nazwę vim można zastąpić nazwą innego edytora, np. vi.

Teraz wyedytujmy plik teabot.conf i wpiszmy do niego następujące sekcje razem z zawartością. Pamiętajmy, że ustawienia podane w sekcji [jabber] oraz sekcji [database] muszą odpowiadać ustawieniom, których używamy na serwerze Jabber i serwerze MySQL.

[jabber]
username:teabot
server:nasz_numer_IP_albo_nazwa_komputera
password:haslo_konta_utworzonego_na_serwerze_Jabber
resource:Bot

[database]
uri:mysql://root:zdefiniowane_powyzej_haslo@localhost_albo_nazwa_komputera/teabot?charset=utf8

Aby sprawdzić poprawność wpisów w pliku teabot.conf, możemy wykonać polecenie: python ~/jabber/bot/src/daemon.py Jeśli na monitorze nie zobaczymy komunikatów zgłaszających błędy, a jedynie informację o treści:
usage: daemon.py start|stop|restart, wówczas przejdźmy do dalszych czynności konfiguracyjnych. Jeżeli pojawią się inne komunikaty, trzeba poprawić zdefiniowane przed chwilą ustawienia.

Teraz spróbujmy utworzyć tablice w bazie danych teabot. W tym celu pobieramy paczkę z plikami lub pojedyncze pliki: config.py, create.py, database.py, user.py, link.py, inflection.py, synonyms.py, odm.txt, thesaurus-1.5.txt. Plik config.py edytujemy tak, żeby dane dostępowe do serwera Jabber oraz do bazy danych były takie same, jak wpisy z sekcji [jabber] i [database] z pliku /etc/teabot/teabot.conf, natomiast w pliku create.py zmieniamy dane dostępowe do serwera bazy danych, po czym wszystkie pobrane pliki kopiujemy do katalogu: ~/jabber/bot/src/database. W razie konieczności nadpisania instniejącego pliku należy go nadpisać. Przejdźmy do katalogu jabber i wydajmy polecenie utworzenia tablic:

a) cd ~/jabber/bot/src/database/
b) python create.py

Rozpocznie się proces tworzenia wymaganych tablic. Ze względu na ilość słów wczytywanych do bazy wynikającą z bogatej fleksji naszego języka, proponuję przez najbliższe 3 godziny odpocząć od komputera.

Uwaga: Osoby, które nie chcą tak długo czekać, mogą wcześniej w pliku ~/jabber/bot/src/database/create.py zakomentować albo usunąć dwie ostatnie pozycje. Trzeba przy tym pamiętać, że polecenia: odmiana i synonim będą nieaktywne do czasu ewentualnego uzupełnienia słowników w przyszłości.

Ostatecznie łączymy się z serwerem MySQL i z poziomu bazy danych teabot (u teabot) sprawdzamy, czy tablice zostały utworzone: SHOW TABLES; – kolejne zrzuty ekranu pokazują strukturę poszczególnych tablic: grafika, grafika2, grafika3, grafika4.
Ponieważ dwa z w/w plików były nam potrzebne tylko do zautomatyzowania procesu tworzenia bazy danych, możemy je już usunąć poleceniami: mv ~/jabber/bot/src/database/database.py ~/jabber/bot/src/database/__init__.py oraz mv ~/jabber/bot/src/database/config.py ~/jabber/bot/src/config/__init__.py i rm ~/jabber/bot/src/database/link.py

Teraz w programie Psi albo innym kliencie XMPP możemy dodać nowego użytkownika o nazwie: teabot@nazwa_albo_numer_IP_serwera_Jabber – ten sam numer, który został wpisany do pliku /etc/teabot/teabot.conf w sekcji [jabber] w wierszu server: Jeśli wszystko prawidłowo zadziała, na ekranie wyskoczy okno z powitalną wiadomością Teabota.

Ponieważ już niedługo zaczniemy korzystać z domyślnego serwisu pogodowego Wirtualnej Polski, znajdźmy i wyedytujmy plik ~/jabber/bot/src/database/cities.sql tak, aby jego treść rozpoczynała się od słów: INSERT INTO `places` (`id`,`city_name`,`weather_id`) VALUES i wczytajmy go do bazy danych teabot za pomocą polecenia: sudo mysql -u root -h localhost -p teabot < ~/jabber/bot/src/database/cities.sql

Jeśli chcemy, aby pod literą p (jak pogoda) znajdowała się prognoza pogody dla konkretnego miasta, lecz innego niż domyślna Warszawa, możemy w bazie danych teabot wykonać dodatkowe polecenie:
update users set place_id = (select id from places where city_name like ‚Tutaj nazwa miasta’);
Na przykład: update users set place_id = (select id from places where city_name like ‚Bytom’);

Skonfigurujmy jeszcze sprawdzanie pisowni. Teabot używa słowników współpracujących z programem GNU Aspell. Dlatego należy wyedytować plik /etc/packages/package.use i dopisać w nim następujący wiersz:
app-text/enchant -hunspell aspell
oraz wykonać polecenie: emerge enchant pyenchant aspell-*, gdzie * zastępuje kod języka, np. pl, de, en, ru, itd.

Uwaga: Konfigurację słowników ortograficznych wyodrębniłem, żeby pokazać, jak uniwersalnym narzędziem może być Teabot. Wystarczy wspomnieć, że GNU Aspell potrafi obsłużyć ponad 70 języków. Czasami uzyskanie nowej funkcjonalności wymaga wprowadzenia drobnych zmian do kodu źródłowego, np. gdybyśmy chcieli dodać kolejne słowniki, inne niż ortograficzne. Wiele z nich jest dostępnych na stronach OOo

W końcu możemy wykonać polecenie: python ~/jabber/bot/src/start.py i włączyć Teabota. W przypadku, gdy wszystko zadziała tak, jak powinno, na ekranie będzie można zobaczyć potwierdzenie skutecznego utworzenia tablic w bazie danych teabot oraz informację o pobraniu danych walutowych Narodowego Banku Polskiego.

Po włączeniu Teobota, w komunikatorze powinniśmy zobaczyć aktywny kontakt teabot@nazwa_albo_numer_IP_serwera_Jabber. Aby sprawnie poruszać się w świecie naszego nowego ulubionego programu, dobrze jest z poziomu komunikatora wydać polecenie pomoc.

Chcąc zaproponować użytkownikom Teabota zdalny dostęp do ustawień projektu z poziomu stron WWW, jak ma to miejsce w przypadku wdrożenia w Urzędzie Komunikacji Elektronicznej i pozostać przy tym w świecie Pythona, skorzystałem z Django oraz Apache obsługującego pythonowy moduł WSGI, a ponieważ działa to sprawnie, polecam.

Myślę, że Teabot zaprezentowany w ramach specjalnych stoisk z Wolnym Oprogramowaniem, podczas rozpoczynających się na początku marca targów CeBIT, ze względu na swój potencjał i uniwersalne możliwości zastosowania, cieszyłby się dużym zainteresowaniem zwiedzających. Natomiast w naszym kraju byłoby rzeczą pożądaną, aby dodatkowo zagospodarować 150 mln zł, które zapłaciliśmy za wydzierżawienie światowej kultury w ramach Wirtualnej Biblioteki Nauki i skorzystać z Teabota do propagowania wiedzy. Mam nadzieję, że znajdą się administratorzy sieci, którzy postąpią tak, aby wkrótce można się było cieszyć z tego, że Teabot i nauka w każdym stoją domu. Teabot, spokojny, nie wadzi nikomu.

PS Ponieważ na początku przez pomyłkę uruchomiłem wersję 0.2, stanowiącą etap przejściowy pomiędzy obecną, a kolejną wersją stabilnego Teabota, za pewien czas podepnę tekst do linka i opowiem, jak tę wersję uruchomić: tekst.

Archiwalny news dodany przez użytkownika: wojtek_germ.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →