วิธีการตั้งค่าโฮสต์เสมือนสำหรับการพัฒนาท้องถิ่น


10

ติดตั้ง Ubuntu 11.04 พร้อม apache2 และแพ็คเกจที่เกี่ยวข้องทั้งหมดที่ติดตั้ง ฉันได้ลองบล็อกส่วนใหญ่และทำให้ google และฟอรัมอื่นเป็นเพื่อนที่ดีที่สุดของฉัน แต่ฉันไม่สามารถแก้ไขปัญหานี้ได้

ฉันต้องการตั้งค่าโฮสต์เสมือนที่มีชื่อในระบบท้องถิ่นของฉันเพื่อการพัฒนา

ฉันสร้างไดเรกทอรี "vivek" ใน/var/wwwและคัดลอก index.html เริ่มต้นและแก้ไของค์ประกอบบางอย่าง

ฉันเพิ่มไฟล์vivek.comใน/etc/apache2/sites-availableดังนี้

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

นั่นคือฉันได้เพิ่มบรรทัดต่อไปนี้

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

ไปยังไฟล์เริ่มต้นที่มีอยู่แล้วในโฟลเดอร์ "sites-available" (เอาไฟล์สำรองเริ่มต้นก่อนที่จะแก้ไข)

เพิ่มสิ่งนี้ในไฟล์โฮสต์ที่มีอยู่ใน / etc / hosts

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

ดำเนินการต่อไปนี้โดยไม่มีข้อผิดพลาด:

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

เมื่อฉันป้อนwww.vivek.comมันทำให้ฉันเป็นค่าเริ่มต้น index.html /var/wwwแต่ไม่มีอยู่ในโฟลเดอร์ / var / www / vivek ซึ่งแก้ไข

ต่อมาฉันแก้ไข index.html จาก/var/wwwแต่ฉันยังคงได้รับ index.html เดิม (เริ่มต้นก่อนการแก้ไข) index.html ทั้งหมดได้รับการแก้ไข แต่ Apache ดูเหมือนจะมีบางอย่างที่ซ่อนอยู่ซึ่งจะเกิดขึ้นเมื่อฉันขอwww.vivek.com

และสิ่งที่น่าขันก็คือหลังจากที่ฉันเริ่มต้นใหม่ - Apache ขึ้นมาได้ดี แต่เว็บไซต์ของฉัน - www.vivek.comล้มเหลวในการแสดง (แม้จะมี index.html ซึ่งเป็นที่ซ่อนพระเจ้ารู้อยู่ที่ไหน !!) .. ตอนนี้เบราว์เซอร์ของฉันแสดงว่า "ไม่สามารถเชื่อมต่อได้ "

โปรดช่วยฉันพยายามตั้งค่านี้มาหนึ่งสัปดาห์แล้วโดยไม่ประสบความสำเร็จ

คำตอบ:


6

ต่อมาฉันแก้ไข index.html จาก / var / www แต่ฉันยังคงได้รับ index.html เดียวกัน (ค่าเริ่มต้นก่อนการแก้ไข) index.html ทั้งหมดได้รับการแก้ไข แต่ Apache ดูเหมือนจะมีบางอย่างที่ซ่อนอยู่ซึ่งจะเกิดขึ้นเมื่อฉันขอ www.vivek.com

เมื่ออ่านสิ่งนี้ฉันเดาว่าคุณกำลังดูไฟล์แคช แทนการกดF5หรือกดปุ่มรีเฟรชข้ามแคชบนสดชื่นโดยการกด+CtrlF5

อีกวิธีหนึ่งคือใช้โปรแกรมบรรทัดคำสั่งcurl(ซึ่งไม่ได้ติดตั้งไว้ตามค่าเริ่มต้น) ตัวอย่างการใช้งาน:

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

One note: ฉันทำสิ่งต่อไปนี้ในการติดตั้ง apache ใหม่ทั้งหมด:

  • เพิ่มไฟล์กำหนดค่าแรกของคุณลงใน /etc/apache2/sites-available/vivek.com
  • (ปล่อย/etc/apache2/sites-available/default ไม่ถูกแตะต้อง )
  • วิ่ง sudo a2ensite vivek.com
  • วิ่ง sudo /etc/init.d/apache reload

ฉันได้รับข้อความเช่นเดียวกับคุณ อย่างไรก็ตามเซิร์ฟเวอร์ไม่สามารถเริ่มต้นได้ เมื่อหยุดเซิร์ฟเวอร์โดยใช้sudo /etc/init.d/apache2 stopและเริ่มต้นอีกครั้งโดยใช้เซิร์ฟเวอร์sudo /etc/init.d/apache2 startจะไม่เริ่มทำงานเลย ดูในบันทึกข้อผิดพลาด/var/log/apache2/error.logพบข้อผิดพลาด:

[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

ดูเหมือนว่าพอร์ต 80 จะใช้งานอยู่ แต่ถ้า Apache ไม่ได้เริ่มเลยผมสามารถยืนยันได้ว่าฟังอะไรในพอร์ต 80 sudo netstat -tplnโดยการเรียกใช้ เราได้ตรวจสอบการตั้งค่าและได้ข้อสรุปว่าสายจะถูกลบออกจากแฟ้มการกำหนดค่าของคุณListen 80 /etc/apache2/sites-available/vivek.comหลังจากนั้นฉันสามารถเริ่มต้นเซิร์ฟเวอร์อีกครั้งและใช้curlฉันยืนยันว่าเซิร์ฟเวอร์ตอบสนองการร้องขออย่างถูกต้อง

KISSบล็อก vhost /etc/apache2/sites-available/defaultที่สองของคุณจะซ้ำซ้อนเป็นก็ปกคลุมไปด้วย ไฟล์กำหนดค่าถัดไปคือ/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

มีสคริปต์ที่ทำให้สิ่งนี้ง่ายสำหรับคุณ - https://github.com/RoverWire/virtualhost

ในที่สุดสิ่งนี้จะทำสิ่งเดียวกันกับที่อธิบายโดยคำตอบที่ได้รับ แต่จะทำในคำสั่งเดียวเช่น -

sudo virtualhost create mysite.local my_site

นอกจากนี้ยังช่วยให้คุณสามารถลบโฮสต์ที่คุณสร้างขึ้น

sudo virtualhost delete mysite.local my_site

เพิ่งทราบว่า "my_dir" ถือว่าเริ่มต้นหลังจาก / var / www

ดังนั้นหากโฟลเดอร์ไซต์ของคุณอยู่ใน / var / www / my_site

คุณควรรันสิ่งนี้ (เส้นทางไดเรกทอรีผ่านโดยไม่มี / var / www) -

sudo virtualhost create mysite.local my_site

นอกจากนี้คุณยังสามารถแก้ไขไฟล์สคริปต์และลบพา ธ เริ่มต้น "/ var / www" เพื่อให้คุณสามารถส่งผ่านพา ธ สัมบูรณ์ไปยังไดเรกทอรีไซต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.