Serwer szachowy - Chessd

2010-09-30 , Papiewski Łukasz , Szachy

Chessd

Jest to wersja, która prezentuję trochę nowsze podejście w stosunku do poprzednich.

Numeracja projektu chessd nie bazuję na kontynuacji numeracji poprzedniej linii. Pierwszą stabilną wersją jest 0.2. Ostania wersja to 0.3.1. Od wersji 0.3 jest włączone wsparcie dla bazy MySQL.

Jak sami autorzy określili, wersja ta jest adaptacją starych projektów dla nowoczesnego środowiska programistycznego, zrealizowanych w postaci bazy danych PostgresSQL i interfejsu graficznego.

Ta wersja ma ograniczoną liczbę komend ICS. Funkcjonalność związana z administracją i zarządzaniem została zaimplementowana jako aplikacja web operująca na bazie danych. Sprawiło to, że sam kod serwera się zmniejszył oraz po poprawie licznych błędów stał bardziej stabilny.

W trakcie używania serwera w wersji chessd 0.2 i wyższej okazało się, że nie wszystkie funkcje działają. Wyświetla się wtedy monit, że użytkownik nie nasłuchuje kanału co jest oczywiście błędne i związane z przeniesieniem komend na stronę internetową.

Instalacja

Poniżej opisana jest instalacja serwera chessd. Skorzystano tutaj z wersji 0.3.1 pobranej z chessd.sourceforge.net.

Zależności

Spis w postaci zależności niezbędnych do przeprowadzenia instalacji pakietów:
  • PostgreSQL lub MySQL
  • libdbi >= 0.8.0
  • libdbi-drivers (MySQL lub PostgreSQL)
  • libxml2-dev
  • libltdl3-dev
Narzędzia
  • pkgconfig
  • libtool
  • gettext

Najważniejszymi rzeczami z zależności jest libdbi, czyli API języka C oraz biblioteki pozwalające na łączenie się z bazą danych. Należy też pobrać sterowniki odpowiedniej bazy danych : libdibi-drivers-mysql lub libdbi-drivers-postgres

Niezbędne pakiety można pobrać przykładowo wykonując poniższe komendy instalatora pakietów Linux:
#archlinux
yaourt -S libdbi libdbi-drivers-postgresql libdbi-drivers-mysql libxml2 
#debian
sudo apt-get install libdbi0 libdbi0-dev libdb-mysql libdb-postgres libxml2-dev libxml2

Gdy nie ma pliku 'configure' lub 'Makefile' generuje się go za pośrednictwem 'autotools'. Poniższa sekwencja jest także przydatna, gdy trzeba zaktualizować samo autotools, z czym w niektórych wcześniejszych wersjach można się spotkać.

#rm -R automate.cache auxdir -R
#mkdir auxdir
 
libtoolize --copy --force   #uaktualniamy narzędzia (auxdir/ltmain.sh)
aclocal			    #przetwarzamy plik .ac
autoconf		    #generujemy configure
#autoreconf		    #rekonfigurujemy gdy inna wersja
automake		    #generujemy wejściowe pliki, Makefile.am
automake --add-missing	    #aktualizacja
autoconf

Dalej standardowy proces instalacyjny na UNIX-ach

configure
make
#z roota lub sudo
make install

Przy instalacji może pojawić się błąd związany z referencją do @MKINSTALLDIRS@ w pliku Makefile. W takim wypadku podmienia się tą zmienną ręcznie wyrażeniem ../auxdir/mkinstalldirs.

#ln -fs /usr/share/automake-1.11/mkinstalldirs auxdir #to be sure it is correct
sed -si 's/@MKINSTALLDIRS@/../auxdir/mkinstalldirs/'  po/Makefile

Konfiguracja bazy

Serwer współpracuję z bazą danych więc przed uruchomieniem należy wybraną opcję serwera skonfigurować.

#Dla PostgresSQL
su postgres
createuser chessd -D  -P
createdb -O chessd chessd
psql chessd chessd < create-psql.sql
#./sql/dbinstall.sh  create  #ta komenda powinna zrobić to co powyżej
#Dla MySQL
./sql/dbinstall.sh -m create

Następne kroki to edycja chessd.conf (/usr/local/etc lub /etc/) i po którym można przystąpić do właściwego uruchomienie serwera.

Interfejs WWW

Serwery FICS (zobacz (zob. fics)) nie miały w początkowej swej historii interfejsu WWW. Całość funkcji była realizowana za pośrednictwem konta administratora, który tak jak każdy użytkownik łączył się i mógł wydawać specjalnie dla niego wyznaczone komendy administracyjne. Cała admsprowadzała się wtedy do modyfikowania wpisów w bazie składającej się najczęściej z plików tekstowych.

Interfejs webowy z założenia miał umożliwiać rejestrację, oglądanie statystyk, komunikację z innymi czy nawet samo granie w szachy.

Kod serwera www dla chessd znajdujący się na sourceforge.net jest na tą chwilę nie działający. Od pewnego czasu zaprzestano jego dalszego rozwijania. Podyktowane to było źle udokumentowanym, napisanym po portugalsku kodem, który wraz z kolejnymi wersjami nowego oprogramowania jak Apache, baza danych, API PHP, stał się niekompatybilny.

Z paroma poprawkami kodu i zmianami w konfiguracji PHP oraz bibliotek AdoDB udało się go uruchomić na bazie PostgreSQL7. Jednak poza stroną startową i paroma linkami, interfejs nie był dalej w stanie zaoferować zaprojektowanej funkcjonalności.

W celu wykorzystania strony zostały wprowadzone następne sukcesywnie poprawki w samych plikach PHP projektu. Aplikacja dzięki temu uruchomiła się także na serwerze MySQL Jednak nadal wiele funkcji nie działało z racji błędu w mechanizmie obsługi danych z POST.

W załączniku znajduję się patch z wprowadzonymi zmianami.

Cytaty

- Simplicity is the ultimate sophistication. - Leonardo da Vinci,
- Popularny człowiek wzbudza zawiść potężnych - Thufir Hawat o Leto Atrydzie (na Kaladanie),
- Szczęście następuje po smutku, a smutek po szczęściu; człowiek jest naprawdę wolny, gdy przestaje rozróżniać między smutkiem a szczęściem, między dobrem a złem - Aforyzmy buddyjskie.