So richten Sie einen virtuellen Host für die lokale Entwicklung ein

10

Ubuntu 11.04 mit Apache2 installiert und alle relevanten Pakete installiert. Ich habe die meisten Blogs ausprobiert und Google und andere Foren zu meinen besten Freunden gemacht, kann dieses Problem jedoch nicht lösen.

Ich muss auf meinem lokalen System einen benannten virtuellen Host für die Entwicklung einrichten.

Ich habe das Verzeichnis "vivek" erstellt /var/wwwund die Standard-index.html kopiert und einige Elemente bearbeitet.

Ich habe die Datei vivek.comin /etc/apache2/sites-availablewie folgt:

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

Dh ich habe die folgenden Zeilen hinzugefügt

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

Zu der Standarddatei, die bereits im Ordner "sites-available" vorhanden war (Sicherung der Standarddatei vor dem Bearbeiten)

Dies wurde in der Hosts-Datei in / etc / hosts hinzugefügt

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

Die folgenden Vorgänge wurden ohne Fehler ausgeführt:

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

Als ich eintrat www.vivek.com, gab es mir die Standard-index.html in, /var/wwwaber keine im Ordner / var / www / vivek, der bearbeitet wird.

Später habe ich die index.html von bearbeitet, /var/wwwaber ich habe immer noch die gleiche index.html erhalten (Standardeinstellung vor der Bearbeitung). Alle index.htmls wurden bearbeitet, aber Apache scheint eine versteckte zu haben, die immer wieder auftaucht, wenn ich danach fragewww.vivek.com

Und das Ironische ist, dass nach dem Neustart - Apache ist gut gelaufen, aber meine Website - www.vivek.comnicht angezeigt wurde (selbst mit der versteckten index.html, weiß Gott wo !!). Jetzt zeigt mein Browser "Verbindung nicht möglich" an ""

Bitte helfen Sie. Ich habe versucht, dies seit einer Woche ohne erfolgreiches Ergebnis einzurichten.

mvivekc
quelle

Antworten:

6

Später habe ich die index.html aus / var / www bearbeitet, aber ich habe immer noch die gleiche index.html erhalten (Standardeinstellung vor der Bearbeitung). Alle index.htmls wurden bearbeitet, aber Apache scheint einige versteckte zu haben, die immer wieder auftauchen, wenn ich nach www.vivek.com frage

Wenn Sie dies lesen, sehen Sie wahrscheinlich eine zwischengespeicherte Datei. Anstatt F5die Schaltfläche Aktualisieren zu drücken oder zu drücken, überspringen Sie den Cache beim Aktualisieren, indem Sie Ctrl+ drücken F5.

Verwenden Sie alternativ das Befehlszeilenprogramm curl(das nicht standardmäßig installiert ist). Anwendungsbeispiel:

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

Ein Hinweis: Bei einer sauberen Apache-Installation habe ich Folgendes getan:

  • Fügen Sie Ihre erste Konfigurationsdatei hinzu /etc/apache2/sites-available/vivek.com
  • ( /etc/apache2/sites-available/default unberührt lassen )
  • Lauf sudo a2ensite vivek.com
  • Lauf sudo /etc/init.d/apache reload

Ich bekomme die gleichen Nachrichten wie Sie. Der Server konnte jedoch nicht gestartet werden. Beim Stoppen des Servers sudo /etc/init.d/apache2 stopund beim erneuten Starten des Servers wurde sudo /etc/init.d/apache2 startder Start überhaupt abgelehnt. Ein Blick in das Fehlerprotokoll /var/log/apache2/error.logergab einige Fehler:

[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

Port 80 scheint also in Gebrauch zu sein. Aber wenn Apache noch nicht gestartet ist, kann ich durch Ausführen bestätigen, dass Port 80 nicht überwacht wird sudo netstat -tpln. Ich habe die Konfiguration überprüft und festgestellt, dass die Zeile Listen 80aus Ihrer Konfigurationsdatei entfernt werden sollte /etc/apache2/sites-available/vivek.com. Danach konnte ich den Server erneut starten und mit curlbestätigen, dass der Server korrekt auf Anfragen reagiert.

KISS , dein zweiter vhost-Block ist redundant, da er von abgedeckt wird /etc/apache2/sites-available/default. Die nächste Konfigurationsdatei lautet /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
quelle
1

Es gibt ein Skript, das dies für Sie einfach macht - https://github.com/RoverWire/virtualhost

Dies führt letztendlich zu den gleichen Ausdünnungen wie in den gegebenen Antworten, jedoch nur in einem Befehl, z. - -

sudo virtualhost create mysite.local my_site

Außerdem können Sie einen von Ihnen erstellten Host löschen

sudo virtualhost delete mysite.local my_site

Beachten Sie nur, dass "my_dir" davon ausgeht, dass es nach / var / www beginnt

Wenn sich Ihr Site-Ordner also in / var / www / my_site befindet

Sie sollten dies ausführen (Verzeichnispfad ohne / var / www übergeben) -

sudo virtualhost create mysite.local my_site

Sie können auch die Skriptdatei ändern und den Standardpfad "/ var / www" entfernen, sodass Sie einen absoluten Pfad an das Site-Verzeichnis übergeben können

Nitish Dhar
quelle