Wie kann ich meine Rails-Anwendung so ändern, dass sie im Produktionsmodus ausgeführt wird? Gibt es dafür eine Konfigurationsdatei, beispielsweise environment.rb?
ruby-on-rails
development-environment
production-environment
Adler Medrado
quelle
quelle
Antworten:
So richten Sie eine Rails 4-App im Produktionsmodus (Schritt für Schritt) mit Apache und Phusion Passenger ein und führen sie aus:
Normalerweise können Sie Ihr Rails-Projekt eingeben
rails s
und eine Entwicklungsversion Ihrer App unter http://something.com:3000 herunterladen . Der Produktionsmodus ist etwas schwieriger zu konfigurieren.Ich habe eine Weile damit rumgespielt, also dachte ich mir, ich würde das für die Neulinge (wie mich selbst) aufschreiben. Es gibt ein paar kleine Änderungen, die im Internet verbreitet sind und die möglicherweise einfacher sind.
In diesem Handbuch finden Sie Informationen zur Kernkonfiguration des Servers (CentOS 6, sollte jedoch für fast alle Linux-Versionen gelten): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-mit-Apache-und-Passagier-auf-Centos-6
Stellen Sie unbedingt sicher, dass Sie die
/etc/httpd/conf/httpd.conf
Datei nach dem Einrichten von Passenger so bearbeitet haben , dass sie Ihrer Verzeichnisstruktur entspricht. Sie möchten DocumentRoot auf Ihr Rails-Projekt / Ihren öffentlichen Ordner verweisen. Überall in derhttpd.conf
Datei, die diese Art von Verzeichnis hat:/var/www/html/your_application/public
muss aktualisiert werden, sonst wird alles sehr frustrierend. Ich kann das nicht genug betonen.Starten Sie den Server neu (oder zumindest Apache -
service httpd restart
)Geben Sie Ihren Rails-Projektordner ein
/var/www/html/your_application
und starten Sie die Migration mitrake db:migrate
. Stellen Sie sicher, dass eine Datenbanktabelle vorhanden ist, auch wenn Sie später Tabellen hinzufügen möchten (dies ist auch Teil von Schritt 1).RAILS_ENV=production rake secret
- Dadurch wird ein secret_key erstellt, den Sie hinzufügen könnenconfig/secrets.yml
. Sie können dies kopieren / in config / secret.yml einfügen, um die Dinge zum Laufen zu bringen, obwohl ich empfehlen würde, dies nicht zu tun. Persönlich mache ich diesen Schritt, um sicherzustellen, dass alles andere funktioniert, ändere es dann zurück und beziehe es später.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
wenn Sie statische Assets bereitstellen. Dadurch werden JS-, CSS- und Bilddateien in den/public
Ordner verschoben .RAILS_ENV=production rails s
An dieser Stelle Ihre App sollte verfügbar sein
http://something.com/whatever
statt:3000
. Wenn nicht,passenger-memory-stats
und sehen Sie, ob es einen Eintrag wie908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Ich habe wahrscheinlich etwas Abscheuliches verpasst, aber das hat in der Vergangenheit für mich funktioniert.
quelle
Das wäre jetzt
Oder kompakter
Es funktioniert für Rails 3+ Projekte.
quelle
rails s -e production
server -e production
auf ihnen?production
immer die Standardeinstellung.echo "export RAILS_ENV=production" >> ~/.bash_profile
Wenn Sie auf Passenger ausgeführt werden , wird standardmäßig in der Produktion in Ihrem Apache conf ausgeführt:
Wenn Sie nur einen lokalen Server mit Mischling oder Webrick betreiben, können Sie Folgendes tun:
oder in Bash:
Das Überschreiben der RAILS_ENV-Konstante in enviornment.rb sollte wahrscheinlich Ihr letzter Ausweg sein, da es wahrscheinlich nicht gesetzt bleiben wird (siehe eine andere Antwort, die ich darauf gegeben habe).
quelle
Wenn der Vorschlag von mipadi nicht funktioniert, fügen Sie ihn zu config / environment.rb hinzu
quelle
ENV['RAILS_ENV'] ||= 'production'
auf sie auch angewendet werden?Ändern Sie die Umgebungsvariable
RAILS_ENV
inproduction
.quelle
~/.bashrc
oder~/.bash_profile
oder einfach befindenexport RAILS_ENV=production"
quelle
Sie können die Umgebung auch an script / server übergeben:
quelle
Dadurch wird der Server mit
RAILS_ENV
= ausgeführt'production'
.Abgesehen davon müssen Sie den Assets-Pfad festlegen
production.rb
Ohne dies wird Ihr Vermögen nicht geladen.
quelle
ODER
Standardmäßig ist die Umgebung die Entwicklung.
quelle
Wie andere gepostet haben:
rails server -e production
Oder mein persönlicher Favorit:
RAILS_ENV=production
rails s
quelle
In Schienen 3
Hinzufügen
Rails.env = ActiveSupport::StringInquirer.new('production')
in die application.rb undrails s
funktioniert genauso wierails server -e production
quelle
Es ist keine gute Möglichkeit, den Rails-Server in einer Produktionsumgebung durch "Rails-Server -e-Produktion" auszuführen, da Rails dann als Single-Thread-Anwendung ausgeführt wird und jeweils nur auf eine HTTP-Anforderung antworten kann.
Der beste Artikel über die Produktionsumgebung für Schienen ist Produktionsumgebungen - Schienen 3
quelle
für Standardserver: Schienen s-e Produktion
für Kostüm-Server-Port: Schienen s -p [Port] -e Produktion, z. Schienen s -p 3002 -e Produktion
quelle
Standardmäßig läuft der Server in der Entwicklungsumgebung:
$ rails s
Wenn Sie in einer Produktionsumgebung arbeiten:
$ rails s -e production
oder$ RAILS_ENV=production rails s
quelle
Bitte stellen Sie sicher, dass Sie dies unten in Ihrer Datei environment.rb getan haben.
Wenn Ihre Anwendung in einer gemeinsam genutzten Hosting-Umgebung oder einem Phushion-Passagier ausgeführt wird, müssen Sie möglicherweise Änderungen in .httaccess (im öffentlichen Ordner) vornehmen und den Modus als Produktion festlegen.
quelle