2012-07-11 2 views
0

je déployer une application RoR à mon serveur, avec un fichier d'hôte virtuel Apache2 supplémentaire:Ruby on Rails application peut seulement être consulté par localhost

<VirtualHost *:80> 
    # ServerName ubuntu 
    DocumentRoot /var/www/myapp/current/public 
    PassengerEnabled off 
    ProxyPass/http://127.0.0.1:9051 
    ProxyPassReverse/http://127.0.0.1:9051 

    <IfModule mod_rewrite.c> 
     RewriteEngine On 

     # Redirect all requests to the maintenance page if present 
     RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$ 
     RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f 
     RewriteCond %{SCRIPT_FILENAME} !maintenance.html 
     RewriteRule ^.*$ /system/maintenance.html [L] 
    </IfModule> 

</VirtualHost> 

et je commence à l'aide de passagers:

passenger start -a 127.0.0.1 -p 9051 -e production -d 

Il est un serveur Ubuntu:

No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 12.04 LTS 
Release: 12.04 
Codename: precise 

Et le port est à l'écoute:

[email protected]:~$ sudo lsof -i :9051 
[sudo] password for plee: 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
nginx 1016 plee 4u IPv4 168135  0t0 TCP localhost:9051 (LISTEN) 
nginx 1017 plee 4u IPv4 168135  0t0 TCP localhost:9051 (LISTEN) 
nginx 1017 plee 5u IPv4 225556  0t0 TCP localhost:9051->localhost:44586 (ESTABLISHED) 
ruby 1018 plee 5u IPv4 225555  0t0 TCP localhost:44586->localhost:9051 (ESTABLISHED) 

Le problème est que, mon application est accessible uniquement par http://localhost:9051

Si je tente de me connecter depuis une autre machine en utilisant l'adresse IP du serveur: http://10.50.10.75:9051

Google Chrome me donne:

Google Chrome could not connect to 10.50.10.75:9051 

S'il vous plaît aidez-moi!

Merci.

+0

Votre application est-elle accessible à partir de 10.50.10.75:9051 à partir de votre ordinateur local? Accédez à partir de 10.50.10.75 pas 10.50.10.75:9051 becoz le serveur apache qui est proxying l'application fonctionne sur le port 80 – PriteshJ

+0

Non. Il ne peut même pas taper http://10.50.10.75:9051 à partir du serveur apache. –

+0

Pouvez-vous accéder à http://10.50.10.75? – PriteshJ

Répondre

2

Vous essayez trop dur. Si vous êtes sur un serveur comme vous l'êtes, avec des applications fonctionnant sur différents ports (et ils sont probablement dev/staging, non?), Et vous voulez simplement accéder à cette application sur le port : 9501, puis la manière facile est d'abandonner Apache. Tout ce que vous avez besoin est passager, et vous commencez comme ça, sans l'option -a:

passenger start -p 9051 -e production -d 

voilà, vous avez terminé. (Vous pouvez vous assurer que votre pare-feu, probablement ufw, ne bloque pas le port, mais c'est la seule autre chose à tester si vous rencontrez toujours des problèmes.)

Et un dernier conseil: N'utilisez pas un navigateur pour tester ce genre de chose. Utilisez curl. Par exemple,

curl --head http://x.y.z.a:9051 
+0

Fonctionne comme le charme, merci !. Je ne pense pas que suivre un guide sans mieux comprendre sa signification est suffisant. –

+0

Parce que j'ai copié 'départ passager -a 127.0.0.1 -p 9051 -e production -d' de quelque part et je pensais que cela fonctionnerait, ce qui est stupide, je me sens. –

+0

Si vous souhaitez exécuter le serveur avec '-a 127.0.0.1', vous devez posséder un sous-domaine et configurer le fichier/site hôte virtuel. S'il vous plaît voir: http://stackoverflow.com/questions/11565194/apache2-configuration-that-allows-a-subdomain-point-to-an-machineport –

0

Si vous souhaitez accéder y accéder sur un autre port que vous devez ajouter un Enty virtualhost pour cela aussi que vous devez faire apache écouter ce port avec le port 80

Voici ce dont vous avez besoin

#set the mod_passenger path **MAY BE DIFFERENT FOR YOU** 
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.1.3 
PassengerRuby /usr/bin/ruby1.8 

#Listen to port 9501 
Listen 9501 

#add virtual host enty for port 9501 
<VirtualHost *:9501> 
     ServerName myservername 
     DocumentRoot /var/www/tut/public 

     <Directory /var/www/tut/public> 
       Allow from all 
       Options -MultiViews 
     </Directory> 


</VirtualHost> 

NOTE: Pas besoin de démarrer le passager à partir de la ligne de commande, cela devrait déjà être fait.

Cela a fonctionné pour moi.

+0

Si je mets une barre oblique, quand je redémarre apache, il me donne 'Invalid ProxyPass | ProxyPassMatch paramètre. Le paramètre doit être sous la forme 'clé = valeur'.' –

+0

oups soory, ce doit être barre oblique (/) édité ma réponse – PriteshJ

+0

Non. Cela ne fait aucune différence avec ou sans le"/". –