2010-11-20 6 views
5

J'essaye d'obtenir une application de Rails de bare Bones déployée sous Apache, Passenger 3.0.0 et Rails 3.0.3. Je reçois toutes sortes d'erreurs bizarres. la plupart tournent autour de ce que je pense est lié à bundler ou RAILS_ENV.Quel utilisateur utilise mon application Rails?

Seule une chose par défaut à propos de l'application est que les environnements de développement & de développement utilisent SQLite3 et que la production utilise MySQL. Lorsque vous appuyez sur l'application depuis le navigateur Web Passenger émet des erreurs concernant les gemmes (sqlite3) qui sont spécifiquement (dans le Gemfile ET dans le database.yml) déclarées comme ne faisant PAS partie de l'environnement de production.

Comment savoir à quel utilisateur le serveur tente d'exécuter mon application Rails? Je voudrais m'assurer que RAILS_ENV est correctement défini pour cet utilisateur car je pense que Passenger essaie d'exécuter cette application en mode développement pour une raison quelconque.

Edit: ajouté les résultats de ps aux | grep httpd

myserver:current elvis$ ps aux | grep httpd 
elvis  4424 0.4 0.0 66152 192 s000 S+ 11:03AM 0:00.00 grep httpd 
_www  1950 0.0 0.2 93024 2544 ?? S 11:40PM 0:01.23 /usr/sbin/httpd -D FOREGROUND 
root  1918 0.0 1.0 93024 10244 ?? Ss 11:39PM 0:02.75 /usr/sbin/httpd -D FOREGROUND 
_www  4084 0.0 0.2 93024 2536 ?? S  9:41AM 0:00.15 /usr/sbin/httpd -D FOREGROUND 

et ls -l ...

myserver:current elvis$ ls -l config 
total 48 
-rw-rw-r-- 1 aaron admin 1923 Nov 19 21:40 application.rb 
-rw-rw-r-- 1 aaron admin 326 Nov 19 21:40 boot.rb 
-rw-rw-r-- 1 aaron admin 741 Nov 19 21:40 database.yml 
-rw-rw-r-- 1 aaron admin 1257 Nov 19 21:40 deploy.rb 
-rw-rw-r-- 1 aaron admin 149 Nov 19 21:40 environment.rb 
drwxrwxr-x 5 aaron admin 170 Nov 19 21:40 environments 
drwxrwxr-x 7 aaron admin 238 Nov 19 21:40 initializers 
drwxrwxr-x 3 aaron admin 102 Nov 19 21:40 locales 
-rw-rw-r-- 1 aaron admin 1808 Nov 19 21:40 routes.rb 
+0

Pouvez-vous nous montrer certaines des erreurs? –

Répondre

9

Par défaut, passagers desserviront votre application en tant qu'utilisateur qui possède le fichier config/environment.rb ou config.ru, voir http://www.modrails.com/documentation/Users%20guide%20Apache.html#user_switching

passagers desserviront dans l'environnement production par défaut, à moins que vous arrêtiez avec le RailsEnv, voir http://www.modrails.com/documentation/Users%20guide%20Apache.html#rails_env

+0

OK. il suffit de lire le lien user_switching. essayant de faire fonctionner ceci ... toutes les idées que le propriétaire/permission "devrait" être sur 'config/environment.rb'? même que sur le répertoire du site lui-même? J'ai un site servi par apache et un lien symbolique de w/dans ce spectacle principal «statique» appelé «rails» qui pointe vers mon répertoire de l'application Rails où l'application est. – Meltemi

+1

Je pense que l'utilisateur qui exécute l'application est probablement un hareng rouge dans votre cas. Plus susceptible d'être un problème de configuration de rails. Pouvez-vous exécuter './script/console production' depuis le répertoire de l'application sur le serveur? Si cela provoque la même erreur, il sera plus facile de déboguer. – malclocke

+0

Le propriétaire de votre fichier config.ru/environment.rb doit être l'utilisateur avec lequel vous avez installé 'bundle install'. 'bundle install' est installé sur $ HOME/.bundle ou sur ./help en fonction de vos paramètres de Bundler; Dans le cas de l'ancien, $ HOME dépend de l'utilisateur qui a appelé 'bundle install'. Donc, si vous avez lancé 'bundle install' comme 'foobar', vous devez également vous assurer que votre application Rails fonctionne en tant que 'foobar', sinon elle ne pourra pas accéder aux gems installés par Bundler en raison de problèmes de permissions. – Hongli

3

Vous pouvez exécuter ps aux | grep httpd pour voir ce que l'utilisateur exécute votre processus apache.

+0

résultats supplémentaires de 'ps aux | grep httpd' ci-dessus. parmi les questions précédentes ... pourquoi y aurait-il deux utilisateurs différents exécutant des processus httpd?!? – Meltemi

+0

Je ne suis pas sûr. C'est sur votre boîte de production, non? – jergason

+0

yup. production. avait une application Rails 2.3.5 fonctionnant dessus avant. Essayer de faire fonctionner 3.0.3 et tout l'enfer se déchaîne. – Meltemi

0
RAILS_USER=$(stat -c '%U' /YOUR_PATH/environment.rb) 

echo "Detected rails user: $RAILS_USER" 
Questions connexes