jak stworzyć wirtualnego hosta na XAMPP


83

Jestem pewien, że to pytanie jest zadawane wielokrotnie, ale nie napotykam problemu. Używam XAMPP, gdzie konfiguruję framework Zend.

XAMPP działa na porcie 8081, ponieważ 80 jest zajęty przez jakiś proces Windows, do którego muszę użyć wirtualnego hosta, który konfiguruję za pomocą następującego kodu w C:/xampp/apache/config/extra/httpd-vhosts.config(lub C:/xampp/apache/conf/extra/httpd-vhosts.confnowszych wersjach).

<VirtualHost *:80>
ServerName comm-app.local
DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public"
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>    

a także zaktualizuj plik hosts 127.0.0.1 comm-app.locali spróbuj ponownie uruchomić Apache, ale wyświetla błąd.

15:03:01  [Apache]  Error: Apache shutdown unexpectedly.
15:03:01  [Apache]  This may be due to a blocked port, missing dependencies, 
15:03:01  [Apache]  improper privileges, a crash, or a shutdown by another method.
15:03:01  [Apache]  Press the Logs button to view error logs and check
15:03:01  [Apache]  the Windows Event Viewer for more clues
15:03:01  [Apache]  If you need more help, copy and post this
15:03:01  [Apache]  entire log window on the forums

2
Czy VirtualHost *: 80 nie powinien być VirtualHost *: 8081, jeśli to tam działa Apache
TommyBs

4
Proces Windows zajmujący port 80 może być Skype.
Marek

Odpowiedzi:


70

Widzę dwa błędy:

<VirtualHost *:80> -> Fix to :8081, your POrt the server runs on
    ServerName comm-app.local
    DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public" -> This is probably why it crashes, missing >
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
 -> MIssing close container: </VirtualHost> 

Naprawiona wersja:

<VirtualHost *:8081>
    ServerName comm-app.local
    DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Należy wspomnieć o jednej rzeczy:

Zawsze możesz spróbować uruchomić polecenie:

service apache2 configtest

Dzięki temu dowiesz się, kiedy otrzymałeś nieprawidłową konfigurację, a może nawet możesz powiedzieć, gdzie jest problem.

Ponadto pomaga uniknąć niedostępności w systemie LIVE:

service apache2 restart

wyłączy się, a następnie nie uruchomi, ten test konfiguracji, który znasz z góry "oops, zrobiłem coś źle, powinienem najpierw to naprawić", ale sam Apache nadal działa ze starą konfiguracją. :)


Apache uruchamia się po wykonaniu tych poprawek, ale comm-app.local nadal nie jest znaleziony na serwerze z komunikatem Not Found HTTP Error 404. Żądany zasób nie został znaleziony.
Paras Arora

Czy skonfigurowałeś comm-app.local do przekierowania do 127.0.0.1 w pliku hosts? Czy jesteś pewien, że twoja ścieżka jest prawidłowa? No i oczywiście musisz zamknąć kontener VirtualHost, jeśli tego nie zrobiłeś ... (Zaktualizowałem mój post)
Steini,

1
tak, po prostu umieszczam 127.0.0.1 comm-app.local w pliku hosts, a nawet restartuję serwer
Paras Arora,

I wpisałeś comm-app.local: 8081 w przeglądarce? (Może zapomniałeś portu)? Przypomnij sobie, aby zrestartować apache po zmianie config. Jednak jeśli to nadal nie zadziała, coś innego jest nie tak w twoim pliku konfiguracyjnym ...
Steini,

Cześć! Steini. Mam ten sam problem. Czy istnieje sposób, aby uniknąć wpisywania numeru portu po nazwie wirtualnego hosta? Z góry
dziękuję

65

Krok 1) C: \ WINDOWS \ system32 \ drivers \ etc \ Otwórz plik „hosts”:

127.0.0.1       localhost
127.0.0.1       test.com
127.0.0.1       example.com

Krok 2) Xampp \ apache \ conf \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/test/
    ServerName www.test.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/example/
    ServerName www.example.com
</VirtualHost>

