2011-01-07 7 views
1

Ich habe kürzlich eine neue Ruby on Rails 3-Anwendung lokal auf einem Mac OS mit dem Namen "test" erstellt.Seltsames Problem bei der Veröffentlichung einer neuen Ruby on Rails 3-Anwendung auf localhost (Apache, Passenger und VirtualHosts)

Da ich apache2, im privaten/etc/apache2/httpd.conf stelle ich die Virtualhost für die "Test" Anwendung:

<VirtualHost *:443> 
    ServerName test.pjtmain.localhost:443 
    DocumentRoot "/Users/<my_user_name>/Sites/test/public" 

    RackEnv development 

    <Directory "/Users/<my_user_name>/Sites/test/public"> 
    Order allow,deny 
    Allow from all 
    </Directory> 

    # SSL Configuration 
    SSLEngine on 
    ... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName test.pjtmain.localhost 
    DocumentRoot "/Users/<my_user_name>/Sites/test/public" 

    RackEnv development 

    <Directory "/Users/<my_user_name>/Sites/test/public"> 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

Natürlich habe ich apache2 neu starten, aber ich versuche, den Zugang zu http://test.pjtmain.localhost/ habe ich diese Fehlermeldung aus:

FIREFOX

Oops! Firefox could not find test.pjtmain.localhost 
Suggestions: 

    * 
     Search on Google: 
     ... 

SAFARI

Ich habe andere RoR3-Anwendungen wie oben in der httpd.conf-Datei eingerichtet und alle funktionieren.

Was ist das Problem (vielleicht ist es nicht mit Apache verwandt ...)?

Hinweise:

1. Mit dem 'Netzwerk Uility'

Ich habe ein Ping mit folgendem Ergebnis:

ping: cannot resolve test.pjtmain.localhost: Unknown host 

und ich habe ein Lookup mit das folgende Ergebnis:

; <<>> DiG 9.6.0-APPLE-P2 <<>> test.pjtmain.localhost +multiline +nocomments +nocmd +noquestion +nostats +search 
;; global options: +cmd 
<MY_ISP_NAME>.com. 115 IN SOA dns1.<MY_ISP_NAME>.com. dnsmaster.<MY_ISP_NAME>.com. (
    2010110500 ; serial 
    10800  ; refresh (3 hours) 
    900  ; retry (15 minutes) 
    604800  ; expire (1 week) 
    86400  ; minimum (1 day) 
    ) 

2. In/privat/etc/hosts habe ich diesen Code:

## 
# Host Database 
# 
# localhost is used to configure the loopback interface 
# when the system is booting. Do not change this entry. 
## 
127.0.0.1 localhost 
255.255.255.255 broadcasthost 
::1    localhost 
fe80::1%lo0 localhost 

3. Ich bin mit Phusion Passagiere

4. Da ich nicht nichts zu der neuen "Test" Anwendung geändert, Ich erwarte die standardmäßige RoR index.html Seite:

alt text

5. Es scheint, dass in den 'Konsolenmeldungen' es eine Warnung oder einen Fehler

6. Nach run 'dscacheutil -flushcache', die 'dscacheutil -Statistik' Antwort ist:

Overall Statistics: 
    Average Call Time  - 0.000304 
    Cache Hits   - 5311 
    Cache Misses   - 6113 
    Total External Calls - 5654 

Statistics by procedure: 

      Procedure Cache Hits Cache Misses External Calls 
    ------------------ ---------- ------------ -------------- 
       getpwnam   1496   149    1645 
       getpwuid   749    11    760 
       getgrnam   157    28    185 
       getgrgid   76    7    83 
     getservbyname   2818    15    26 
     getservbyport   0    3    3 
     getprotobyname   1    1    2 
       getfsent   0    0    2 
     gethostbyname   14   2816    13 
     gethostbyaddr   0   116    116 
    gethostbyname_service   0    0    2817 
      _flushcache   0    0    2 
+1

Können Sie in den Apache-Protokollen schauen und sehen, ob es sogar die Anfrage bekommt? – hornairs

+0

In/private/var/log/apache2: Die Datei 'ssl_request_log' ist leer; Die Dateien 'error_log' und 'access_log' melden alte Werte, die nicht mit 'test.pjtmain.localhost' zusammenhängen. – user502052

Antwort

3

Diese doesn‘ Es scheint überhaupt kein Apache zu sein. Das Problem liegt in Ihrer Verwendung von DNS.

localhost ist ein Platzhalter für die Verbindung, die die Maschine verwenden würde, um mit sich selbst zu sprechen. Es ist nicht die Wurzel einer Domäne, zu der Sie andere Namen hinzufügen können (d. H. Den test.pjtmain.-Teil).

Ihr Mac hat wahrscheinlich einen Namen, den Sie im Bereich "Sharing" des Preferences-Programms finden. Sagen wir es ist yourmachine. Das Freigabefenster zeigt an, dass Sie das Gerät unter yourmachine.local erreichen können.

Vorausgesetzt, dass Sie einen eindeutigen Domain-Namen für Ihren Test-App mögen, versuchen Sie eine neue Zeile für Ihre Testdomäne zu /private/etc/hosts Zugabe:

127.0.0.1 pjtmain.yourmachine.local 

Im Gegensatz zu yourmachine.local, wird dies nicht automatisch von anderen Maschinen arbeitet in Ihrem Netzwerk , aber es wird für lokale Tests funktionieren.

Mit allem, was gesagt wird, möchten Sie vielleicht in Erwägung ziehen, das gesamte Problem während der Entwicklung zu vermeiden, indem Sie den Entwicklungsserver direkt während der Entwicklung der Site ausführen. Öffnen Sie ein Terminalfenster, wechseln Sie in das Stammverzeichnis der Rails-App und führen Sie rails server (wenn es sich um eine Rails 3-App handelt) oder script/server (Rails 2) aus. Navigieren Sie zu http://localhost:3000 und Sie sind am Laufen.

+0

Yeee! Es funktioniert, vielen Dank. Wie auch immer, in Bezug auf andere Subdomains muss ich alle von 'sub_domain_name.pjtmain.localhost' in 'sub_domain_name.pjtmain.local' ändern? Es ist sicherer? Dann muss ich "127.0.0.1 sub_domain_name.pjtmain.local" zur Datei/private/etc/hists hinzufügen? – user502052

+0

Kurz gesagt, ja. Sie können diese Railscasts für weitere Ideen besuchen: http://railscasts.com/episodes/122-passenger-in-development und http://railscasts.com/episodes/221-subdomains-in-rails-3. – jonblock