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 wewnątrz, aby pomieścić projekt.site. Może to być w C:\wamp\www\
katalogu lub w całkowicie oddzielnym folderze, takim jak C:\websites
.
Utwórz folder w lokalizacji, którą wybrałeś EG C:\websites\project1\www
lub podc:\wamp\www\project1\www
Teraz otwórz localhost wampmanager->localhost
i kliknij link Add a Virtual Host
w sekcji NARZĘDZIA na stronie głównej.
Zobaczysz taką stronę:
Wypełnij pola zgodnie z instrukcjami powyżej każdego pola
Konfiguracja Virtual Host zostanie utworzona dla Ciebie.
Teraz musisz ponownie uruchomić pamięć podręczną DNS. Możesz to zrobić z menu wampmanagera w ten sposób right click wampmanager->Tools->Restart DNS
. Pamięć podręczna DNS zostanie zrestartowana, a następnie Apache również zostanie zatrzymany i uruchomiony ponownie. Gdy ikona wampmanagera znów zmieni kolor na zielony, wszystko jest zakończone.
Teraz musisz utworzyć prosty index.php
plik lub zainstalować witrynę w folderze utworzonym powyżej.
Zakładając, że Twój VH został wywołany, project.dev
powinieneś zobaczyć tę nazwę w sekcji Your Virtual Hosts na stronie głównej WAMPServer.
Możesz uruchomić witrynę z tego menu lub po prostu użyć nowej nazwy domeny w pasku adresu EG project1.dev
i strona powinna zostać uruchomiona.
Stary mechanizm WAMPServer 2.5 lub jeśli chcesz to wszystko zrobić ręcznie
Nastąpiła zmiana koncepcji w WampServer 2.5 i nowszych i nie bez powodu!
W WampServer MOCNIE zachęca się teraz do tworzenia wirtualnego hosta dla każdego projektu, nawet jeśli trzymasz go w \wamp\www\subfolder
strukturze.
Dokumentacja wirtualnych hostów
Przykłady hostów wirtualnych
Strona główna WampServer ( \wamp\www\index.php
) oczekuje teraz, że utworzyłeś Virtual Host 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 użytkownikom korzystającym z WampServer do nauki PHP, Apache i MySQL, zaproponowano utworzenie podfolderów w \wamp\www\
folderze.
wamp
|
|
|
|
Te podfoldery były następnie wyświetlane jako łącza na stronie głównej WampServer w menu o nazwie „Twoje projekty”, a łącza te zawierałyby łącze do localhost/subfoldername
.
Dopuszczalne tylko w przypadku prostych samouczków
Ułatwiło to życie zupełnie początkującym i było całkowicie akceptowalne, na przykład dla tych, którzy uczą się kodowania PHP. Jednak nigdy nie był przeznaczony do użytku podczas tworzenia prawdziwej witryny internetowej, którą chciałbyś później skopiować na swój serwer na żywo. W rzeczywistości, jeśli używałeś tego mechanizmu, często powodował to problemy, ponieważ konfiguracja aktywnych witryn nie pasowała do konfiguracji programistycznej.
Problem z prawdziwym rozwojem strony internetowej.
Powodem tego jest oczywiście to, że domyślne ustawienie DocumentRoot dla wamp to
DocumentRoot "c:/wamp/www/"
niezależnie od tego, jak nazywa się twój podfolder. To rozwiązanie, które często używało kodu PHP, który sprawdzał strukturę lub twoją witrynę, otrzymywał inne informacje podczas uruchamiania na twoim deweloperskim WampServer niż te, które otrzymywałby podczas uruchamiania na żywym serwerze hostowanym, gdzie konfiguracja DocumentRoot wskazuje na folder u góry strony internetowej hierarchia plików. Ten rodzaj kodu istnieje w wielu frameworkach i systemach CMS, na przykład WordPress i Joomla itp.
Na przykład
Powiedzmy, że mamy projekt o nazwie project1, który jest wstrzymany wamp\www\project1
i działa niepoprawnie jakolocalhost/project1/index.php
Oto, co zostanie 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ę przy użyciu definicji hosta wirtualnego i uruchomili ją, ponieważ http://project1
wyniki w witrynie deweloperskiej WAMPServer będą zgodne z wynikami otrzymanymi w środowisku hostowanym na żywo.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Na początku ta różnica może wydawać się banalna, ale jeśli użyjesz frameworka takiego jak WordPress lub jeden z CMS, na przykład Joomla, może to powodować problemy podczas przenoszenia witryny na serwer działający.
Jak stworzyć wirtualnego hosta w WampServer
Właściwie powinno to 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 już go zdefiniowałeś.
- Utwórz definicję hosta wirtualnego
- Dodaj nową nazwę domeny do pliku HOSTS.
- Usuń komentarz z wiersza w pliku httpd.conf, który zawiera plik definicji Virtual Hosts.
Krok 1 , Utwórz definicję wirtualnego hosta
Edytuj plik o nazwie, w httpd-hosts.conf
którym znajduje się WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Numery wersji Apache mogą się różnić, przed kontynuowaniem należy zaangażować mózg)
Jeśli jest to pierwsza edycja tego pliku, usuń domyślny przykładowy kod, nie będzie on przydatny.
Zakładam, że chcemy utworzyć definicję witryny o nazwie project1, w której żyje
\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, rozpoczynając 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: że każdy wirtualny host jest DocumentRoot
zdefiniowany samodzielnie . Istnieje również wiele innych parametrów, które możesz dodać do definicji Virtual Hosts, sprawdź dokumentację Apache.
Mały na bok
Sposób działania hostów wirtualnych w Apache: Pierwsza definicja w tym pliku będzie również domyślną witryną, więc jeśli nazwa domeny używana w przeglądarce nie będzie pasować do żadnej faktycznie zdefiniowanej domeny hostowanej wirtualnie, uczynienie localhost pierwszą domeną w pliku sprawi, że jest to witryna, która jest ładowana, jeśli próba włamania wykorzystuje tylko Twój adres IP. Więc jeśli upewnimy się, że zabezpieczenia Apache dla tej domeny są ZAWSZE NASTAWIONE
Require local
każdy przypadkowy włamanie z zewnętrznego adresu otrzyma błąd i nie dostanie się do twojego komputera, ale jeśli błędnie wpiszesz domenę, zobaczysz stronę domową WampServer, ponieważ jesteś na tym samym komputerze co WampServer i dlatego local
.
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 w tym przypadku jest widoczne tylko na tym konkretnym komputerze.
Edytować C:\windows\system32\drivers\etc\hosts
Plik nie ma rozszerzenia i taki powinien pozostać. Uważaj na notatnik, ponieważ może spróbować dodać .txt
rozszerzenie, jeśli nie masz lepszego edytora. Sugeruję pobranie Notepad ++, jego darmowego i bardzo dobrego edytora.
Jest to również plik chroniony, więc musisz go edytować z uprawnieniami administratora, więc uruchom edytor za pomocą opcji menu Uruchom jako administrator .
Po zakończeniu edycji plik hosts powinien wyglądać następująco
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Zauważ, że powinieneś mieć tutaj definicje adresu sprzężenia zwrotnego IPV4, 127.0.0.1
a także adresu sprzężenia zwrotnego IPV6, ::1
ponieważ Apache obsługuje teraz protokół IPV6, a przeglądarka będzie używać protokołu IPV4 lub IPV6 lub obu. Nie mam pojęcia, w jaki sposób decyduje, którego użyć, ale może użyć albo, jeśli masz włączony stos IPV6, a większość systemów operacyjnych Windows działa od XP SP3.
Teraz musimy powiedzieć systemowi Windows, aby odświeżył pamięć podręczną nazw domen, więc ponownie uruchom okno poleceń, używając opcji menu Uruchom jako administrator , i wykonaj następujące czynności.
net stop dnscache
net start dnscache
Zmusza to system Windows do wyczyszczenia pamięci podręcznej nazwy domeny i ponownego załadowania go, a ponowne załadowanie spowoduje ponowne odczytanie pliku HOSTS, dzięki czemu będzie wiedział o domenie project1
.
Krok 3 : Usuń komentarz z wiersza w pliku httpd.conf, który zawiera plik definicji Virtual Hosts.
Edytuj plik httpd.conf, użyj menu wampmanager.exe, aby upewnić się, że edytujesz poprawny plik.
Znajdź tę linię w httpd.conf
I po prostu usuń #
ten wiersz, aby odkomentować tę linię.
Aby aktywować tę zmianę w Tobie z 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 zaświeci się ponownie na ZIELONY, oznacza to, że prawdopodobnie zrobiłeś coś złego w \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
pliku.
Jeśli tak, oto przydatny mechanizm pozwalający dowiedzieć się, co jest nie tak. Używa funkcji Apache exe (httpd.exe) do sprawdzania plików konfiguracyjnych i raportowania błędów według nazwy pliku i numerów linii.
Uruchom okno poleceń.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Więc napraw błędy i powtórz test, aż uzyskasz wynik
Syntax OK
Teraz jest jeszcze jedna rzecz.
W systemie menu wampmanagera 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 aktywowany.
„Moje projekty” wyświetli wszystkie podkatalogi katalogu \ wamp \ www i zapewni łącze do uruchomienia witryny w tym podkatalogu. Jak powiedziałem wcześniej, uruchamia „projekt1”, a nie „localhost / projekt1”, więc aby łącze działało, musimy utworzyć definicję hosta wirtualnego, aby ten link faktycznie uruchamiał tę witrynę w przeglądarce, bez definicji hosta wirtualnego, prawdopodobnie uruchom wyszukiwanie w sieci nazwy witryny jako słowa kluczowego lub po prostu zwróć warunek nie znaleziono witryny.
Pozycja menu „Moje wirtualne hosty” jest trochę inna. Przeszukuje plik używany do definiowania hostów wirtualnych (dojdziemy do tego za minutę) i tworzy linki menu dla każdego znalezionego parametru ServerName i tworzy element menu dla każdego z nich. Może się to wydawać nieco zagmatwane, ponieważ po utworzeniu definicji 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 gdybyś się pomylił, jest to bardzo ważny plik.
- Edytuj plik \ wamp \ wampmanager.tpl
- Znajdź ten parametr
;WAMPPROJECTSUBMENU
w sekcji „[Menu.Left]”.
- Dodaj ten nowy parametr
;WAMPVHOSTSUBMENU
przed lub po ;WAMPPROJECTSUBMENU
parametrze.
- Zapisz plik.
- Teraz kliknij prawym przyciskiem myszy ikonę wampmanagera i wybierz „Odśwież”. Jeśli to nie spowoduje dodania menu, „wyjdź” i uruchom ponownie wampmanager.
Ważna uwaga
Nowe menu pojawi się tylko wtedy, gdy masz już zdefiniowane wirtualne hosty! W przeciwnym razie nie zobaczysz żadnej 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 internetowej poza \wamp\
strukturę 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 witryny do lub zacznij tworzyć go w \websites\example.com\www
folderze i zdefiniuj 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 domeny na żywo, tak jakbyśmy użyli example.com jako nazwy serwera, oznaczałoby to, że nie moglibyśmy już uzyskać dostępu do prawdziwej witryny z tego PC, ponieważ skierowałoby witrynę example.com do 127.0.0.1, tj. Ten komputer, a nie do Internetu.
RÓWNIEŻ: Zobacz, że zezwoliłem na dostęp do tej witryny z Internetu w ramach definicji VHOST, ta zmiana będzie miała zastosowanie tylko do tej witryny, a nie do innych. Bardzo przydatne do umożliwienia klientowi przeglądania twoich zmian przez około godzinę bez konieczności kopiowania ich na serwer. Oznacza to, że musimy ręcznie edytować ten plik, aby włączać i wyłączać ten dostęp, zamiast używać elementu menu Umieść online / offline w programie wampmanager.
Dodałem również pewne modyfikacje do konfiguracji PHP, ponownie, które będą miały zastosowanie tylko do tej jednej witryny. Bardzo przydatne przy utrzymywaniu witryny o określonych wymaganiach w przeciwieństwie do wszystkich innych utrzymywanych witryn. Domyślam się, że na podstawie użytych parametrów możemy założyć, że ma gdzieś długo działającą stronę i jest bardzo źle napisana i nie będzie działać z błędami wyświetlanymi w przeglądarce bez okropnego bałaganu na stronie. Uwierz mi, takie strony istnieją i ludzie nadal chcą, aby były źle utrzymywane . Ale to oznacza, że musimy zmienić te parametry tylko dla tej konkretnej witryny, a nie globalnie dla wszystkich witryn wirtualnych działających na WampServer.