Apache, PHP i wirtualne hosty

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:

reklama

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  

oprogramowanie internet serwery

Komentarze