[RUBY] Connexion SSL Rails5.1 + puma dans un environnement de production local

Lorsque je suis passé de Rails 5.0 à 5.1 et que j'ai essayé de vérifier le fonctionnement de la production localement, je suis tombé sur quelque chose, je vais donc résumer les solutions aux problèmes.

Premièrement, lorsque je clique sur rails s -e production, j'ai eu une erreur indiquant que la page WEB ne pouvait pas être affichée en raison d'un problème de sécurité avec cette connexion. Cela semble inutile à moins qu'il ne soit défini sur https.

Connectez-vous avec SSL

Pour la méthode de base, je me suis référé à cet article. Activer SSL / HTTPS dans l'environnement local de Rails5 + puma

Dans l'article ci-dessus, j'ai émis un certificat avec openssl, mais j'ai eu une erreur, j'ai donc émis un certificat avec mkcert. Cet article a été utile pour savoir comment émettre un certificat avec mkcert. Bonne nouvelle pour ceux qui mettent en garde sur SSL dans l'environnement local avec mon certificat

Tout d'abord, émettez un certificat avec mkcert conformément à l'article ci-dessus et placez les fichiers server.key et server.crt dans un emplacement approprié sous le dossier de l'application.

Définissez puma.rb en vous reportant à Activer SSL / HTTPS dans l'environnement local de Rails5 + puma. Démarrez le serveur avec bundle exec pumactl start -e production.

Résolution du problème de disparition du CSS / js

J'ai pu me connecter avec SSL, mais j'ai eu l'erreur HTTP parse error, malformed request () et application.js et application.css n'étaient pas chargés. Le serveur de js et css étant http://0.0.0.0:3000, le paramètre de asset_host a été modifié comme suit. Je l'ai défini avec une variable d'environnement afin qu'il puisse être modifié localement et dans l'environnement de production.

config/environments/production.rb


config.action_controller.asset_host = "https://#{ENV['HOST_URI']}"

référence

Résolution du problème d'affichage des fichiers sous public / images

Avec le support ci-dessus, css et js sont sortis, mais les fichiers image placés sous public / images n'étaient pas encore affichés. À partir de Rails 5.1, les fichiers statiques qui ne sont pas précompilés avec asset_pipeline sont écrits comme suit lorsqu'ils sont appelés par l'assistant.

= image_tag 'hogehoge.png', skip_pipeline: true

Cependant, même si cela a été défini, cela n'a pas fonctionné, donc cela semble être un autre problème.

** Correspondance 1 ** Définissez config.public_file_server.enabled sur true

config/environments/production.rb


- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ config.public_file_server.enabled = true

** Correspondance 2 ** redo assets: précompiler.

#Si vous voulez franchir le pas et tout effacer une fois, cliquez d'abord ici
RAILS_ENV=production bundle exec rake assets:clobber

# assets:clean efface les anciennes versions des fichiers. Si tu clobber, tu n'as pas besoin de nettoyer
RAILS_ENV=production bundle exec rake assets:precompile assets:clean

Avec le support ci-dessus, tous les actifs sont maintenant affichés.

référence

Recommended Posts

Connexion SSL Rails5.1 + puma dans un environnement de production local
SSL dans l'environnement local de Docker / Rails / puma
[Rails] Réinitialisez la base de données dans l'environnement de production
[Rails] Exécutez LINE Bot dans un environnement local à l'aide de ngrok
tutoriel rails À propos de l'activation de compte dans l'environnement de production
Une erreur de serveur interne 500 se produit dans l'environnement de production Rails
[Rails] Que faire si vous effectuez accidentellement une installation groupée dans un environnement de production de votre environnement local
Créer une base de données dans un environnement de production
[Rails 6] Personnaliser Bootstrap dans l'environnement Rails + Bootstrap 5.0.0-alpha
[Rails] Comment exécuter "rails db: create" etc. dans l'environnement de production EC2
Rails ne peut pas générer de PDF dans l'environnement de production (EC2, Amazon Linux)
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
Puma --Nignx est une voie de sortie lorsque les rails s -e production -d ne fonctionnent pas dans l'environnement
[Rails] À propos de local: true décrit dans form_with
L'image n'est pas affichée dans l'environnement de production
Comment rediriger vers http-> https lorsque SSL est activé dans l'environnement Rails × Heroku
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
[Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement
Group_by dans Rails
Erreur de migration après avoir associé Activerecord dans l'environnement Rails5 + Docker (2)
[Rails] Nginx, déploiement de l'environnement Puma et étude du serveur [AWS EC2]
Partage de la recherche sur l'automatisation des diagrammes ER dans l'environnement Rails
J'obtiens Mysql2 :: Error :: ConnectionError dans l'environnement de production
Erreur de migration après l'association Activerecord dans l'environnement Rails5 + Docker
[Erreur] L'application ne s'affiche pas dans l'environnement de production
Les débutants utilisent ubuntu dans la fenêtre pour préparer l'environnement des rails
J'ai installé Squid sur CentOS dans mon environnement local