Krok 3) C: \ xampp \ apache \ conf \ httpd.conf. Przewiń w dół do sekcji Konfiguracja dodatkowa na końcu i znajdź następującą sekcję (wokół linii 500). Usuń # z początku drugiej linii, aby sekcja wyglądała teraz następująco:

#Virtual hosts
Include conf/extra/httpd-vhosts.conf

Krok 4) Uruchom ponownie XAMPP i teraz uruchom w przeglądarce:

www.example.com or www.test.com

1
Hej, amit ... Mój zadziwiająco nie działa ... Jedyne różnice w moich ustawieniach to: 127.0.0.4 mycustomdomaini działa na porcie 90, więc użyłem <VirtualHost 127.0.0.4:90>. Nie udaje się, gdy próbuję w przeglądarcehttp://mycustomdomain
Jason Krs

8

Dodaj ten kod w C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName qa-staging.com
ServerAlias www.qa-staging.com
<Directory "c:/xampp/htdocs">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Teraz dodaj nazwę swojego wirtualnego hosta w poniższym pliku.

C:\Windows\System32\drivers\etc\hosts

127.0.0.1 qa-staging.com

Jeśli nie możesz zapisać tego kodu w pliku hosta, kliknij prawym przyciskiem myszy notpad wybierz Uruchom jako administrator, a następnie możesz zapisać swój niestandardowy kod teraz ponownie uruchom XAMP


7

Napisz te kody na końcu pliku C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf,

DocumentRoot "D:/xampp/htdocs/foldername"
ServerName www.siteurl.com
ServerAlias www.siteurl.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common

między tagiem hosta wirtualnego.

i edytuj plik System32 / Drivers / etc / hosts, użyj Notatnika jako administrator

dodaj dół pliku

127.0.0.1    www.siteurl.com

4
<VirtualHost *:80>
    DocumentRoot "D:/projects/yourdirectry name"
    ServerName local.yourdomain.com
    <Directory "D:/projects/yourdirectry name">
        Require all granted 
    </Directory>
</VirtualHost>

Zapisz plik konfiguracyjny Apache.

szczegółowe informacje znajdują się w tym


4

Po prostu zmień port na, 8081a następujący wirtualny host będzie działał:

<VirtualHost *:8081>
ServerName comm-app.local
DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

To pomyłka, tak, ale nie przeszkodziłoby to uruchomieniu usługi Apache, spowodowałoby jedynie ostrzeżenie, a
vhost

Apache uruchamia się po wykonaniu tych poprawek, ale comm-app.local nadal nie jest znaleziony na serwerze z komunikatem Not Found HTTP Error 404. Żądany zasób nie został znaleziony.
Paras Arora

3

Na Twoim dysku: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf istnieje przykład i możesz go edytować za pomocą swojej konfiguracji:

 ##<VirtualHost *:80>
 ##ServerAdmin webmaster@dummy-host.example.com
 ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
 ##ServerName dummy-host.example.com
 ##ServerAlias www.dummy-host.example.com
 ##ErrorLog "logs/dummy-host.example.com-error.log"
 ##CustomLog "logs/dummy-host.example.com-access.log" common
 ##</VirtualHost>

Byłoby tak, jako przykład i nie zapomnij dodać VirtualHost dla samego hosta lokalnego, aby mieć możliwość uruchomienia phpmyadmin i innego projektu w tym samym czasie na porcie 80, jako przykład pokażę z projektem store.local :

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@store.local
DocumentRoot "c:/xampp/htdocs/store.local/public"
ServerName www.store.local
ServerAlias store.local
<Directory C:/xampp/htdocs/store.local>
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

następnie, jak wspomniano powyżej, musisz dodać: C: \ windows \ system32 \ drivers \ hosts na końcu pliku

127.0.0.1    store.local
127.0.0.1    www.store.local

uruchom ponownie Apache i spróbuj w przeglądarce:

store.local or www.store.local

może za pierwszym razem musisz dodać w ten sposób:

http://store.local or http://www.store.local

