Als ich ein Upgrade von Rails 5.0 auf 5.1 durchführte und versuchte, den Produktionsbetrieb vor Ort zu überprüfen, stieß ich auf etwas, sodass ich die Lösungen für die Probleme zusammenfassen werde.
Als ich zuerst auf "Rails s-e Production" drückte, wurde die Fehlermeldung angezeigt, dass die WEB-Seite aufgrund eines Sicherheitsproblems mit dieser Verbindung nicht angezeigt werden konnte. Es scheint nutzlos zu sein, wenn es nicht auf https eingestellt ist.
Für die grundlegende Methode habe ich auf diesen Artikel verwiesen. Aktivieren Sie SSL / HTTPS in der lokalen Umgebung von Rails5 + puma
Im obigen Artikel habe ich ein Zertifikat mit openssl ausgestellt, aber es ist ein Fehler aufgetreten, daher habe ich ein Zertifikat mit mkcert ausgestellt. Dieser Artikel war hilfreich für die Ausstellung eines Zertifikats mit mkcert. Gute Nachrichten für diejenigen, die mit meinem Zertifikat vor SSL in der lokalen Umgebung warnen
Stellen Sie zunächst ein Zertifikat mit mkcert gemäß dem obigen Artikel aus und platzieren Sie die Dateien server.key und server.crt an einem geeigneten Speicherort im App-Ordner.
Stellen Sie puma.rb unter Aktivieren von SSL / HTTPS in der lokalen Umgebung von Rails5 + puma ein.
Starten Sie den Server mit bundle exec pumactl start -e Production
.
Ich konnte eine Verbindung mit SSL herstellen, bekam jedoch den Fehler "HTTP-Analysefehler, fehlerhafte Anfrage ()" und application.js und application.css wurden nicht geladen. Da der Server von js und css http://0.0.0.0:3000 war, wurde die Einstellung von asset_host wie folgt geändert. Ich habe es mit einer Umgebungsvariablen definiert, damit es lokal und in der Produktionsumgebung geändert werden kann.
config/environments/production.rb
config.action_controller.asset_host = "https://#{ENV['HOST_URI']}"
Referenz
Mit der oben genannten Unterstützung kamen CSS und JS heraus, aber die unter public / images platzierten Bilddateien wurden noch nicht angezeigt. Ab Rails 5.1 werden statische Dateien, die nicht mit asset_pipeline vorkompiliert wurden, beim Aufruf durch den Helfer wie folgt geschrieben.
= image_tag 'hogehoge.png', skip_pipeline: true
Selbst wenn dies festgelegt wurde, hat es nicht funktioniert, so dass es ein weiteres Problem zu sein scheint.
** Korrespondenz 1 **
Setzen Sie config.public_file_server.enabled
auf true
config/environments/production.rb
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ config.public_file_server.enabled = true
** Korrespondenz 2 ** Assets wiederholen: Vorkompilieren.
#Wenn Sie den Sprung wagen und alles einmal löschen möchten, klicken Sie zuerst hier
RAILS_ENV=production bundle exec rake assets:clobber
# assets:clean löscht ältere Versionen von Dateien. Wenn Sie Clobber machen, brauchen Sie nicht sauber
RAILS_ENV=production bundle exec rake assets:precompile assets:clean
Mit der oben genannten Unterstützung werden jetzt alle Assets angezeigt.
Referenz
Recommended Posts