Apache, PHP, MySQL a Windows
Pred pár dňami som na svoj pracovný počítač potreboval nainštalovať webový server, na ktorom by som mohol ladiť PHP skripty, a tak som sa rozhodol, že inštalačný proces zaznamenám. Hlavným dôvodom je, že nemám rád projekty ako napríklad PHPhome (linku neuvádzam zámerne), ktoré síce pomôžu začiatočníkom rýchlo spomínané produkty nainštalovať, no tým pred nimi skrývajú podstatu veci. Na škole som sa stretol s mnohými študentami, ktorí nemali ani len najmenšiu predstavu o tom, kde sa nachádzajú jednotlivé konfiguračné súbory alebo o tom, že PHP je príkazový interpret, ktorý nie je nijako zviazaný s webovým serverom Apache. Radšej ani nebudem písať, že stelesnením MySQL bol pre nich phpMyAdmin a na konzolu sa dokázali iba pozerať.
Apache si môžete stiahnuť zo stránky projektu, a keďže verzie 1.3.x už pre systém Windows nie sú uvoľňované v binárnej podobe, bude logickou voľbou verzia 2.0.x. V mojom prípade som stiahol súbor s názvom “apache_2.0.58-win32-x86-no_ssl.msi”, čo je klasický inštalátor pre systém Windows. Odporúčam však pri inštalácii zmeniť cieľový adresár a nasmerovať ju priamo na disk c:, kde bude inštalátorom aj tak automaticky vytvorený adresár “apache2″. Ušetríte si tým množstvo času stráveného preklikávaním sa cez “Program Files” a ďalšie nezmyselné adresáre s medzerami v názve. Po inštalácii stačí vo vašom prehliadači zadať adresu http://localhost a ak táto akcia neskončí chybovou hláškou, máte v systéme bežiaci webový server. Ten prostredníctvom protokolu HTTP sprístupňuje súbory nachádzajúce sa v adresári “c:apache2htdocs”.
Pri inštalácii príkazového interpreta PHP budeme zasahovať do konfiguračného súboru daemona Apache “c:apache2confhttpd.conf”, preto ho vypneme z príkazového riadka (cmd.exe) príkazom:
C:>net stop apache2
Treba si zapamätať, že po každej úprave konfiguračného súboru je nutné daemon Apache reštartovať. Môžete na to použiť príkazy “net stop apache2″ a “net start apache2″ alebo grafický nástroj systému Windows nachádzajúci sa v sekcii “Computer Management” s názvom “Services”. Dokumentáciu k serveru Apache nájdete na adrese http://httpd.apache.org/docs/2.0/.
Málokto si uvedomuje, že PHP nie je nijako viazané na daemon Apache a môže bežať na akomkoľvek webovom serveri, ktorý podporuje rozhranie CGI. Dá sa tiež použiť aj ako samostatný príkazový interpret podobne ako napríklad Perl. S daemonom Apache sa však často používa najmä preto, lebo sa dá do neho zaviesť ako modul. V takejto konfigurácii sú skripty spracovávané oveľa rýchlejšie a klesajú aj nároky na veľkosť operačnej pamäte. Nevýhodou však je, že prípadná chyba v module servera väčšinou končí pádom celého daemona. Opravoval som už php skripty, ktoré kvôli nesprávnemu zaobchádzaniu s databázovým systémom Firebird a dátovým typom blob spôsobovali pád celého daemona Apache. Pri rozhraní CGI prípadná chyba interpreta skončí len tým, že sa nepodarí zobraziť požadovanú stránku. Rozhranie CGI je však menej výkonné a nepodporuje niektoré pokročilé funkcie jazyka PHP.
Z oficiálnej stránky projektu si stiahnite zip archív PHP verzie 5.x. Verziu s inštalátorom som nikdy neskúšal, pretože v systéme Windows nie je možné presne sledovať čo tento inštalačný proces robí a používateľ tak stráca kontrolu nad systémom. Stiahnutý balík rozbaľte do adresára “c:php”.
V ďalšom kroku je nutné webový server nastaviť tak, aby používal v systéme nainštalovaný interpret jazyka PHP vo forme modulu. Otvorte si preto konfiguračný súbor apacha (c:apacheconfhttpd.conf) v nejakom textovom editore a doplňte do neho nasledovné tri riadky:
LoadModule php5_module "C:/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"
Skôr než zmeny uložíte, si ešte overte, či uvedené súbory a adresáre naozaj existujú. Interpret jazyka PHP sa konfiguruje v jedinom súbore s názvom “php.ini”, ktorý bude daemon Apache vďaka predchádzajúcim nastaveniam hľadať v adresári “c:php”. Pravdepodobne sa už vo vašom systéme nachádza súbor “c:phpphp.ini-recommended”, ktorý obsahuje odporúčanú konfiguráciu. Prekopírujte ho teda do súboru “c:phpphp.ini”.
Ak ste zvyknutý používať ako štartovací tag skriptu “<?” namiesto “<?php”, tak nastavte v tomto súbore direktívu “short_open_tag” na hodnotu “On”.
Ak chcete, aby váš webový server ako predvolený zobrazil obsah súboru s názvom “index.php”, je treba tento názov uviesť v konfiguračnom súbore daemona Apache ako obsah direktívy “DirectoryIndex”:
DirectoryIndex index.php index.html
Pre overenie funkčnosti inštalácie stačí už len spustiť daemon Apache (net start apache2) a vytvoriť súbor “c:apache2htdocsindex.php” s nasledovným obsahom:
<? phpinfo() ?>
Zobrazená stránka by mala vyzerať nejako takto:

