Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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:
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

0 nowych
djgrzenio   9 #2 01.06.2012 14:40

wsumie moglbys dorobic opcje aby skrypt sam robil konfig i restartowal apache :)

a do zarzadzania i tak wole ispconfig

  #3 01.06.2012 14:42

@djgrzenio:
Czy w wypadku mod_php taka separacja = separacja również samego PHP, bez używania rzeczy typu suexec itp?

slepciu   11 #4 01.06.2012 15:33

@djgrzenio - pewnie da się poprawić ten skrypt w wielu miejscach i udoskonalić, ale jak pisałem powstał on pod wpływem chwili i służy tylko jako podręczny na kompie, na którym robię stronki i aplikacje w PHP, a w większości przypadków konfiguracja jest taka sama. Fakt przydałby się restart serwera, ale nie wiem jak w Windowsie to zrobić z poziomu PHP.

tfl   8 #5 03.06.2012 15:47

@slecpiu

exec("net stop apache && net start apache");


pod warunkiem, ze uzytkownik dla serwisu apache ma uprawnienia do restartowania procesow

tfl   8 #6 03.06.2012 15:48

@up

sory za literowke w nicku

slepciu   11 #7 04.06.2012 11:39

@tfl
Dzięki za podpowiedź, polecenia działa doskonale, ale z u mnie (z tego co pamiętam instalowane na domyślnych ustawieniach) usługa apache nazywa się "Apache2.2".
No i jeśli koś będzie próbował dodać tą komendę do skryptu, to trzeba wziąć pod uwagę, że restart serwera trwa dosyć długa w związku z tym może być tak, że przekroczy czasy wykonywania się skryptu PHP.