Aby korzystać z innych portów, musisz dodać następujące informacje przed swoim VirtualHost:

Listen 8081 or another which you prefer

następnie po prostu użyj portu dla swojego VirtualHost w następujący sposób:

<VirtualHost *:8081>
ServerAdmin webmaster@store.local
DocumentRoot "c:/xampp/htdocs/store.local/public"
ServerName store.local
ServerAlias www.store.local
<Directory C:/xampp/htdocs/store.local>
    AllowOverride All
    Require all granted
</Directory>

następnie uruchom ponownie Apache i spróbuj w przeglądarce

store.local:8081 or www.store.local:8081

i tylko projekt, dla którego dodasz port, będzie działał na tym porcie, na przykład inne projekty i phpmyadmin będą nadal działały na porcie 80


2

Dokumentacja hosta wirtualnego Apache Konfigurowanie hosta wirtualnego (vhost) zapewnia kilka korzyści:

  • Wirtualne hosty czynią adresy URL czystszymi - localhost / mysite vs mysite.local.
  • Wirtualne hosty ułatwiają przyznawanie uprawnień - ogranicz dostęp dla pojedynczego vhosta w sieci lokalnej zamiast zezwalania na dostęp do wszystkich witryn w sieci lokalnej.
  • Niektóre aplikacje wymagają znaku „.” w adresie URL (ahem Magento). Chociaż możesz skonfigurować localhost.com/mysite, edytując plik hostów systemu Windows, lepszym rozwiązaniem jest utworzenie vhosta.

Dyrektywa VirtualHost Zawiera dyrektywy, które mają zastosowanie tylko do określonej nazwy hosta lub adresu IP

Dyrektywa lokalizacji Stosuje załączone dyrektywy tylko do pasujących adresów URL

Przykład zmiany w pliku konfiguracyjnym -D:\xampp\apache\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin localhost
    DocumentRoot "D:/xampp/htdocs"
    ServerName localhost
</VirtualHost>

<VirtualHost localhost:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  #DocumentRoot "D:\xampp\htdocs\phpPages"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>

# To get view of PHP application in the Browser.
<VirtualHost *:80>
    ServerAdmin postmaster@dummy-host.localhost
    DocumentRoot "D:\xampp\htdocs\app1"
    ServerName app1.yash.com
    ServerAlias app1.yash.com
    ErrorLog "logs/app1.yash.com-error.log"
    CustomLog "logs/app1.yash.com-access.log" combined
    
    # App1 communication proxy call to Java War applications from XAMP
    <Location /ServletApp1>
            ProxyPass  http://app1.yashJava.com:8080/ServletApp1
            ProxyPassReverse  http://app1.yashJava.com:8080/ServletApp1
            Order Allow,Deny
            Allow from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin postmaster@infotreesolutions.com
    DocumentRoot "D:\xampp\htdocs\app2"
    ServerName app2.yash.com
    ErrorLog "logs/app2.yash.com-error.log"
    CustomLog "logs/app2.yash.com-access.log" combined
    
    # App1 communication proxy call to Java War applications from XAMP
    <Location /ServletApp2>
            ProxyPass  http://app1.yashJava.com:8080/ServletApp2
            ProxyPassReverse  http://app1.yashJava.com:8080/ServletApp2
            Order Allow,Deny
            Allow from all
    </Location>
</VirtualHost>

Zaktualizuj plik hostów systemu Windows «Otwórz plik hostów systemu Windows znajdujący się w C:\Windows\System32\drivers\etc\hosts.

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

127.0.0.1       test.com
127.0.0.1       example.com
127.0.0.1       myssl.yash.com

