स्थानीय विकास के लिए वर्चुअल होस्ट सेटअप कैसे करें


10

Ubuntu 11.04 अपाचे 2 और सभी संबंधित पैकेजों के साथ स्थापित किया गया। मैंने अधिकांश ब्लॉग आज़माए हैं और Google और अन्य मंचों को अपना सबसे अच्छा दोस्त बनाया है, फिर भी मैं इस मुद्दे को हल करने में असमर्थ हूं।

मुझे विकास के लिए अपने स्थानीय सिस्टम पर नामित वर्चुअल होस्ट स्थापित करने की आवश्यकता है।

मैंने निर्देशिका "विवेक" /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>

डिफ़ॉल्ट फ़ाइल जो पहले से ही "साइट-उपलब्ध" फ़ोल्डर में मौजूद थी (इसे संपादित करने से पहले डिफ़ॉल्ट फ़ाइल का बैक अप लिया)

/ Etc / मेजबान में मौजूद होस्ट्स फ़ाइल में इसे जोड़ा गया

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

और विडंबना यह है कि मैं फिर से शुरू करने के बाद - अपाचे ठीक हो गया, लेकिन मेरी साइट - www.vivek.comदिखाने में विफल रहा (यहां तक ​​कि index.html जो छिपा हुआ भगवान जानता है कि कहां !!) .. अब मेरा ब्राउज़र "कनेक्ट करने में असमर्थ" दिखा रहा है !! "

कृपया मदद करें। मैं एक सप्ताह के बाद से इसे स्थापित करने की कोशिश कर रहा हूं जिसका कोई सफल परिणाम नहीं है।

जवाबों:


6

बाद में, मैंने index.html को / var / www से संपादित किया, लेकिन मुझे अभी भी वही index.html (डिफ़ॉल्ट-संपादन से पहले) मिल रहा था। सभी index.html संपादित किए गए हैं, लेकिन Apache में कुछ छिपा हुआ है, जो www.vivek.com के लिए अनुरोध करने पर सामने आता रहता है

इसे पढ़कर, मुझे लगता है कि आप एक कैश्ड फ़ाइल देख रहे हैं। F5रिफ्रेश बटन दबाने या हिट करने के बजाय , Ctrl+ दबाकर रिफ्रेशिंग पर कैश छोड़ें F5

वैकल्पिक रूप से, कमांड-लाइन प्रोग्राम 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>

एक नोट: मैं एक साफ अपाचे स्थापित पर निम्नलिखित किया:

  • अपनी पहली कॉन्फ़िगरेशन फ़ाइल जोड़ें /etc/apache2/sites-available/vivek.com
  • ( /etc/apache2/sites-available/default अछूता छोड़ दें )
  • Daud sudo a2ensite vivek.com
  • Daud 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 उपयोग में लगता है। लेकिन अगर अपाचे को अभी तक शुरू नहीं किया गया है, तो मैं पुष्टि कर सकता हूं कि पोर्ट 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" को हटा सकते हैं ताकि आप साइट निर्देशिका के लिए एक निरपेक्ष पथ पारित कर सकें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.