Serwer lokalny

Zazwyczaj chcemy naszą stronę tworzyć tworzyć lokalnie na własnym komputerze, a po gotowej robocie wrzucić ją na serwer w internecie :)
Aby pisać strony w html nie potrzebujemy nic poza chęciami. Natomiast do mySql, php itp potrzebny jest nam serwer lokalny.

Możemy to wszystko instalować ręcznie, zmieniać konfigurację edytując pliki itp, ale o wiele przyjemniejsze jest skorzystać z gotowców, które całą robotę zrobią za nas. W poniższym artykule zajmiemy się właśnie takimi rozwiązaniami.

Wamp, Xampp
Wymieniam je obok siebie, ponieważ są to praktycznie bliźniaki. Oba mają swoje instalatory, więc zainstalowanie ich to 2-3 kliknięcia. Jeżeli po zainstalowaniu i odpaleniu serwera nie możesz dostać się na localhost (wpisując w przeglądarce 127.0.0.1 lub localhost), zapewne masz włączonego firewala (panel sterowania -> zapora windows) lub blokuje dostęp antywirus. Wyłącz antywira, wyłącz zaporę i sprawdź ponownie. Kwestia poklikania :)

Serwery te robią za nas całą czarną robotę z ustawianiem mySql, php itp. Wystarczy je zainstalować i jesteśmy gotowi do działania.
Oczywiście pierwsze co zrobimy to zlokalizowanie katalogu gdzie wrzucimy naszą stronę. W Xampie jest to domyślnie katalog xampp/htdocs, natomiast w Wampie wamp/www (mamy do niego dostęp poprzez ikonę z zasobnika). Tam właśnie wrzucamy naszą stronę (wcześniej możemy ten katalog wyczyścić, bo raczej domyślna strona nas nie zainteresuje).

Osobiście nie będę faworyzował któregoś z nich. Na jednym komputerze używam xampa, na drugim Wampa. Oba sprawdzają się bardzo dobrze.
Jeżeli wybierzesz Xampa, wtedy zainteresuj się konsolą ustawień, którą znajdziesz w katalogu xampa (jeżeli używasz wersji portable, to zrób sobie do niej skrót – bardzo przydatna rzecz).
W przypadku Wampa zainteresuje cię możliwość wyłączenia bajeranckich ostrzeżeń generowanych przez ten serwer. Wystarczy kliknąć na ikonę wampa LPM i wybrać PHP -> PHP Settings -> display errors (opcja ta wyłącza tylko pomarańczowe oka ostrzeżeń, php dalej będzie pokazywał standardowe).

Po zainstalowaniu serwera, włączamy go i wrzucamy naszą strony do katalogu www (najlepiej stworzyć tam podkatalog – np naszaSuperStrona). Teraz wpisując w przeglądarce adres 127.0.0.1/naszaSuperStrona lub localhost/naszaSuperStrona uzyskamy do niej dostęp. Jeżeli dostępu nie uzyskamy, wtedy rozprawiamy się z blokadami zapory (patrz wyżej).

Virtual Hosty

Zanim jednak zaczniemy kodować, warto ustawić sobie Virtual Hosty.
Ki diabeł? Są to wirtualne adresy do naszych stron. Adres localhost/naszaSuperStrona nie dość, że wygląda nieprawdziwie, to na dodatek nie pozwala nam korzystać ze ścieżek absolutnych (czyli zaczynających się od /). My chcemy by nasza strona zachowywała się zupełnie tak jak w internecie, dlatego damy jej prawdziwy adres (a raczej wirtualny) – w naszym przykładzie nasza-super-strona.lh.

Pierwszą rzeczą jest edycja pliku hosts, który znajduje się w windows\system32\drivers\etc. Wchodzimy tam i widzimy mniej więcej taką konstrukcję (lub bliźniaczo podobne):

127.0.0.1 localhost

Oznacza ona tyle, że jeżeli w przeglądarce wpiszemy localhost, zostaniemy przeniesieni na adres 127.0.0.1 (czyli naszego serwera). Analogicznie dodajmy sobie nasz wirtualny adres:

127.0.0.1 moja-super-strona.lh

Jest to totalnie wymyślony adres. Lh na końcu to tylko dodatek, który pomoże nam oznaczyć, że dany adres odnosi się do lokalnych stron. Po wpisaniu do przeglądarki adresu „moja-super-strona.lh” zostaniemy przeniesieni do głównego katalogu localhost.
Musimy teraz ustawić nasz serwer, aby wiedział o którą podkatalog nam chodzi.

Pierwszą rzeczą (jednorazową) jest wyjaśnienie naszemu serwerowi, że skorzystamy z dodatkowego pliku z opisem wirtualnych hostów. Edytujemy więc plik wamp/bin/apache…/conf/httd.conf (podobny będzie w Xampie) i odnajdujemy tam coś takiego:

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

Odkomentowywujemy tą drugą linijkę usuwając # z początku linii (jeżeli już to jest zrobione to bardzo dobrze :). Dzięki tej operacji będziemy mogli dodawać nasze wirtualne hosty do pliku – i bardzo dobrze, bo powyższy plik i tak jest mocno zaśmiecony..
Od tej pory adresy będziemy dodawać do pliku wamp/bin/apache…/conf/httd-vhosts.conf .
Wstawiamy tam nasz wirtualny host:

