XAMPP'de sanal konak nasıl oluşturulur


83

Eminim bu soru defalarca sorulmaktadır ama bir sorunla karşılaşmıyorum. Zend çerçevesini yapılandırdığım yerde XAMPP kullanıyorum.

XAMPP 8081 numaralı bağlantı noktasında çalışıyor, çünkü 80 bazı Windows işlemleri tarafından kullanılıyor. Bunun için aşağıdaki kodla C:/xampp/apache/config/extra/httpd-vhosts.config(veya C:/xampp/apache/conf/extra/httpd-vhosts.confdaha yeni sürümlerde) yapılandırdığım sanal ana bilgisayar kullanmam gerekiyor .

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

ve ayrıca hosts dosyasını ile güncelleyin ve apache'yi 127.0.0.1 comm-app.localyeniden başlatmayı deneyin, ancak hata gösteriyor.

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
VirtualHost *: 80 VirtualHost olmamalı *: 8081, Apache'nin çalıştığı yer
burasıysa

4
80 numaralı bağlantı noktasını kullanan Windows işlemi Skype olabilir.
Marek

Yanıtlar:


70

İki hata görüyorum:

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

Sabit versiyon:

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

Söylenecek bir şey var:

Her zaman deneyebilir ve komutu çalıştırabilirsiniz:

service apache2 configtest

Bu size hatalı biçimlendirilmiş bir konfigürasyona sahip olduğunuzu söyleyecektir ve hatta sorunun nerede olduğunu bile söyleyebilir.

Dahası, bir LIVE sistemde kullanılamazlığı önlemeye yardımcı olur:

service apache2 restart

kapanacak ve sonra başlayamayacak, önceden bildiğiniz bu yapılandırma testi "oops, ben yanlış bir şey yaptım, önce bunu düzeltmeliyim" ancak apache'nin kendisi hala eski yapılandırmayla çalışıyor. :)


Apache bu düzeltmeden sonra çalışmaya başlar, ancak comm-app.local hala sunucuda bulunamadı HTTP Hatası 404 Bulunamadı. İstenen kaynak bulunamadı.
Paras Arora

Comm-app.local'ı hosts dosyanızda 127.0.0.1'e yönlendirecek şekilde kurdunuz mu? Ve yolunuzun doğru olduğundan emin misiniz? Oh ve eğer yapmadıysanız VirtualHost kapsayıcısını kapatmanız gerekiyor ... (
Gönderim

1
evet sadece 127.0.0.1 comm-app.local'ı hosts dosyasına yerleştiriyorum ve hatta sunucuyu yeniden başlatıyorum
Paras Arora

Ve tarayıcıya comm-app.local: 8081 girdiniz? (Belki limanı unuttunuz)? Yapılandırmayı değiştirdikten sonra apache'nizi yeniden başlatmayı unutmayın. Ancak bu hala işe yaramazsa, yapılandırma dosyanızda başka bir sorun var ...
Steini

Selam! Steini. Ben de aynı sorunu yaşıyorum. Sanal ana bilgisayar adından sonra bağlantı noktası numarası yazmamak için herhangi bir yol var mı? Şimdiden teşekkürler
karim_fci

65

Adım 1) C: \ WINDOWS \ system32 \ drivers \ etc \ "hosts" dosyasını açın:

127.0.0.1       localhost
127.0.0.1       test.com
127.0.0.1       example.com

Adım 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>

Adım 3) C: \ xampp \ apache \ conf \ httpd.conf. Sondaki Ek yapılandırma bölümüne gidin ve aşağıdaki bölümü bulun (500. satır civarında), İkinci satırın başındaki # işaretini kaldırın, böylece bölüm şimdi şöyle görünür:

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

Adım 4) XAMPP'yi yeniden başlatın ve şimdi tarayıcınızda çalıştırın:

www.example.com or www.test.com

1
Hey amit ... Benimki şaşırtıcı bir şekilde çalışmıyor .... Ayarlarımdaki tek fark: 127.0.0.4 mycustomdomainve port 90'da çalışıyor, ben de kullandım <VirtualHost 127.0.0.4:90>. Tarayıcıda denediğimde başarısız oluyorhttp://mycustomdomain
Jason Krs

8

Bu Kodu C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf içine ekleyin.

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

Şimdi sanal ana bilgisayar adınızı aşağıdaki dosyaya ekleyin.

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

127.0.0.1 qa-staging.com

Bu kodu ana bilgisayar dosyasına kaydedemiyorsanız, notpad'e sağ tıklayın Yönetici olarak çalıştır'ı seçin ve ardından şimdi özel kodunuzu kaydedebilirsiniz XAMP'ınızı yeniden başlatın


7

Bu kodları C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf dosyasının sonuna yazın,

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

sanal ana makine etiketi arasında.

ve System32 / Drivers / etc / hosts dosyasını düzenleyin ve yönetici olarak not defteri kullanın

dosyanın altına ekle

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>

Apache yapılandırma dosyasını kaydedin.

Detaylı bilgi için bakınız bu


4

Bağlantı noktasını olarak değiştirin 8081ve aşağıdaki sanal ana bilgisayar çalışacaktır:

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

Bu bir yanlışlıktır, ancak bu apache hizmetinin başlamasını engellemez, bu yalnızca bir uyarı verir ve sankon çalışmaz
Steini

Apache bu düzeltmeden sonra çalışmaya başlar, ancak comm-app.local hala sunucuda bulunamadı HTTP Hatası 404 Bulunamadı . İstenen kaynak bulunamadı.
Paras Arora

3

Disk sürücünüzde: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf bir örnek var ve bunu yapılandırmanızla düzenleyebilirsiniz:

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

