Stefan L.: Apache und die VirtualHosts (Win)

Hallo!

Kämpfe leider schon seit 2 Tagen mit einem "winzigen" Problem:

Ich möchte gerne zwei völlig unterschiedliche Projekte über einen lokalen Webserver laufen lassen.
Bisher habe ich ohne Virtual Hosts gearbeitet und konnte die Seiten mit der 127.0.0.1 oder localhost ansprechen.
Jetzt möchte ich gerne das Projekt 1 unter c:/project1 mit my.project1.de (oder so) ansprechen können. Das zweite im Verzeichins c:/project2 mit my.project2.de. Von mir aus auch gerne mit einer IP oder so.

Zur Zeit läuft nur eine Notlösung:
HOSTS sieht so aus:
127.0.0.1 localhost
127.0.0.2 my.project2.de

Die VHosts sind so konfiguriert:
NameVirtualHost 127.0.0.2
<VirtualHost 127.0.0.2>
ServerAdmin manti@mantiland.de
DocumentRoot c:/project2
ServerName my.project2.de
</VirtualHost>

Also: Ich würde gerne sauber zwei verschiedene Projecte mit Alias und/oder IP ansprechen können. Ausserdem versucht IE ständig auf das Web zuzugreifen, obwohl die Dateien lokal liegen. Mit der obigen Konfiguration kann ich zwar 127.0.0.2 benutzen, jedoch versteht Apache dann "my.project2.de" nicht, "localhost" allerdings schon.

Kann mir jmd. helfen?

Danke, Manti