Nezabúdajte, že ak používate PHP ako modul daemona Apache, tak po každej zmene v konfiguračnom súbore “php.ini” je nutné Apache reštartovať. Oficiálna dokumentácia k PHP je dostupná na adrese http://www.php.net/docs.php a na českom serveri linuxsoft.cz vyšiel o tomto jazyku rozsiahly seriál.
Reálna sila PHP ako skriptovacieho jazyka pre prostredie internetu sa ukáže až v spojení s nejakým relačným databázovým systémom. Medzi najpopulárnejšie bezpochýb patrí MySQL. Z oficiálnej stránky si opäť stiahnite len zip archív “MySQL 5.0 Community Edition” bez inštalátora. Ja som sťahoval súbor s názvom “mysql-noinstall-5.0.22-win32.zip”.
Obsah archívu rozbaľte do adresára “c:mysql” a prekopírujte knižnicu “c:mysqlbinlibmySQL.dll” do adresárov “c:windowssystem” a “c:windowssystem32″. Ak by ste náhodou nahradzovali túto verziu MySQL novšou, nezabudnite nahradiť aj túto knižnicu.
Pre zaregistrovanie MySQL ako servisu (obdoba daemona z linuxu – “stále bežiaci program”) spustite v príkazovom riadku príkaz:
C:>mysqlbinmysqld --install
Následne môžete MySQL daemona spustiť príkazom:
C:>net start mysql
Hneď po prvom spustení daemona MySQL vám odporúčam spustiť konzolu mysql:
C:mysqlbinmysql -u root mysql
Vytvoriť heslo pre používateľa root:
mysql> UPDATE user SET Password = PASSWORD('heslo') WHERE User = 'root';
Zmazať všetkých ostatných používateľov:
mysql> DELETE FROM user WHERE User NOT LIKE 'root';
A nakoniec prinútiť mysql znovu načítať prístupové údaje používateľov:
mysql> FLUSH PRIVILEGES;
Aby mohli php skripty pristupovať do MySQL databázy, je treba v konfiguračnom súbore “php.ini” povoliť používanie rozšírenia pre MySQL. Overte si teda, či sú v ňom uvedené a nezakomentované nasledovné riadky:
extension_dir = "c:phpext"
extension=php_mysql.dll
Ak ste ešte nepracovali so žiadnym databázovým systémom, tak sa na linuxsoft.cz určite pozrite aj na seriál o MySQL. Nezabúdajte však ani na oficiálnu dokumentáciu, pretože patrí k najlepšie spracovaným dokumentáciam, aké som kedy videl.
Pre istotu ešte raz pripomeniem, že Apache je webový server, ktorý môže byť doplnený o podporu jazyka PHP a vďaka rozšíreniam sa interpret jazyka PHP môže pripajáť k rôznym databázovým systémom ako napríklad MySQL, PostgreSQL alebo Oracle.