D:\xampp\apache\conf\httpd.conf, [httpd-ssl.conf](http://httpd.apache.org/docs/2.2/mod/mod_ssl.html)

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost> directive.
# Listen 0.0.0.0:80 | [::]:80
Listen 80

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule speling_module modules/mod_speling.so

# ServerAdmin: Your address, where problems with the server should be e-mailed.
# This address appears on some server-generated pages, such as error documents.
#  e.g. admin@your-domain.com
ServerAdmin postmaster@localhost
ServerName localhost:80
DocumentRoot "D:/xampp/htdocs"

<Directory "D:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"

# ===== httpd-ssl.conf - SSL Virtual Host Context =====
# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two
#       Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"
Listen 443
## SSL Virtual Host Context
<VirtualHost _default_:443>
    DocumentRoot "D:\xampp\htdocs\projectFolderSSL"
    ServerName myssl.yash.com:443
    ServerAlias myssl.yash.com:443
        
    ServerAdmin webmaster@localhost
    ErrorLog "logs/error.log"
    <IfModule log_config_module>
        CustomLog "logs/access.log" combined
    </IfModule>
    
    ## Redirecting URL from Web server to Application server over different machine.
    # myssl.yash.com:443/ServletWebApp
    <Location /path>
        ProxyPass  http://java.yash2.com:8444/ServletWebApp
        ProxyPassReverse  http://java.yash2.com:8444/ServletWebApp
        Order Allow,Deny
        Allow from all
    </Location>
    
    #SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateFile "D:\SSL_Vendor\yash.crt"
    
    #SSLCertificateKeyFile "conf/ssl.key/server.key"
    SSLCertificateKeyFile "D:\SSL_Vendor\private-key.key"
    
    #SSLCertificateChainFile "conf/ssl.crt/server-ca.crt"
    SSLCertificateChainFile "D:\SSL_Vendor\intermediate.crt"
</VirtualHost>
# ===== httpd-ssl.conf - SSL Virtual Host Context =====

@widzieć


1

Naprawiłem to za pomocą następującej konfiguracji.

 Listen 85
 <VirtualHost *:85>
           DocumentRoot "C:/xampp/htdocs/LaraBlog/public"
           <Directory "C:/xampp/htdocs/CommunicationApp/public">
           DirectoryIndex index.php
           AllowOverride All
           Order allow,deny
           Allow from all
           </Directory>
 </VirtualHost>

0

Trochę spóźniłem się na imprezę, ale napisałem ten mały skrypt bash dla Maca, który tworzy VirtualHost za pośrednictwem terminala:

#!/bin/bash

echo "Welcome to the VirtualHostCreator! Press <RETURN> to continue."

read

echo "Enter the name the VirtualHost you would like to create. No spaces or dashes, please."

read hostname

echo "Enter the document root of the VirtualHost."

read doc_root

echo "Creating VirtualHost \"$hostname\". You may be prompted for your password."

hosts_file="/etc/hosts"
vhosts_file="/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf"
restart_command="sudo /Applications/XAMPP/xamppfiles/xampp restart"

cat >> $vhosts_file << EndOfMessage
<VirtualHost ${hostname}>
    ServerName ${hostname}
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/${doc_root}"
</VirtualHost>
EndOfMessage

sudo sh -c "echo \"127.0.0.1       $hostname\" >> $hosts_file"

$restart_command

Jestem pewien, że jest kilka ulepszeń, które można wprowadzić i ma tylko dwie wymagane opcje dla vhosta (nazwa serwera i katalog główny), ale wykonuje to zadanie znacznie szybciej i wydajniej niż otwieranie i edytowanie wszystkich plików ręcznie, a następnie automatycznie ponownie uruchamia XAMPP.

Zakłada się, że masz domyślną lokalizację instalacji XAMPP, którą można zmienić.


0

Krok 1) Otwórz plik hosta w „C: \ Windows \ System32 \ drivers \ etc”

Dodaj

127.0.0.1  vipsnum.mk

Krok 2) Otwórz plik httpd-vhosts.conf w „C: \ xampp \ apache \ conf \ extra”

Dodaj

<VirtualHost vipsnum.mk:80>
    ServerName vipsnum.mk
    DocumentRoot "C:/xampp/htdocs/vipnum/"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/vipnum/">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost> 

0
1. C:\xampp\apache\conf\https.conf
Virtual hosts
Include conf/extra/httpd-vhosts.conf


2. C:\Windows\System32\drivers\etc\hosts
127.0.0.1       localhost
127.0.0.1       helpdesk.local


