Yerel geliştirme için Sanal ana bilgisayar nasıl kurulur


10

Ubuntu 11.04, apache2 ile birlikte kuruldu ve ilgili tüm paketler kuruldu. Blogların çoğunu denedim ve google ve diğer forumları en iyi arkadaşlarım yaptım, ancak bu sorunu çözemiyorum.

Geliştirme için yerel sistemime adlandırılmış bir sanal ana bilgisayar kurmam gerekiyor.

"Vivek" dizinini oluşturdum /var/wwwve varsayılan index.html dosyasını kopyaladım ve bazı öğeleri düzenledim.

Ben dosyayı eklendi vivek.comiçinde /etc/apache2/sites-availableaşağıdaki gibi:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>



<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Yani şu satırları ekledim

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

"Sitelerde kullanılabilir" klasöründe zaten bulunan varsayılan dosyaya (düzenlemeden önce varsayılan dosyanın yedeğini aldı)

Bunu / etc / hosts dizininde bulunan hosts dosyasına ekledim

127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com

Aşağıdaki işlemleri hatasız gerçekleştirmiştir:

root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/apache2 reload
* Reloading web server config apache2

Girdiğimde www.vivek.combana varsayılan index.html dosyasını verdi, /var/wwwancak düzenlenen / var / www / vivek klasöründe mevcut olanı değil.

Daha sonra index.html dosyasını düzenledim /var/wwwancak yine de aynı index.html (varsayılan düzenleme öncesi) alıyordum. Tüm index.htmls düzenlenmiştir, ancak Apache için istekte bulunduğumda gizli kalan bir tane var gibi görünüyorwww.vivek.com

Ve ironik bir şey ben yeniden www.vivek.combaşlattıktan sonra - Apache iyi geldi ama sitem - görünmedi (gizli tanrı nerede index.html bile bilir !!) .. Şimdi tarayıcım "Bağlanılamıyor "

Lütfen yardım edin.Bunu bir haftadan beri başarılı bir sonuç vermeden ayarlamaya çalışıyorum.

Yanıtlar:


6

Daha sonra, / var / www dizininden index.html dosyasını düzenledim ancak yine de aynı index.html dosyasını (varsayılan düzenleme öncesi) alıyordum. Tüm index.htmls düzenlendi ancak Apache, www.vivek.com için istekte bulunduğumda görünmeye devam eden gizli bir görünüme sahip gibi görünüyor.

Bunu okuyarak, önbelleğe alınmış bir dosyayı görüntülediğinizi tahmin ediyorum. F5Yenile düğmesine basmak veya vurmak yerine, Ctrl+ düğmesine basarak yenileme önbelleğini atlayın F5.

Alternatif olarak, komut satırı programını kullanın curl(varsayılan olarak yüklenmez). Örnek kullanım:

$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Bir not: Temiz bir apache kurulumunda aşağıdakileri yaptım:

  • İlk yapılandırma dosyanızı /etc/apache2/sites-available/vivek.com
  • ( /etc/apache2/sites-available/default el değmeden bırakın )
  • Çalıştırmak sudo a2ensite vivek.com
  • Çalıştırmak sudo /etc/init.d/apache reload

Seninle aynı mesajları alıyorum. Ancak, sunucu başlatılamadı. Sunucuyu kullanmayı durdurup sudo /etc/init.d/apache2 stopyeniden kullanmaya sudo /etc/init.d/apache2 startbaşladığınızda, hiç başlamayı reddetti. Hata günlüğüne bakıldığında /var/log/apache2/error.logbazı hatalar ortaya çıktı:

[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Yani port 80 kullanımda gibi görünüyor. Ancak Apache henüz başlatılmadıysa, 80 numaralı bağlantı noktasını çalıştırarak hiçbir şeyin dinlemediğini onaylayabilirim sudo netstat -tpln. Yapılandırmayı inceledim ve satırın Listen 80yapılandırma dosyanızdan kaldırılması gerektiği sonucuna vardım /etc/apache2/sites-available/vivek.com. Bundan sonra, sunucuyu yeniden başlatabilirim ve kullanarak curl, sunucunun isteklere doğru yanıt verdiğini doğruladım.

KISS , ikinci hayalet bloğunuz kapsadığı gibi gereksiz /etc/apache2/sites-available/default. Bir sonraki yapılandırma dosyası /etc/apache2/sites-available/vivek.com:

<VirtualHost *:80>
    ServerName www.vivek.com
    DocumentRoot /var/www/vivek

    # Other directives here
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/vivek/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

1

Bunu sizin için kolaylaştıran bir komut dosyası var - https://github.com/RoverWire/virtualhost

Bu sonuçta verilen cevaplarla açıklandığı gibi aynı inceleri yapar, ancak sadece bir komutta yapar. -

sudo virtualhost create mysite.local my_site

Ayrıca oluşturduğunuz bir ana bilgisayarı silmenizi sağlar

sudo virtualhost delete mysite.local my_site

"My_dir" ifadesinin / var / www öğesinden sonra başladığını varsaydığını unutmayın.

Dolayısıyla, site klasörünüz / var / www / my_site dizinindeyse

Bunu çalıştırmalısınız (/ var / www olmadan dizin yolunu geçirin) -

sudo virtualhost create mysite.local my_site

Komut dosyasını da değiştirebilir ve site dizinine mutlak bir yol iletebilmek için "/ var / www" varsayılan yolunu kaldırabilirsiniz

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.