Örnek olarak şöyle olacaktır ve örneğin store.local projesinde göstereceğim gibi , phpmyadmin ve diğer projeyi aynı anda 80 numaralı bağlantı noktasında çalıştırmak için localhost'un kendisine VirtualHost eklemeyi unutmayın :

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

daha sonra yukarıda belirtildiği gibi , dosyanın altına C: \ windows \ system32 \ drivers \ hosts eklemelisiniz

127.0.0.1    store.local
127.0.0.1    www.store.local

Apache'yi yeniden başlatın ve tarayıcıda deneyin:

store.local or www.store.local

belki ilk seferde şöyle eklemelisiniz:

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

diğer bağlantı noktalarını kullanmak için, VirtualHost'unuzdan önce şunları eklemelisiniz:

Listen 8081 or another which you prefer

ardından VirtualHost'unuz için bağlantı noktasını şu şekilde kullanın:

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

ardından Apache'yi yeniden başlatın ve tarayıcıda deneyin

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

ve sadece bağlantı noktası eklediğiniz proje bu bağlantı noktasında çalışacaktır, örneğin diğer projeler ve phpmyadmin hala 80 numaralı bağlantı noktasında çalışacaktır.


2

Apache Sanal Ana Bilgisayar belgeleri Bir sanal ana bilgisayar (vhost) kurmak çeşitli avantajlar sağlar:

  • Sanal Konaklar URL'leri daha temiz hale getirir - localhost / mysite ve mysite.local.
  • Sanal Konaklar izinleri kolaylaştırır - yerel ağdaki tek bir sankon için erişimi kısıtlamak yerine yerel ağınızdaki tüm sitelere erişim izni verir.
  • Bazı uygulamalar "." URL'de (ahem Magento). Windows hosts dosyasını düzenleyerek localhost.com/mysite'ı kurabilirsiniz, ancak bir vhost oluşturmak daha iyi bir çözümdür.

VirtualHost Yönergesi Yalnızca belirli bir ana bilgisayar adı veya IP adresi için geçerli olan yönergeleri içerir

Konum Yönergesi Ekteki yönergeleri yalnızca eşleşen URL'lere uygular

Yapılandırma dosyası üzerinde örnek değişiklikler -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>

Windows Hosts Dosyanızı Güncelleyin «Windows hosts dosyanızı açın. 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 =====

@görmek


1

Aşağıdaki yapılandırmayı kullanarak düzelttim.

 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

Partiye biraz geç kaldım, ancak Mac için terminal aracılığıyla bir VirtualHost oluşturan bu küçük bash betiğini yazdım:

#!/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

Eminim yapılabilecek birkaç iyileştirme vardır ve vhost için yalnızca iki gerekli seçeneğe sahiptir (sunucu adı ve belge kökü), ancak işi tüm dosyaları açıp düzenlemekten çok daha hızlı ve verimli bir şekilde yapar. manuel olarak ve daha sonra XAMPP'yi otomatik olarak yeniden başlatır.

Bu, tümü değiştirilebilen XAMPP için varsayılan kurulum konumuna sahip olduğunuzu varsayar.


0

Adım 1) "C: \ Windows \ System32 \ drivers \ etc" altında Ana Bilgisayar Dosyasını açın.

Ekle

127.0.0.1  vipsnum.mk

Adım 2) "C: \ xampp \ apache \ conf \ extra" altında httpd-vhosts.conf Dosyasını açın

Ekle

<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

Benim durumumda xampp ile ilgili sorun, özellikle birden çok etki alanı ve ayrılmış klasörler ile htdocs dışında farklı bir klasörün kullanılmasıdır. Bunun nedeni httpd-ssl.confde referans olmasıdır <VirtualHost>.

Bunu yapmak için, <VirtualHost>altındaki tüm girişihttpd-ssl.conf

Buradan, içinde yapmanız Herhangi bir ayar httpd-vhosts.confirade güncelleme hem beklendiği gibi httpve httpsreferanslar.


0

Bir süredir çözümü arıyordum. Ve sonunda cevabım var. Sanal ana bilgisayarınız Windows 10 veya 7 vb. Üzerinde çalışmıyorsa, bunun nedeni tüm sitelerin https'ye yönlendirildiği bu yeni https aldatmacasıdır.

XAMPP de aynı eğilimi izlediğinden, katı https yeniden yönlendirmesi nedeniyle sanal ana bilgisayarları, ana bilgisayar dosyalarını vb. Düzeltmek yeterli değildir. İşte tam çözüm.

İstediğim site D: \ xampp \ htdocs \ ikeen konumunda bulunuyor.

1) Bunu httpd-vhosts.conf dosyanıza ekleyin:

<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) Bunu httpd.conf'un sonuna ekleyin:

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

3) Bu satırı Windows dizinindeki hosts dosyanıza ekleyin

127.0.0.1      ikeen.localhost

4) Son adım, httpd-ssl.conf dosyanızın VirtualHost bölümünü aşağıdaki gibi değiştirmektir.

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

Yeniden başlayın ve mutlu olun :)


-1

Aşağıdaki yapılandırmayı httpd.conf dosyasına ekledim ve lampp hizmetini yeniden başlattım ve çalışmaya başladı. Sorunları tek tek çözmeme yardımcı olan yukarıdaki tüm yayınlara teşekkürler.

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

Basit, aşağıdaki şablonu görebilir ve buna göre kullanabilirsiniz. Sanal bir ana bilgisayar oluşturmak çok yaygındır ve çok basittir. Elbette aşağıdaki şablon çalışacaktır.

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

Ayrıca sanal konak hakkında daha fazla referans için lütfen bu siteyi ziyaret edin. http://www.thegeekstuff.com/2011/07/apache-virtual-host

Teşekkürler,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.