2010-11-08 12 views
1

J'ai installé phusion passenger sur mon serveur de développement.Utilisation de Phusion Passenger sur un réseau local de développement

<VirtualHost *:80> 
    ServerName railscasts.local 
    DocumentRoot "/Users/rbates/code/railscasts/public" 
    RailsEnv development 
    RailsAllowModRewrite off 
    <directory "/Users/rbates/code/railscasts/public"> 
    Order allow,deny 
    Allow from all 
    </directory> 
</VirtualHost> 

Je voudrais accéder à mes rails application à partir d'autres machines sur le réseau, mais je préférerais ne pas avoir à configurer mon fichier Hosts pour chaque machine que je veux y accéder à partir.

127.0.0.1 railscasts.local 

De ma compréhension, je pourrais configurer un serveur DNS local qui résoudrait le problème, mais, encore une fois, je préférerais ne pas avoir à le faire. J'ai essayé de définir ServerName à l'adresse IP de mon serveur de développement, mais cela n'a pas fonctionné, il a simplement échoué en silence.

Existe-t-il d'autres façons d'accomplir cela que d'utiliser un serveur DNS ou de configurer chaque machine sur le réseau local? Dois-je être capable de le faire en spécifiant une adresse IP?

Merci

Répondre

1

Vous pouvez soit utiliser l'hébergement virtuel basé sur IP dans Apache, attribuant à chaque application à sa propre adresse IP, ou, utiliser des ports différents.

Je suppose que vous avez plus d'une application en développement, car sinon une solution encore plus simple serait simplement de rendre ce vhost par défaut.

La configuration d'hébergement IP et/ou port est assez simple. Vous avez juste besoin d'écouter [1] sur les adresses IP/Ports concernés, puis d'utiliser le port ip.address: dans le conteneur VirtualHost comme dans l'exemple ci-dessus.

[1] http://httpd.apache.org/docs/current/mod/mpm_common.html#listen

+0

Merci pour votre noodl réponse, je suis tout à fait un débutant dans ce sujet. Donc, si je configure l'hébergement virtuel basé sur IP, à quoi servira ServerName? La partie qui me dérange est comment je reçois de ma machine locale à ma machine apache, sans définir le fichier hosts sur la machine locale. Merci – pingu

+0

En général, ServerName [1] est utilisé par le serveur lorsqu'il doit se référer à lui-même. Par exemple, si vous demandez http: // votre.server/some_folder sans la barre oblique finale Apache redirigera habituellement vers/some_folder/afin que les liens relatifs fonctionnent (ceci est optionnel et pris en charge par la directive DirectorySlash de mon mod_dir). Quoi qu'il en soit, la directive ServerName est principalement utilisée pour trouver le nom d'hôte à utiliser dans les URL de redirection. Vous pouvez contourner l'ensemble du problème avec "UseCanonicalName Off", auquel cas le serveur utilisera le nom d'hôte/IP de la requête et le nom du serveur n'est pas pertinent. – noodl

+0

ServerName: http://httpd.apache.org/docs/current/mod/core.html#servername – noodl

0

J'ai regardé comment faire cela pendant quelques jours. J'ai trouvé un bon point de départ, mais je suis sûr que cela pourrait être amélioré.

Modifier le haut de votre vhost:

Listen 1234 
<VirtualHost *:1234> 

Vous pouvez utiliser un numéro de port que vous voulez tant que son pas utilisé.

Vous pouvez accéder à votre application en accédant au yourcomputername.local:1234 dans le navigateur d'un autre ordinateur du réseau.

: Avertissements

Cela semble vous empêcher d'accéder à votre application par le nom que vous avez défini (myapp.local). Je cherche à savoir si vous pouvez faire les deux à partir du même vhost.

Il existe probablement un meilleur moyen d'accéder à l'application sur le réseau avec quelque chose comme yourcomputername.local/myapp et myapp.local sur la machine qui exécute l'application.

aimerais entendre des suggestions sur l'amélioration de cette solution