Komentáre k článku:
Miro - 04.08.2006 2006 10:50:58
Dobry si Jarko :)
DK - 25.12.2006 2006 15:47:22
vyborny postup, velmi si mi pomohol
Jano - 02.01.2007 2007 11:41:28
Vyborny navod, lepsi nez plno na nete a hlavne funkcny. Ja mam ale asi problem aj inde. Apache server spustim iba ked nejde Skype, kvoli portu 80. Ale po zadani adresy http://localhost prehliadavac iba hlada a hlada, vysledok ziaden. Ak je adresa http://127.0.0.1 tak Apache ide. Ked vsak nainstalujem PHP a chcem otvorit index.php, tak mi pise, ze nemam prava. V com by mohol byt problem?:(
Jano - 02.01.2007 2007 12:23:08
Problem kompletne vyrieseny po nainstalovani VertigoServ z vertrigo.sourceforge.net. Pre dalsie porovnanie este: Comparison of WAMPs. Ide to dalej iba cez 127.0.0.1 a nie cez localhost, al funguje to!:) Vsetkym prajem stastny novy rok!!!
Jaroslav Imrich - 02.01.2007 2007 23:29:22
VertigoServ ti sice pomohol vyriesit problem, no osobne si myslim, ze v skutocnosti ta obral o skusenosti a know-how, ktore si mohol ziskat.
qavid - 06.10.2007 2007 00:51:25
pre Jano:Neviem,ci si uz vyriesil ten problem s tym nacitavanim localhostu…ale ak ano,tak mozno pomozem inym…mne robilo podobne..ked si pozries nastavenia pripojenia skypu, tak zistis,ze je tam nastavenie “pouzit porty 80 a 443 ako alternativne pre prichadzajuce spojenia”, ked toto nastavenie zrusis, vsetko by malo fungovat tak ako ma…preco to prave nefunguje iba na localhost neviem…
Peter Kronos ml - 11.02.2008 2008 15:16:57
Ahoj
Nuz pripajam sa ku klanajucim sa Ti. Toto je jediny manual, podla ktoreho sa mi tuto “svatu trojicu” podarilo rozbehat. Tiez som pred casom siahol po roznych autoinstalatoroch, no vzdy som xcel vediet preco mi to neide aj “transparentnejsie”. Uz to nie je pravda, IDE TO :-)))
Dakujem SQLy manual
PeterK
Marian_ - 01.04.2008 2008 09:59:27
Cafte
tento manual je fakt minimalny z maxi informaciami pre lamu ako ja.Ked som to po x neuspesnych pokusoch spojazdnit apache,mysql,php vzdal tak som nasiel jeden zaujimavy server apache2triad a httpd.conf je v cestine a vcelku z dobrym popisom nastaveni tak som server rozbehal.
No prisiel problem ked som chcel otestovat nejake php scripty stiahnute z netu, ktore vyzadovali vyssiu verziu php pre spustenie.A instalator mi fakt nainstaloval novsie php na komp len som bol vedla ako ho spojazdnit.Som rad ze som nasiel tento sajt musim vyskusat.
To viete Lama … :-)))
rOoT. - 10.04.2008 2008 08:45:16
cawko.. pocujte.. ja mam iba jednu chybu… ked tam popisujes toto: “C:\mysql\bin\mysql -u root mysql” mne to napise ze sa nevie napojit na mysql. Nieco takehoto: ERRIR 2003 (HY000): Can’t connect to mysql server on ’127.0.0.1′ (10061)…
a potom som zistil ze to je tym ze sa mi nevie spustit mysql service… ked ho spustam tak to pise toto:
The MySQL service is starting.
The MySQL service is could not be started.
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
neviete prečo?
rOoT. - 10.04.2008 2008 08:48:09
Uz som to spravil :)
Jaroslav Imrich - 10.04.2008 2008 08:50:41
Treba sa pozrieť do logov systému “Computer Management -> Event Viewer” a zistiť podrobnosti o chybe.
aesalus - 23.04.2008 2008 13:37:34
Super popis. Skoda, ze dom ho nemal ked som hrýzol istalacku apache+php+postgres. Bol by som to mal skor.
fiju - 30.05.2008 2008 19:02:33
zdravim,
mam maly problem. mozno budete vediet poradit. sice namam linux ale klasiku XP
a nainstalovany apache+php+mysql
do vcera mi z browsera fungoval aj localhost aj 127.0.0.1 a dnes nejde ani jedno. po zadani localhost alebo 127.0.0.1 browser zacne hladat uplne nieco ine.
neviem co s tym. poradte.
apache bezi, slq bezi.
Jaroslav Imrich - 31.05.2008 2008 06:36:38
Ak sa nemenila konfiguracia Apacha tipol by som to na chybu prehliadaca. Cez iny browser to funguje?
Pridať komentár