Cara mengatur host Virtual untuk pengembangan lokal

10

Ubuntu 11,04 diinstal dengan apache2 dan semua paket yang relevan diinstal. Saya telah mencoba sebagian besar blog dan menjadikan google dan forum lain teman terbaik saya, namun saya tidak dapat menyelesaikan masalah ini.

Saya Perlu menyiapkan host virtual bernama pada sistem lokal saya untuk pengembangan.

Saya membuat direktori "vivek" /var/wwwdan menyalin index.html default dan mengedit beberapa elemen.

Saya menambahkan berkas vivek.comdi /etc/apache2/sites-availablesebagai berikut:

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

Yaitu saya telah menambahkan baris berikut ini

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

Ke file default yang sudah ada di folder "situs-tersedia" (mengambil cadangan file default sebelum mengeditnya)

Menambahkan ini di file hosts yang ada di / etc / hosts

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

Melakukan operasi berikut tanpa kesalahan:

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

Ketika saya masuk www.vivek.com, itu memberi saya index.html default di /var/wwwtetapi tidak ada yang hadir di folder / var / www / vivek yang diedit.

Kemudian, saya mengedit index.html dari /var/wwwtetapi saya masih mendapatkan index.html yang sama (default-sebelum mengedit). Semua index.html telah diedit tetapi Apache tampaknya memiliki beberapa yang tersembunyi yang terus muncul ketika saya memintanyawww.vivek.com

Dan hal yang ironis adalah setelah saya me-restart - Apache muncul dengan baik tetapi situs saya - www.vivek.comgagal muncul (bahkan dengan index.html yang merupakan dewa tersembunyi, tahu di mana !!) .. Sekarang browser saya menunjukkan "Tidak dapat terhubung "

Tolong bantu. Saya sudah mencoba mengatur ini sejak seminggu tanpa hasil yang sukses.

mvivekc
sumber

Jawaban:

6

Kemudian, saya mengedit index.html dari / var / www tetapi saya masih mendapatkan index.html yang sama (default-sebelum editing). Semua index.html telah diedit tetapi Apache tampaknya memiliki beberapa yang tersembunyi yang terus muncul ketika saya meminta www.vivek.com

Dengan membaca ini, saya kira Anda sedang melihat file cache. Alih-alih menekan F5atau menekan tombol Refresh, lewati cache saat menyegarkan dengan menekan Ctrl+ F5.

Atau, gunakan program baris perintah curl(yang tidak diinstal secara default). Contoh penggunaan:

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

Satu catatan: Saya melakukan yang berikut pada instalasi apache bersih:

  • Tambahkan file konfigurasi pertama Anda ke /etc/apache2/sites-available/vivek.com
  • (jangan /etc/apache2/sites-available/default disentuh )
  • Lari sudo a2ensite vivek.com
  • Lari sudo /etc/init.d/apache reload

Saya mendapatkan pesan yang sama seperti Anda. Namun, server gagal memulai. Ketika menghentikan penggunaan server sudo /etc/init.d/apache2 stopdan mulai menggunakan lagi sudo /etc/init.d/apache2 start, ia menolak untuk memulai sama sekali. Mencari di log kesalahan /var/log/apache2/error.logmengungkapkan beberapa kesalahan:

[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

Jadi port 80 tampaknya sedang digunakan. Tetapi jika Apache belum dimulai, saya dapat mengkonfirmasi bahwa tidak ada yang mendengarkan pada port 80 dengan menjalankan sudo netstat -tpln. Saya meninjau konfigurasi dan menyimpulkan bahwa baris tersebut Listen 80harus dihapus dari file konfigurasi Anda /etc/apache2/sites-available/vivek.com. Setelah itu, saya dapat memulai server lagi dan menggunakan curl, saya mengkonfirmasi bahwa server merespons permintaan dengan benar.

KISS , blok vhost kedua Anda tidak berguna karena sudah dicakup oleh /etc/apache2/sites-available/default. File konfigurasi selanjutnya adalah /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>
Lekensteyn
sumber
1

Ada skrip yang membuat ini mudah untuk Anda - https://github.com/RoverWire/virtualhost

Ini pada akhirnya melakukan hal yang sama seperti yang dijelaskan oleh jawaban yang diberikan tetapi melakukannya hanya dalam satu perintah misalnya. -

sudo virtualhost create mysite.local my_site

Ini juga memungkinkan Anda untuk menghapus host yang Anda buat

sudo virtualhost delete mysite.local my_site

Harap perhatikan bahwa "my_dir" mengasumsikan bahwa itu dimulai setelah / var / www

Jadi jika folder situs Anda ada di / var / www / my_site

Anda harus menjalankan ini (melewati jalur direktori tanpa / var / www) -

sudo virtualhost create mysite.local my_site

Anda juga dapat memodifikasi file skrip & menghapus path default "/ var / www" sehingga Anda dapat melewatkan path absolut ke direktori situs

Nitish Dhar
sumber