Apache, PHP i wirtualne hosty
01.06.2012 12:48
Jakiś czas temu napisałem sobie prosty skrypt w PHP. który służy do dodawania wirtualnych hostów w Windowsie do Apacha. Podzielę się, może komuś się przyda. Uprzedzam z góry, że jest to skrypt napisany tylko do osobistych zastosowań, więc i jego struktura jest prosta. Był pisany pod natchnieniem chwili i w kilka chwil, więc może zawierać jakieś mało eleganckie rozwiązania :)
Jak działa
Po graniu plików do katalogu ze stronami dla naszego Apacha, wywołujemy jego adres w przeglądarce (np http://localhost/add_domain/). Naszym oczom ukaże się poniższy obrazek:
Na górze podajemy katalog z plikami naszej nowej strony/aplikacji www, niżej nazwę jakiej chcemy używać w przeglądarce. I w zasadzie tyle.Klikamy "Dodaj domenę" i cieszymy się, że zamiast pisać http:://localhost/moja_strona/wersja2 możemy wpisywać http://moja_strona. Takie rozwiązanie niesie za sobą kilka innych korzyści, ale to nie temat tego wpisu.
Oczywiście, żeby nowa domena była dostępna należy jeszcze zrestartować Apacha (ktoś wie może czy i jak da się to zrobić z poziomu PHP?).
Po prawej stronie widać listę już istniejących wirtualnych hostów, a na dole szablon jaki zostaje dodany do wpisów Apacha.
Konfiguracja
W związku, że jest to skrypt do użytku własnego nie ma żadnego panelu, który pozwalałby zmieniać ustawienia. Trzeba to zrobić w plikach skryptu.
Zacznijmy od szablonu wpisu, który zostaje dodany do plików Apacha. Szablon jest w pliku temp.txt i wygląda następująco:
<VirtualHost ##domena##> ServerName ##domena## DocumentRoot "##katalog##" DirectoryIndex index.php <Directory "##katalog##"> AllowOverride All Options +Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
Jak łatwo się domyślić miejsca ##domena## i ##katalog## zostaną zastąpione odpowiednio przez nazwę i katalog wirtualnego hosta. Reszta zostanie wstawiona "tak jak jest", więc można ją swobodnie dostosować do naszych potrzeb.
Pozostaje jeszcze podać skryptowi ścieżki do plików "hosts" w Windowsie i "httpd-vhosts.conf" Apacha oraz katalogu naszego serwera. Robimy to odszukując w pliku index.php następujące zmienne:
- $hosts
- $httpd
- $katalogStartowy
To już koniec
Nie będę opisywał dokładnie jak działa skrypt, bo jest on na tyle prosty, że chyba każdy obyty trochę z PHP zrozumie. Podaję tylko link do gotowego skryptu: http://przyklady.blog.abryser.pl/add_domain.zip