[RUBY] Rails5.1 + Puma SSL-Verbindung in lokaler Produktionsumgebung

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.

Stellen Sie eine Verbindung mit SSL her

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.

Das Problem, dass CSS / JS verschwunden sind, wurde behoben

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

Das Problem der Anzeige von Dateien unter public / images wurde behoben

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

Rails5.1 + Puma SSL-Verbindung in lokaler Produktionsumgebung
SSL in der lokalen Umgebung von Docker / Rails / Puma
[Rails] Setzen Sie die Datenbank in der Produktionsumgebung zurück
[Rails] Führen Sie LINE Bot in einer lokalen Umgebung mit ngrok aus
Rails-Tutorial Informationen zur Kontoaktivierung in der Produktionsumgebung
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
[Rails] Was tun, wenn Sie versehentlich eine Bundle-Installation in einer Produktionsumgebung in Ihrer lokalen Umgebung durchführen?
Erstellen Sie eine Datenbank in einer Produktionsumgebung
[Rails 6] Passen Sie Bootstrap in der Rails + Bootstrap 5.0.0-Alpha-Umgebung an
[Rails] Ausführen von "Rails db: create" usw. in der Produktionsumgebung EC2
Rails kann keine PDF-Dateien in Produktionsumgebungen (EC2, Amazon Linux) ausgeben.
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
Puma --Nignx ist ein Fluchtweg, wenn die Schienen in der Umgebung nicht funktionieren
[Rails] Über local: true, beschrieben in form_with
Das Bild wird in der Produktionsumgebung nicht angezeigt
So leiten Sie zu http-> https um, wenn SSL in der Rails × Heroku-Umgebung aktiviert ist
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
[Rails] So löschen Sie MySQL-Daten aus der Produktionsumgebung, nachdem Sie sie in die Entwicklungsumgebung gestellt haben
Group_by in Rails
Migrationsfehler nach dem Zuordnen von Activerecord in der Rails5 + Docker-Umgebung (2)
[Rails] Nginx, Puma-Umgebungsbereitstellung und Serverstudie [AWS EC2]
Austausch von Forschungsergebnissen zur Automatisierung von ER-Diagrammen in der Rails-Umgebung
Ich erhalte Mysql2 :: Error :: ConnectionError in der Produktionsumgebung
Migrationsfehler nach Activerecord-Zuordnung in der Rails5 + Docker-Umgebung
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
Anfänger verwenden Ubuntu im Fenster, um die Schienenumgebung vorzubereiten
Ich habe Squid unter CentOS in meiner lokalen Umgebung installiert