Comment puis-je modifier mon application Rails pour qu'elle s'exécute en mode production? Existe-t-il un fichier de configuration, environment.rb par exemple, pour faire cela?
ruby-on-rails
development-environment
production-environment
Adler Medrado
la source
la source
Réponses:
Comment configurer et exécuter une application Rails 4 en mode Production (étape par étape) à l'aide d'Apache et de Phusion Passenger:
Normalement, vous pourrez entrer votre projet Rails
rails s
et obtenir une version de développement de votre application à l' adresse http://something.com:3000 . Le mode production est un peu plus délicat à configurer.Je m'amuse avec ça depuis un moment, alors j'ai pensé que j'écrirais ça pour les débutants (comme moi). Il y a quelques petites modifications qui sont réparties sur Internet et qui ont pensé que cela pourrait être plus facile.
Reportez-vous à ce guide pour la configuration de base du serveur (CentOS 6, mais il devrait s'appliquer à presque toutes les versions Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-avec-apache-et-passager-sur-centos-6
Assurez-vous qu'après la configuration de Passenger, vous avez modifié le
/etc/httpd/conf/httpd.conf
fichier pour refléter la structure de votre répertoire. Vous voulez faire pointer DocumentRoot vers votre projet / dossier public Rails N'importe où dans lehttpd.conf
fichier qui a ce type de dir:/var/www/html/your_application/public
doit être mis à jour ou tout deviendra très frustrant. Je ne peux insister assez sur ce point.Redémarrez le serveur (ou Apache au moins -
service httpd restart
)Entrez votre dossier de projet Rails
/var/www/html/your_application
et démarrez la migration avecrake db:migrate
. Assurez-vous qu'une table de base de données existe, même si vous prévoyez d'ajouter des tables ultérieurement (cela fait également partie de l'étape 1).RAILS_ENV=production rake secret
- cela créera une clé secrète que vous pourrez ajouterconfig/secrets.yml
. Vous pouvez copier / coller ceci dans config / secrets.yml pour faire fonctionner les choses, bien que je vous recommande de ne pas le faire. Personnellement, je fais cette étape pour m'assurer que tout le reste fonctionne, puis changez-le et sourcez-le plus tard.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
si vous diffusez des actifs statiques. Cela poussera les fichiers js, css, image dans le/public
dossier.RAILS_ENV=production rails s
À ce stade, votre application devrait être disponible au
http://something.com/whatever
lieu de:3000
. Sinon,passenger-memory-stats
et voyez s'il y a une entrée comme908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
J'ai probablement raté quelque chose d'odieux, mais cela a fonctionné pour moi dans le passé.
la source
Ce serait maintenant
Ou, plus compact
Cela fonctionne pour les projets de rails 3+.
la source
rails s -e production
server -e production
dessus?production
c'est invariablement la valeur par défaut.echo "export RAILS_ENV=production" >> ~/.bash_profile
Si vous utilisez Passenger , la valeur par défaut est de s'exécuter en production, dans votre configuration apache:
Si vous utilisez juste un serveur local avec mongrel ou webrick, vous pouvez faire:
ou en bash:
en fait, remplacer la constante RAILS_ENV dans enviornment.rb devrait probablement être votre dernier recours, car il ne restera probablement pas défini (voir une autre réponse que j'ai donnée à ce sujet)
la source
Si la suggestion de mipadi ne fonctionne pas, ajoutez ceci à config / environment.rb
la source
ENV['RAILS_ENV'] ||= 'production'
être appliqué sur eux aussi?Remplacez la variable d'environnement
RAILS_ENV
parproduction
.la source
~/.bashrc
ou~/.bash_profile
ou simplementexport RAILS_ENV=production"
la source
Vous pouvez également transmettre l'environnement au script / serveur:
la source
Cela exécutera le serveur avec
RAILS_ENV
='production'
.En dehors de cela, vous devez définir le chemin des actifs dans
production.rb
Sans cela, vos actifs ne seront pas chargés.
la source
OU
Par défaut, l'environnement est le développement.
la source
Comme d'autres l'ont signalé:
rails server -e production
Ou, mon préféré:
RAILS_ENV=production
rails s
la source
Dans les rails 3
L'ajout
Rails.env = ActiveSupport::StringInquirer.new('production')
dans l'application.rb etrails s
fonctionnera de la même manière querails server -e production
la source
Ce n'est pas un bon moyen d'exécuter des rails server dans un environnement de production en "rails server -e production", car les rails s'exécutent alors comme une application monothread et ne peuvent répondre qu'à une seule requête HTTP à la fois.
Le meilleur article sur l'environnement de production pour les rails est Environnements de production - Rails 3
la source
pour le serveur par défaut: rails s -e production
pour le port du serveur costum: rails s -p [port] -e production, par exemple. rails s -p 3002 -e production
la source
Par défaut, le serveur s'exécute sur l'environnement de développement:
$ rails s
Si vous utilisez un environnement de production:
$ rails s -e production
ou$ RAILS_ENV=production rails s
la source
Veuillez vous assurer que vous avez fait ci-dessous dans votre fichier environment.rb.
Si votre application s'exécute dans un environnement d'hébergement partagé ou un passager phushion, vous devrez peut-être apporter des modifications dans .httaccess (dans le dossier public) et définir le mode comme production.
la source