Jak stworzyć wirtualnego hosta w WampServer
WAMPServer 3 znacznie ułatwił ten proces!
Możesz zrobić prawie wszystko z narzędzia dostarczonego jako część WAMPServer.
-
Utwórz folder w środku, który będzie zawierał twój projekt.witryna. Może to być pod
C:\wamp\www\
katalogu lub w całkowicie oddzielnym folderze, takim jakC:\websites
. -
Utwórz folder w wybranej lokalizacji EG
C:\websites\project1\www
lub podc:\wamp\www\project1\www
-
Teraz otwórz localhost
wampmanager->localhost
i kliknij linkDodaj wirtualnego hosta
w sekcji NARZĘDZIA na stronie głównej.
Zobaczysz stronę taką jak ta:
-
Wypełnij pola zgodnie z instrukcjami powyżej każdego pola
-
Konfiguracja hosta wirtualnego zostanie dla Ciebie utworzona.
-
Teraz musisz ponownie uruchomić pamięć podręczną DNS. Możesz to zrobić z menu wampmanagera, tak jak to
kliknij prawym przyciskiem myszy wampmanager->Narzędzia->Uruchom ponownie DNS
. Pamięć podręczna DNS zostanie ponownie uruchomiona, a następnie zatrzymany i ponownie uruchomiony zostanie również Apache. Kiedy ikona wampmanagera zmieni kolor na zielony, wszystko jest zakończone. -
Teraz musisz utworzyć prosty
index.php
plik lub zainstaluj swoją witrynę w folderze utworzonym powyżej. -
Zakładając, że twój VH nazywał się
project.dev
Powinieneś zobaczyć tę nazwę pod Twoimi wirtualnymi hostami Sekcja strony głównej WAMPServer. -
Możesz uruchomić witrynę z tego menu lub po prostu użyć nowej nazwy domeny w pasku adresu, np.
project1.dev
i strona powinna się uruchomić.
Stary mechanizm WAMPServer 2.5 lub jeśli chcesz zrobić to wszystko ręcznie
W WampServer 2.5 i nowszych nastąpiła zmiana koncepcji i jest to dobry powód!
W WampServer jest teraz SILNIE zachęcane do tworzenia wirtualnego hosta dla każdego z twoich projektów, nawet jeśli przechowujesz je w \wamp\www\podfolderze
struktura.
Dokumentacja wirtualnych hostów
Strona domowa WampServer ( \wamp\www\index.php
) oczekuje teraz, że utworzyłeś wirtualnego hosta dla wszystkich swoich projektów i dlatego będzie działać poprawnie tylko wtedy, gdy to zrobisz.
Historia
Aby ułatwić życie początkującym korzystającym z WampServer do nauki PHP Apache i MySQL, zasugerowano utworzenie podfolderów w \wamp\www\
folder.
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
Te podfoldery byłyby następnie wyświetlane jako łącza na stronie głównej WampServer w menu o nazwie „Twoje projekty”, a te łącza zawierałyby łącze do localhost/nazwa podfolderu
.
Dopuszczalne tylko w przypadku prostych samouczków
Ułatwiło to życie całkowicie początkującym i było całkowicie akceptowalne, na przykład dla tych, którzy śledzą samouczki, aby nauczyć się kodowania PHP. Jednak nigdy nie było to przeznaczone do użycia podczas tworzenia prawdziwej witryny internetowej, którą później chciałbyś skopiować na swój hostowany serwer. W rzeczywistości, jeśli użyłeś tego mechanizmu, często powodowało to problemy, ponieważ konfiguracja aktywnych witryn nie pasowałaby do konfiguracji programistycznej.
Problem do tworzenia prawdziwych stron internetowych.
Powodem tego jest oczywiście to, że domyślne ustawienie DocumentRoot dla wamp to
DocumentRoot "c:/wamp/www/"
niezależnie od nazwy twojego podfolderu. Ten element, który często używał kodu PHP, który odpytywał strukturę lub twoją witrynę, otrzymywał inne informacje podczas uruchamiania na twoim deweloperskim WampServer niż te, które otrzymałby podczas uruchamiania na żywo hostowanym serwerze, gdzie konfiguracja DocumentRoot wskazuje na folder na górze hierarchii plików witryny. Ten rodzaj kodu istnieje w wielu frameworkach i CMS, na przykład WordPress i Joomla itp.
Na przykład
Powiedzmy, że mamy projekt o nazwie project1 przechowywany w wamp\www\project1
i działa niepoprawnie jako localhost/project1/index.php
Oto, co zostałoby zgłoszone przez niektóre z omawianych poleceń PHP:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Teraz, gdybyśmy poprawnie zdefiniowali tę witrynę za pomocą definicji wirtualnego hosta i uruchomili ją jako http://project1
wyniki w witrynie programistycznej WAMPServer będą zgodne z tymi otrzymanymi w środowisku hostowanym na żywo.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Teraz ta różnica może na pierwszy rzut oka wydawać się trywialna, ale jeśli użyjesz frameworka, takiego jak WordPress lub jeden z systemów CMS, takich jak Joomla, może to spowodować i powoduje problemy podczas przenoszenia witryny na działający serwer.
Jak stworzyć wirtualnego hosta w WampServer
Właściwie to powinno działać w zasadzie tak samo dla każdego serwera Windows Apache, z różnicami tylko w tym, gdzie można znaleźć pliki konfiguracyjne Apache.
Istnieją 3 kroki, aby utworzyć swój pierwszy wirtualny host w Apache i tylko 2, jeśli masz już zdefiniowany.
- Utwórz definicję(-e) hosta wirtualnego
- Dodaj nową nazwę domeny do pliku HOSTS.
- Odkomentuj wiersz w httpd.conf, który zawiera plik definicji Virtual Hosts.
Krok 1 , Utwórz definicję(-e) hosta wirtualnego
Edytuj plik o nazwie httpd-hosts.conf
w którym mieszka WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Numery wersji Apache mogą się różnić, zaangażuj mózg przed kontynuowaniem)
Jeżeli edytujesz ten plik po raz pierwszy, usuń domyślny przykładowy kod, nie ma z niego żadnego pożytku.
Zakładam, że chcemy stworzyć definicję witryny o nazwie project1, która mieszka w
\wamp\www\project1
Bardzo ważne, najpierw musimy upewnić się, że localhost nadal działa, więc jest to pierwsza definicja VHOST, którą umieścimy w tym pliku.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Teraz definiujemy nasz projekt:i oczywiście robisz to dla każdego ze swoich projektów, gdy zaczynasz nowy.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
UWAGA:każdy wirtualny host jako swój własny DocumentRoot
zdefiniowane. Istnieje również wiele innych parametrów, które możesz dodać do definicji wirtualnych hostów, sprawdź dokumentację Apache.
Mały bok
Sposób działania hostów wirtualnych w Apache:Pierwsza definicja w tym pliku będzie również witryną domyślną, więc jeśli nazwa domeny użyta w przeglądarce nie będzie odpowiadać żadnej faktycznie zdefiniowanej wirtualnie hostowanej domenie, uczynienie localhost pierwszą domeną w pliku spowoduje jest to witryna, która jest ładowana, jeśli próba włamania używa tylko Twojego adresu IP. Jeśli więc upewnimy się, że zabezpieczenia Apache dla tej domeny jest ZAWSZE USTAWIONE NA
Require local
każdy przypadkowy hack z zewnętrznego adresu otrzyma błąd i nie dostanie się do twojego komputera, ale jeśli błędnie wpiszesz domenę, zobaczysz stronę główną WampServer, ponieważ jesteś na tym samym komputerze co WampServer i dlatego lokalny
.
Krok 2 :
Dodaj nową nazwę domeny do pliku HOSTS. Teraz musimy dodać nazwę domeny, której użyliśmy w definicji hosta wirtualnego do pliku HOSTS, aby system Windows wiedział, gdzie ją znaleźć. Jest to podobne do tworzenia rekordu DNS A, ale jest widoczne tylko w tym przypadku na tym konkretnym komputerze.
Edytuj C:\windows\system32\drivers\etc\hosts
Plik nie ma rozszerzenia i powinien tak pozostać. Uważaj na notatnik, ponieważ może spróbować dodać plik .txt
rozszerzenie, jeśli nie masz lepszego edytora. Proponuję pobrać Notepad ++, jego darmowy i bardzo dobry edytor.
Jest to również plik chroniony, więc musisz go edytować z uprawnieniami administratora, więc uruchom edytor za pomocą Uruchom jako administrator opcja menu.
Plik hosts powinien wyglądać tak po zakończeniu edycji
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Zauważ, że powinieneś mieć tutaj definicje adresu pętli zwrotnej IPV4 127.0.0.1
a także adres pętli zwrotnej IPV6 ::1
ponieważ Apache obsługuje teraz IPV6, a przeglądarka użyje IPV4 lub IPV6 lub obu. Nie mam pojęcia, jak decyduje, którego użyć, ale może użyć obu, jeśli masz włączony stos IPV6, a większość systemów operacyjnych z oknami działa od XP SP3.
Teraz musimy powiedzieć systemowi Windows, aby odświeżył pamięć podręczną nazwy domeny, więc uruchom ponownie okno poleceń za pomocą Uruchom jako administrator ponownie opcję menu i wykonaj następujące czynności.
net stop dnscache
net start dnscache
To zmusza system Windows do wyczyszczenia pamięci podręcznej nazwy domeny i ponownego jej załadowania, podczas ponownego ładowania ponownie odczyta plik HOSTS, więc teraz wie o domenie projekt1
.
Krok 3 :Odkomentuj wiersz w httpd.conf, który zawiera plik definicji Virtual Hosts.
Edytuj swój plik httpd.conf, użyj menu wampmanager.exe, aby upewnić się, że edytujesz poprawny plik.
Znajdź tę linię w httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
I po prostu usuń #
aby odkomentować tę linię.
Aby aktywować tę zmianę w uruchomionym Apache, musimy teraz zatrzymać i ponownie uruchomić usługę Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Teraz, jeśli ikona WAMP w zasobniku systemowym nie zmieni się ponownie na ZIELONĄ, oznacza to, że prawdopodobnie zrobiłeś coś złego w \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf plik.
Jeśli tak, oto przydatny mechanizm, aby dowiedzieć się, co jest nie tak. Wykorzystuje funkcję Apache exe (httpd.exe) do sprawdzania plików konfiguracyjnych i zgłaszania błędów według nazwy pliku i numerów linii.
Uruchom okno poleceń.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Napraw błędy i przetestuj ponownie, aż uzyskasz wynik
Syntax OK
Teraz jest jeszcze jedna rzecz.
W systemie menu wampmanager są właściwie 2 nowe pozycje menu. Jeden o nazwie „Moje projekty” który jest domyślnie włączony. I drugi, o nazwie Moje wirtualne hosty , który nie jest domyślnie włączony.
„Moje projekty” wyświetli dowolny podkatalog katalogu \wamp\www i udostępni link do uruchomienia witryny w tym podkatalogu. Jak powiedziałem wcześniej, uruchamia „projekt1”, a nie „localhost/project1”, aby praca z linkami musimy utworzyć definicję hosta wirtualnego, aby ten link faktycznie uruchamiał tę witrynę w przeglądarce, bez definicji hosta wirtualnego prawdopodobnie uruchomi wyszukiwanie w sieci WWW dla nazwy witryny jako słowa kluczowego lub po prostu zwróci warunek nieznalezienia witryny.
Pozycja menu „Moje wirtualne hosty” jest nieco inna. Przeszukuje plik, który jest używany do definiowania wirtualnych hostów (dojdziemy do tego za minutę) i tworzy łącza menu dla każdego znalezionego parametru ServerName i tworzy pozycję menu dla każdego z nich. Może to wydawać się trochę mylące, ponieważ po utworzeniu definicja hosta wirtualnego dla podkatalogów folderu \wamp\www, niektóre elementy pojawią się zarówno w menu „Moje projekty”, jak iw menu „Moje wirtualne hosty”.
Jak włączyć inne menu „Moje wirtualne hosty”?
- Zrób kopię zapasową pliku \wamp\wampmanager.tpl, na wypadek pomyłki, jest to bardzo ważny plik.
- Edytuj plik \wamp\wampmanager.tpl
- Znajdź ten parametr
;WAMPPROJECTSUBMENU
, znajduje się w sekcji '[Menu.Left]'. - Dodaj ten nowy parametr
;WAMPVHOSTSUBMENU
przed lub po;WAMPPROJECTSUBMENU
parametr. - Zapisz plik.
- Teraz kliknij prawym przyciskiem myszy ikonę wampmanager i wybierz „Odśwież”. Jeśli to nie doda menu, „wyjdź” i zrestartuj wampmanager.
Wielka uwaga Nowe menu pojawi się tylko wtedy, gdy masz już zdefiniowane wirtualne hosty! W przeciwnym razie nie zobaczysz różnicy, dopóki nie zdefiniujesz VHOST.
Teraz, jeśli weźmiesz to do logicznego rozszerzenia
Możesz teraz całkowicie przenieść kod swojej witryny poza \wamp\
struktura folderów po prostu zmieniając parametr DocumentRoot w definicji VHOST. Na przykład możesz to zrobić:
Utwórz folder na dysku wamp lub innym dysku (uwaga na dysk sieciowy, są one nieco bardziej skomplikowane)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Teraz skopiuj kod swojej witryny lub zacznij go tworzyć w \websites\example.com\www
folder i zdefiniuj swój VHOST w ten sposób:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Następnie dodaj tę nową domenę programistyczną do pliku HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
UWAGA:Nie jest dobrym pomysłem używanie ServerName lub ServerAlias, które są takie same jak nazwa Twojej aktywnej domeny, tak jak gdybyśmy użyli example.com jako ServerName, oznaczałoby to, że nie możemy już uzyskać dostępu do rzeczywistego z tego komputera, ponieważ przekieruje example.com na 127.0.0.1, czyli na ten komputer, a nie do Internetu.
RÓWNIEŻ:Zobacz, że zezwoliłem na dostęp do tej witryny z Internetu z definicji VHOST, ta zmiana będzie dotyczyć tylko tej witryny, a nie innych. Bardzo przydatne, aby umożliwić klientowi przeglądanie zmian przez mniej więcej godzinę bez konieczności kopiowania ich na działający serwer. Oznacza to, że musimy ręcznie edytować ten plik, aby włączyć lub wyłączyć ten dostęp, zamiast używać funkcji Put Online/ Pozycja menu offline na wampmanager.
Dodałem również pewne modyfikacje do konfiguracji PHP, które będą miały zastosowanie tylko do tej jednej witryny.Bardzo przydatne podczas utrzymywania witryny o określonych wymaganiach, w przeciwieństwie do wszystkich innych utrzymywanych witryn. Myślę, że możemy założyć z użytych parametrów, które ma długo działająca strona gdzieś w niej jest i jest bardzo źle napisana i nie będzie działać z błędami wyświetlanymi w przeglądarce bez robienia okropnego bałaganu na stronie. Uwierz mi, takie witryny istnieją, a ludzie nadal chcą, aby były źle utrzymywane . Ale oznacza to, że musimy zmienić te parametry tylko dla tej konkretnej witryny, a nie globalnie dla wszystkich witryn wirtualnych działających na WampServer.