3. C:\xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/helpdesk/public"
    ServerName helpdesk.local
</VirtualHost>


Now, Restart Apache and go through the link. 
URL : http://helpdesk.local

0

Problem z xampp w moim przypadku polega na określeniu innego folderu niż htdocs, szczególnie w przypadku wielu domen i folderów dedykowanych. Dzieje się tak, ponieważ httpd-ssl.confjest również odniesieniem <VirtualHost>.

Aby to zrobić, usuń cały <VirtualHost>wpis podhttpd-ssl.conf

Stamtąd wszelkie ustawienia, które wprowadzisz, httpd-vhosts.confzostaną zaktualizowane zgodnie z oczekiwaniami, zarówno jak httpi httpsodniesienia.


0

Od dłuższego czasu szukałem rozwiązania. I wreszcie mam odpowiedź. Jeśli Twój wirtualny host nie działa w systemie Windows 10 lub 7 itp., Dzieje się tak z powodu nowego szumu https, w którym wszystkie witryny są kierowane na https.

XAMPP podąża za tym samym trendem, więc naprawianie wirtualnych hostów, plików hostów itp. Nie wystarczy, ze względu na ścisłe przekierowanie https. Oto pełne rozwiązanie.

Moja żądana witryna znajduje się w D: \ xampp \ htdocs \ ikeen.

1) Dodaj to do swojego httpd-vhosts.conf:

<VirtualHost *:80>
     ServerName localhost
     DocumentRoot "D:\xampp\htdocs"
     <Directory "D:\xampp\htdocs">
         DirectoryIndex index.php
     </Directory>
 </VirtualHost>

<VirtualHost *:80>
     ServerName ikeen.localhost
     DocumentRoot "D:\xampp\htdocs\ikeen"
     SetEnv APPLICATION_ENV "development"
     <Directory "D:\xampp\htdocs\ikeen">
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all        
     </Directory>
 </VirtualHost>

2) Dodaj to na końcu httpd.conf:

<Directory />
    AllowOverride none
    Require all granted
</Directory>

3) Dodaj tę linię do pliku hosts w katalogu Windows

127.0.0.1      ikeen.localhost

4) Ostatnim krokiem jest zmiana sekcji VirtualHost w pliku httpd-ssl.conf na następującą

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "D:/xampp/htdocs"
#ServerName www.example.com:443
ServerName localhost
ServerAdmin admin@example.com
ErrorLog "D:/xampp/apache/logs/error.log"
TransferLog "D:/xampp/apache/logs/access.log"

#   General setup for the ikeen host
DocumentRoot "D:/xampp/htdocs/ikeen"
#ServerName www.example.com:443
ServerName ikeen.localhost
ServerAdmin admin@example.com
ErrorLog "D:/xampp/apache/logs/error.log"
TransferLog "D:/xampp/apache/logs/access.log"

Uruchom ponownie i bądź szczęśliwy :)


-1

Dodałem poniższą konfigurację do httpd.conf i zrestartowałem usługę lampp i zaczęła działać. Dziękuję wszystkim powyższym postom, które pomogły mi rozwiązywać problemy jeden po drugim.

Listen 8080
<VirtualHost *:8080>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/opt/lampp/docs/dummy-host2.example.com"
    ServerName localhost:8080
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
    <Directory "/opt/lampp/docs/dummy-host2.example.com">
        Require all granted 
    </Directory>
</VirtualHost>

-1

Proste, możesz zobaczyć poniższy szablon i odpowiednio go użyć. Tworzenie wirtualnego hosta jest bardzo powszechne i bardzo proste. Na pewno poniższy szablon zadziała.

<VirtualHost *:8081>
DocumentRoot "C:/xampp/htdocs/testsite"
ServerName testsite.loc
ServerAlias www.testsite.loc
<Directory "c:/xampp/htdocs/testsite">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Więcej informacji na temat hosta wirtualnego można znaleźć na tej stronie. http://www.thegeekstuff.com/2011/07/apache-virtual-host

Dzięki,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.