poniedziałek, 16 czerwca 2008

DB2 w PHP (środowisko Windows)

Dość często tworząc aplikacje internetowe oparte na języku PHP ograniczamy się do platformy LAMP (Linux, Apache, MySQL i PHP). Czy jednak jest to jedyne rozwiązanie dostępne na rynku i czy nie mamy żadnej alternatywy?
W ostatnich latach wielkie korporacje wydały bezpłatne alternatywy swoich serwerów baz danych. Ich licencje pozwalają na wykorzystanie zaawansowanych silników zarówno do niekomercyjnych jak i komercyjnych celów, stawiając jedynie ograniczenia na platformy sprzętowe (a dokładniej rzecz ujmując na wykorzystywane zasoby). Poniżej chciałbym skupić się na wykorzystaniu jednej z owych baz danych - IBM DB2 Express-C.

W tej części skupimy się na instalacji całego środowiska na platformie systemowej Windows, natomiast w wolnym czasie postaram się dodać informacje na temat instalacji rozszerzenia php_ibm_db2 w środowisku Linux.

Z czego będziemy korzystać:


Po rozpakowaniu pliku z instalatorem serwera danych uruchamiamy program setup. Na ekranie pojawi się Setup Launchapd, w którym będziemy mogli zapoznać się z informacjami o nowej wersji, instrukcją migracji z poprzednich edycji DB2 czy wymaganiami systemowymi. Wybierając opcję Install a product możemy zainstalować nowe środowisko bazy danych. Po zaakceptowaniu licencji, wybieramy standardową opcję instalacji (Typical) i na 4 kolejnych ekranach zatwierdzamy domyślne wartości. Następnie będziemy poproszeni o podanie nazwy i hasła dla tak zwanego właściciela instancji. Warto zachować użytkownika dedykowanego - db2admin - i podać dla niego hasło zgodne z aktualną polityką bezpieczeństwa w systemie (bądź domenie).
Po udanej instalacji przy pomocy konsoli Pierwsze Kroki (First Steps) będzie możliwe stworzenie przykładowej bazy danych SAMPLE.

UWAGA Jeśli ktoś nie stworzy przykładowej bazy w tym miejscu będzie tego mógł dokonać z poziomu specjalnej powłoki systemowej (db2cmd) przy pomocy polecenia db2sampl -sql -xml

Kolejnym krokiem będzie instalacja serwera Apache i PHP. W przypadku serwera WWW ogranicza się ona do zaakceptowania standardowych opcji instalacyjnych. Następnie należy rozpakować paczkę php-5.x.x-win32 do katalogu c:\PHP, a także z paczki pecl skopiować plik php_ibm_db2.dll do katalogu c:\PHP\ext.

Czas na konfigurację całości. Tworzymy kopię pliku php.ini-dist o nazwię php.ini w katalogu c:\PHP i poddajemy ją edycji. W sekcji Paths and Directories ustawiamy wartość extension_dir na "c:\PHP\ext", w Dynamic Extensions dodajemy wpis

extension=php_ibm_db2.dll

a na końcu pliku

[IBM DB2]
ibm_db2.instance_name=DB2

gdzie DB2 jest nazwą zainstalowanej przez nas instancji.

Pozostało dołaczyć PHP do Apache. W tym celu przechodzimy do katalogu konfiguracyjnego Apache (u mnie C:\Program Files\Apache Software Foundation\Apache2.2\conf) i poddajemy edycji plik httpd.conf dodając na końcu:


# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php"


Zanim wystartujemy serwer Apache warto przygotować sobie dwa pliki w katalogu htdocs (u mnie C:\Program Files\Apache Software Foundation\Apache2.2\htdocs). Pierwszy o nazwie test.php postaci:

<?php
phpinfo();
?>

i plik db2test.php postaci:

<?php
$database = 'SAMPLE';
$user = 'db2admin';
$password = 'twoje_haslo';

$conn = db2_connect($database, $user, $password);

if ($conn){
echo "Connected";
db2_close($conn);
}
?>


Teraz pozostało jedynie uruchomienie serwera i sprawdzenie poprawności wyświetlania stron: http://localhost/test.php i http://localhost/db2test.php. Na pierwszej z nich powinny zostać wyświetlone zainstalowane moduły php, między innymi dodany przez nas ibm_db2. Na drugiej, jak łatwo się domyślić, wyświetli się napis Connected po nawiązaniu połączenia z bazą danych SAMPLE.

Skoro mamy skonfigurowane środowisko możemy zapoznać się z listą funkcji, oferowanych przez moduł ibm_db2. Pełen spis znajdziemy na stronie http://uk2.php.net/manual/pl/ref.ibm-db2.php.

Jednak jak mawiają dobry programista to leniwy programista. Pojawia się zatem pytanie czy nie można pominąć całego procesu konfiguracji i zainstalować gotowej paczki. Rozwiązaniem jest serwer Zend Core 2 for IBM dostępny na stronie www.zend.com/en/products/core/downloads . Pozwala on na dużo prostszą instalacje środowiska zawierającego Apache HTTP 2, PHP5 (z Zend Optimizerem) i DB2 Express-C 9.