P.S.: Die Apache-Doku hab' ich schon durchforstet. Sie hat mir leider nicht weitergeholfen.

  1. Auch Hallo!

    Zur Zeit läuft nur eine Notlösung:
    HOSTS sieht so aus:
    127.0.0.1 localhost
    127.0.0.2 my.project2.de

    Ok, und welcher Rechner hat die Adresse 127.0.0.2 ?

    Die VHosts sind so konfiguriert:
    NameVirtualHost 127.0.0.2
    <VirtualHost 127.0.0.2>
    ServerAdmin manti@mantiland.de
    DocumentRoot c:/project2
    ServerName my.project2.de
    </VirtualHost>

    Also: Ich würde gerne sauber zwei verschiedene Projecte mit Alias und/oder IP ansprechen können. Ausserdem versucht IE ständig auf das Web zuzugreifen, obwohl die Dateien lokal liegen.

    Klingt fuer mich einleuchtend, da er ja denken muss, dass 127.0.0.2 irgendwo da draussen ist, es sei denn, Du hast Deinem Rechner diese Adresse als zweite IP-Adresse gegeben (, was ich mal nicht annehme. Und ob das dann mit Deiner obigen Config passen wuerde, weiss ich auch nicht, hatte noch nie zwei IPs gleichzeitig verwendet.)

    Mit der obigen Konfiguration kann ich zwar 127.0.0.2 benutzen, jedoch versteht Apache dann "my.project2.de" nicht, "localhost" allerdings schon.

    Woran merkst Du das, dass der *Apache* das nicht versteht (und nicht etwa der Browser)?

    Loesung: Verwende einfach immer 127.0.0.1 (== IP des eigenen Rechners per Konvention). Du kannst zu einer IP-Adresse in der HOSTS mehrere Namen zuordnen. Du kannst ausserdem zu einer IP mehrere VirtualHosts definieren (die sich durch ServerName unterscheiden), deswegen heisst es ja auch *Virtual*Host.

    So long

    1. Hmm, ich fürvhte. Ich habe da am System nicht kapiert.

      Ok, und welcher Rechner hat die Adresse 127.0.0.2 ?

      Es gibt nur einen Rechner. Ich hatte es mit mehreren Bezeichnungen hinter localhost versucht. Allerdings wurde keiner erkannt. Woran es dabei lag, kann ich nicht sagen.

      Klingt fuer mich einleuchtend, da er ja denken muss, dass 127.0.0.2 irgendwo da draussen ist, es sei denn, Du hast Deinem Rechner diese Adresse als zweite IP-Adresse gegeben

      Leuchtet mir jetzt auch ein :).

      Mit der obigen Konfiguration kann ich zwar 127.0.0.2 benutzen, jedoch versteht Apache dann "my.project2.de" nicht, "localhost" allerdings schon.

      Woran merkst Du das, dass der *Apache* das nicht versteht (und nicht etwa der Browser)?

      Wenn ich localhost eingebe, kommt die entsprechende index.html. Bei my.project2.de eine APACHE Fehlermeldung

      Loesung: Verwende einfach immer 127.0.0.1 (== IP des eigenen Rechners per Konvention). Du kannst zu einer IP-Adresse in der HOSTS mehrere Namen zuordnen. Du kannst ausserdem zu einer IP mehrere VirtualHosts definieren (die sich durch ServerName unterscheiden), deswegen heisst es ja auch *Virtual*Host.

      Brauche ich dazu das NameVirtualServer?
      <virtualhost *>
      docuroot blabla
      servername my.prjet1.de
      </vhost>

      <virtualhost *>
      docuroot blablanders
      servername my.project2.de
      </vhost>

      So etwa? Irgendwie will das nicht. Ist da noch ein Verständisproblem?

      Manti

      1. Hallo Stefan,

        Brauche ich dazu das NameVirtualServer?

        Da Du nur eine IP-Adresse hast, nutzt du  name-base Virtual Hosts.

        Also es geht los, sagen wir ihm er soll die namen auf der folgenden adresse verteilen
        NameVirtualHost 127.0.0.1

        Wo soll es hingehen wenn kein virthost definiert ist:
        (am besten dahin wo es sons auch hingeht wenn du deinen normalen servername einhackst)
        <virtualhost _default_:*>
        documentroot F:/webs
        </virtualhost>

        erster host:
        <virtualhost 127.0.0.1>
        servername my.prjet1.de
        documentroot /.../.../prjet1
        TransferLog logs/prjet1_access.log
        errorlog logs/prjet1_error.log
        </virtualhost>

        vergiss die log dateien nicht zu erzeugen, apache legt sie nicht von sich aus an

        <virtualhost 127.0.0.1>
        servername my.project2.de
        documentroot /.../.../project2
        TransferLog logs/project2_access.log
        errorlog logs/project2_error.log
        </virtualhost>

        So etwa sollt es funzen.

        Hosts solte so aussehen
        127.0.0.1 localhost
        127.0.0.1 my.project2.de
        127.0.0.1 my.prjet1.de

        Hoffe es geht.

        By Ed X

        PS. An alles was Stefan heist, es geht mich zwar nichts an, aber es nimmt überhand. Selbst mit Zunamen seit ihr nur schwer auseinanderzuhalten. Legt euch mal ein paar nicknames zu, damit man euch besser sortieren kann. Natürlich nicht Stefan Münz, der hausherr bleibt der hausherr!! <g>

        1. Danke erstmal. So'ne Schritt für Schritt Anletiung scheint hier bei mir bitternötig :-/.

          HOSTS sieht mittlerweile so aus:
          127.0.0.1       localhost
          127.0.0.1 promoboerse
          127.0.0.1 kimiii

          Die httpd.conf so:
          NameVirtualHost 127.0.0.1

          <VirtualHost 127.0.0.1>
              ServerAdmin smy9y@studcom.urz.uni-halle.de
              DocumentRoot c:/myfiles/myKIM3
              ServerName kimiii
          </VirtualHost>

          <VirtualHost 127.0.0.1>
              ServerAdmin smy9y@studcom.urz.uni-halle.de
              DocumentRoot c:/Programme/Apache Group/Apache/develop
              ServerName promoboerse
          </VirtualHost>

          Und es geht nicht! "localhost" funktioniert, aber alle anderen Eingaben im Browser werden weitergeleitet an die Suchdienste.

          Interessant ist die Fehlermeldung wenn man eine Datei anwählt, die es nicht im localhost-Verzeichnis gibt. Ganz unten steht dann: "Apache/1.3.19 Server at kimiii Port 80". Aber kimiii kennt er nicht, wenn man es im Browser eingibt.

          Muss man noch woanders was einstellen? Der Rest der httpd.conf ist noch quasi "Originalzustand", als es nur ein DocuRoot gab.

          PS. An alles was Stefan heist, es geht mich zwar nichts an, aber es nimmt überhand. Selbst mit Zunamen seit ihr nur schwer auseinanderzuhalten. Legt euch mal ein paar nicknames zu, damit man euch besser sortieren kann. Natürlich nicht Stefan Münz, der hausherr bleibt der hausherr!! <g>

          Hehe. Gerade WEIL Stefan Münz so Wert auf korrekten Umgang legt, dachte ich, ich lass mal den Nick weg. Aber gut. Der nächste Thread kriegt einen Nick von mir :).

          1. Hi nochmal,

            hier mal Ausschnitt aus meinen Dateien, damit funktioniert es:

            vhosts.conf (in deinem Fall wohl direkt in der httpd.conf):

            <VirtualHost 192.168.0.1>
             ServerName local.einprojekt
             DocumentRoot d:/einprojekt/
            </VirtualHost>

            <VirtualHost 192.168.0.1>
             ServerName local.anderesprojekt
                    DocumentRoot d:/anderes/projekt/
            </VirtualHost>

            stör dich nicht an der 192.168.0.1 die 127.0.0.1 müßte genauso gehen

            und in der hosts:

            192.168.0.1   localhost
            192.168.0.1   local.einprojekt
            192.168.0.1   local.anderesprojekt

            Viele Grüße
            Bernd

            1. Hi!

              Tut mir leid. Das muss ganz schön nervig für euch sein.

              Dein Beispiel hat mir leider nichts Neues gebracht.
              Ich gehe mal ins Bett und gucke, ob morgen sich ein Wunder in selfhtml getan hat und mir jemand weiterhelfen kann :).

              Danke euch erstmal soweit.

              1. Hallo Stefan,

                Tut mir leid. Das muss ganz schön nervig für euch sein.

                nein, nervig ist das nicht.
                Was mich jedoch grade nervt ist die Tatsache, daß ich nicht mehr im Detail die Schritte nachvollziehen kann, die ich vor 'nem Jahr unternommen hatte, als ich so "dumm" da stand wie du heute ;-)

                Ich grübel mal weiter, ist für mich ja ne Art "Auffrischungskurs" ;-)

                Viele Grüße
                Bernd

                1. Guten Morgen! :)

                  Also meine hosts hat die Endung .sam. Kann aber nicht mehr nachvollziehen, ob das die ürsprüngliche war, weil ich am Anfang munter drauf los editiert habe.

                  Dort stehen die Einträge jetzt in einer Reihe.

                  Leider hat sich gar nix geändert. Habe auch die Reihenfolge dortund in der httpd.conf getauscht - nichtmal diese komische Meldung von "kimiii", obwohl ich "localhost" eingetippt habe (s.o.), hat sich verändert.

                  Muss man vielleicht die 127.0.0.1 irgendwo als "geteilt" deklarieren oder so. Oder ist die nicht richtig bei Win angemeldet? Sorry, bin ziemlich mit meinem Latein und selbst mit den "Trial&Error"-Methoden am Ende...

                  Den Link konnte ich noch nicht ausprobieren, da ich nun in die Uni muss. Bis heute Abend.

                  Danke.

                  1. Juhu, es geht :).

                    Habe mir _doch_ gleich den Link angeguckt und da war das auch genauso beschrieben, wie ihr mir das gesagt habt ohne irgendwelchen Warnungen, Hinweise oder sonstwas, also kann es nicht sooo kompliziert sein - und es wurde auch nur von HOSTS gesprochen, nie von HOSTS.xyz. Also habe ich sie im MS-DOS-Modus umbenannt und seit dem läuft es einwandfrei.

                    Vielen Dank für eure Hilfe & Geduld.

                    Stefan L.

                    Ach ja, der "Anti-Stefan-Nick" wird sein Manticor, damit man sich wiedererkennt :-).

                    1. Tach Stefan, oder Manticor ;-)

                      und es wurde auch nur von HOSTS gesprochen, nie von HOSTS.xyz. Also habe ich sie im MS-DOS-Modus umbenannt und seit dem läuft es einwandfrei.

                      Nochmal kurz zur Klaerung:
                      die Endung .SAM will eigentlich ausdruecken: Sample, also Beispiel.
                      Du hattest also quasi editiert, wie die Hosts-Datei aussehen koennte, nicht
                      die Hosts-Datei selbst ;-)

                      Gruesse,
                      Gero

                    2. Moin

                      Ach ja, der "Anti-Stefan-Nick"

                      Soo viele Stefan L. sind mir auch noch nicht begegnet. Bleib' doch lieber bei Vor- und Nachname - Manticor hatten wir nämlich schon ;-)

                      Viele Grüße

                      Swen

              2. Hi!

                Tut mir leid. Das muss ganz schön nervig für euch sein.

                Dein Beispiel hat mir leider nichts Neues gebracht.
                Ich gehe mal ins Bett und gucke, ob morgen sich ein Wunder in selfhtml getan hat und mir jemand weiterhelfen kann :).

                Danke euch erstmal soweit.

                Moin,

                zur Datei hosts:
                ip.ip.ip.ip domx domy domz # zu einer IP = eine Zeile

                Anm.: WinD will beim Speichern jeder Datei eine Endung verpassen, also kontrolliere mal ob die hosts auch wirklich hosts heißt !

                zum Apache:
                http://i-netlab.de/apache/apache.htm

                ;Rolf

      2. Hallo Stefan,

        hast du auch die entsprechenden Einträge in der Datei "hosts" (im Windows-Verzeichnis ??? Ohne die läuft unter Win nämlich gar nix.
        Dort sollte was in der Art drin stehen:

        127.0.0.1  my.project1.de
        127.0.0.1  my.project2.de

        Viele Grüße
        Bernd

    2. Hiho,

      Ok, und welcher Rechner hat die Adresse 127.0.0.2 ?

      Dein localhost.

      Klingt fuer mich einleuchtend, da er ja denken muss, dass 127.0.0.2 irgendwo da draussen ist, Nein. 127.*.*.* ist _immer_ localhost (wegen der Netmask 255.0.0.0).

      Unter Windows muss man nichtmal virtuelle Devices anlegen fuer die 127-Adressen. Genau

      wie porn.org ein Synonym fuer localhost ist.

      sei denn, Du hast Deinem Rechner diese Adresse als zweite IP-Adresse gegeben (, was ich

      mal nicht annehme. Und ob das dann mit Deiner obigen Config passen wuerde, weiss ich auch

      nicht hatte noch nie zwei IPs gleichzeitig verwendet.)

      Geht das unter Win ueberhaupt? Unter *nix ists ja ganz einfach:

      ifconfig <device> alias <ip> netmask <netmask>

      Gruss,

      Christian

      http://wwwtech.de

      1. Hi CK!

        Ok, und welcher Rechner hat die Adresse 127.0.0.2 ?
        Dein localhost.
        Unter Windows muss man nichtmal virtuelle Devices anlegen fuer die 127-Adressen. Genau
        wie porn.org ein Synonym fuer localhost ist.

        *ausprobier* Whew! Da bin ich ja mal baff. Wer kommt denn auf solche Ideen? *g*

        Geht das unter Win ueberhaupt? Unter *nix ists ja ganz einfach:
        ifconfig <device> alias <ip> netmask <netmask>

        Unter WinNT auf jeden Fall. Wie's mit dem Spielestartprogramm aussieht, weiss ich nicht. ;-)

        So long

        1. Hi Calocybe,

          *ausprobier* Whew! Da bin ich ja mal baff. Wer kommt denn auf solche Ideen? *g*

          Gute Frage ;-) wuerde mich auch mal interessieren.

          Unter WinNT auf jeden Fall. Wie's mit dem Spielestartprogramm aussieht, weiss ich nicht. ;-)

          Also, unter Win9x wuesste ich nichtmal, wo ich ueberhaupt schauen sollte....

          Gruss,
           Christian
           http://wwwtech.de

          1. Hi again!

            Unter WinNT auf jeden Fall. Wie's mit dem Spielestartprogramm aussieht, weiss ich nicht. ;-)
            Also, unter Win9x wuesste ich nichtmal, wo ich ueberhaupt schauen sollte....

            Unter WinNT jedenfalls: Start/Settings/Control Panel/Network/Protocols/"TCP/IP"/Properties/IP Adress/Advanced/Add. ;-)
            Zumindest mit der Server-Version, aber mit Workstation geht das bestimmt auch.

            So long

  2. hallo stafan l.

    Also: Ich würde gerne sauber zwei verschiedene Projecte mit Alias und/oder IP ansprechen können. Ausserdem versucht IE ständig auf das Web zuzugreifen, obwohl die Dateien lokal liegen. Mit der obigen Konfiguration kann ich zwar 127.0.0.2 benutzen, jedoch versteht Apache dann "my.project2.de" nicht, "localhost" allerdings schon.

    so sieht es bei mir aus:

    ---------------------
    hosts: (system32/drivers/etc)

    127.0.0.1       localhost
    127.0.0.1 nhd

    kannst du beliebig erweitern.
    damit bindest du (nur für deinen computer) die namen an eine ip adresse

    im netzwerk erkennen die anderen maschschinen den virtual host nicht!

    ----------------------
    httpd.conf: (apache/conf)

    <VirtualHost *>
        ServerAdmin admin@mail
        ServerName *
        DocumentRoot d:/apache/htdocs
    </VirtualHost>

    <VirtualHost 127.0.0.1>
        ServerAdmin admin@mail
        ServerName localhost
        DocumentRoot d:/apache/htdocs
    </VirtualHost>

    <VirtualHost 127.0.0.1>
        ServerAdmin admin@mail
        ServerName nhd
        ServerPath /nhd
        DocumentRoot d:/apache/data/nhd/www
    (1) ScriptAlias d:/apache/cgi-bin/ "d:/apache/cgi-bin/nhd/"
    (2) Action application/x-httpd-php "/cgi-bin/nhd/php4.exe"
    (2) Action application/x-httpd-php3 "/cgi-bin/nhd/php4.exe"
    </VirtualHost>

    (1) so kannst du eigene php-richtlinien für diesen virtual host erstellen. z.b. kannst du in der php.ini das DOCUMENT_ROOT anpassen usw.

    (2) dazu die zuweisung, wo sich der interpreter befindet.
    --------------------------

    ich hoffe, du kommst damit weiter ;-)

    wenn die anderen maschinen in deinem netzwerk die virtual hosts auch erkennen sollen, kann ich dir das auch noch erklären.

    grüsschen

    siramon