nameVirtualHost *:80

#---------------------------------------------
<VirtualHost *:80>
	DocumentRoot "C:\wamp\www\mojaSuperStrona"
	ServerName moja-super-strona.lh

	<Directory "C:/wamp/www/mojaSuperStrona">
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
</VirtualHost>
#---------------------------------------------

Pierwsza linijka powoduje, że będziemy mogli użyć kilku adresów dla portu serwera. Ogólnie nas najbardziej interesuje kod spomiędzy linii, który dla każdej nowej strony będzie bliźniaczo podobny, jedynie zmieniać się będą nasze adresy (nie zapomnijmy też o przekierowania do pliku host w windowsie).

#---------------------------------------------
<VirtualHost *:80>
	DocumentRoot "C:\wamp\www\mojaSuperStrona"
	ServerName moja-super-strona.lh

	<Directory "C:/wamp/www/mojaSuperStrona">
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
</VirtualHost>
#---------------------------------------------
<VirtualHost *:80>
	DocumentRoot "C:\wamp\www\innyKatalogZeStrona"
	ServerName inna-strona.lh

	<Directory "C:/wamp/www/innyKatalogZeStrona">
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
</VirtualHost>
#---------------------------------------------

Wystarczy teraz zrestartować nasz serwer i wpisać w przeglądarkę nasz nowy adres. Jeżeli nasza strona się nie pojawi, warto odświeżyć adresy dns wpisując w pole uruchom (w pasku zadań):

ipconfig /flushdns

Powinno teraz działać. Jeżeli nie, trzeba wtedy pisać komentarze i wypraszać innych by pomogli (lub skorzystać z wujka Google) :)

Cała operacja nie jest zbyt wygodna, zwłaszcza, że za każdym razem musimy wyedytować host i httpd-vhosts.conf. Uprośćmy sobie to zadanie. Tworzymy na pulpicie nowy skrót, który będzie nam otwierał do edycji oba pliki. W pole „Element docelowy” wstawiamy konstrukcję:

"C:\Program Files\Notepad++\notepad++.exe" C:\WINDOWS\system32\drivers\etc\hosts C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-vhosts.conf

Początkowa ścieżka musi prowadzić do naszego edytora. Po kliknięciu w taki skrót zostaną wyedytowane oba pliki. Copy pasta z poprzednich virtual hostów i po kilku sekundach mamy nowy adres :)

Jeżeli korzystasz z windows XP, warto dodać sobie jeszcze jedno małe ułatwienie. Wchodzimy do katalogu C:\Documents and Serrings\[nazwa użytkownika]\Ulubione\Łącza i tworzymy tam skrót do katalogu z naszymi stronami (C:\wamp\www). Następnie w dowolnym oknie z folderem klikamy Widok->Paski narzędzi->Łącza. Od tej pory w każdym katalogu mamy szybki link do naszego ulubionego folderu :) Resztę linków z „Łączy” możemy usunąć, bo to spam…

To tyle odnośnie konfiguracji stron ;]

Na koniec warto wspomnieć, że nasza strona powinna zawierać plik index.html lub index.php, w przeciwnym przypadku będziemy musieli w adresie podawać też nazwę właściwego pliku z kodem. No ale to takie podstawy, że każda książka/tutorial o tym pisze.

Edit 1 – win7 i problemy

Po upgradzie komputera i przesiadce na Win7 64bit, powyższe metody wcale nie okazały się takie oczywiste.
Ze względu na zabezpieczenia które ma Win7, często zdarza się, że hosty zwyczajnie nie działają. Po przebiciu się przez setkę tutoriali, porad itp. udało mi się wreszcie zmusić Xamppa do tego, by brał pod uwagę virtualhosty.

Jeżeli będziesz miał problemy z niedziałającymi hostami w tym sytemie, możesz spróbować:

  • Usunąć, i stworzyć na nowo plik host. Najlepiej stworzyć go w notepadzie, by nie było w nim jakiś znaków unicode (zapisując pamiętaj, że domyślnie notepat może chcieć stworzyć plik .txt). Dodatkowo w pliku tym adresy IP oddzielaj od nazw tylko jedną spacją. Na stackoverflow ktoś pisał, że w win7 64bit są problemy gdy ten odstęp jest większy (ki diabeł?). Jeżeli będziesz miał problemy z edycją takiego pliku, wtedy klikasz na nim prawym guzikiem i wybierasz uruchom jako administrator. Dodatkowo klikając prawym i wybierając właściwości/zabezpieczenia możesz ustawić przywileje użytkowników dla tego pliku. Chociaż w metodzie z usuń/stwórz nowy to akurat nie było mi potrzebne.
  • Edytujemy plik c:/xampp/apache/conf/httpd.conf (lub analogicznie). Szukamy w tym pliku linijki rozpoczynającej się od słowa User. Tuż pod nią jest linijka „Group” (u mnie były to linie w okolicach 187). Jako usera musimy wpisać nazwę naszego użytkownika. Oczywiście taki użytkownik musi mieć uprawnienia do czytania htdocs :)

Po tych ustawieniach w moim przypadku wszystko zaczęło śmigać.
Oczywiście u was problemy mogą być bardziej trywialne, jak choćby błędne wpisy w vhostach itp. Ale o tym możecie poczytać we wspomnianej dwusetce tutoriali. Pozdrawiam uff.