J'ai fait un bot LINE avec des rails, donc Essayez de configurer pour publier l'application rails avec nginx + puma.
Configurez une instance EC2 en vous référant ici.
Référence: essayez de créer un serveur Web avec AWS EC2 https://qiita.com/Arashi/items/629aaed33401b8f2265c
Si vous avez une application Rails dans votre répertoire personnel Déplacez ou copiez sous "/ opt". Notez que le répertoire personnel n'est pas un bon endroit pour placer les applications que vous souhaitez publier.
Copier l'application Rails
#Lors de la copie
$ sudo cp -arf ~/rails/rails_app/opt/
#Vérifiez le dossier
$ ls -al /opt/
drwxr-xr-x 5 racine racine 4096 15 juillet 13:59 .
dr-xr-xr-x 25 racine racine 4096 16 juillet 06:02 ..
drwxrwxr-x 13 ec2-user ec2-user 4096 15 juillet 13:57 rails_app
Première installation
Installez Nginx
$ sudo yum install -y nginx
Confirmation de version
$ nginx -v
nginx version: nginx/1.16.1
Ecrire les paramètres dans le fichier de configuration
ruby:/etc/nginx/conf.d/rails.conf
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /opt/rails_app/public;
#Suivez la racine du document dans l'ordre du début ci-dessous
try_files $uri @rails_app;
#au dessus de@rails_Chargez les paramètres suivants uniquement lorsque l'application est appelée
location @rails_app {
proxy_pass http://rails_app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
Essayez de le déplacer une fois
Commencez
$ sudo nginx
Arrêtez
$ sudo nginx -s stop
Oh! !! déplacé! !!
Modifier le fichier de configuration de Puma pour intégrer Rails (Puma) et Nginx
/opt/rails_app/config/puma.rb
#Commentez ici
#port ENV.fetch("PORT") { 3000 }
#Ajouter cette ligne
bind "unix:///opt/rails_app/tmp/sockets/puma.sock"
Ajout de la partie coopération à rails.conf
ruby:/etc/nginx/conf.d/rails.conf
#Ajoutez le code suivant
upstream rails_app {
#Paramètres de communication de socket de domaine UNIX
server unix:///opt/rails_app/tmp/sockets/puma.sock fail_timeout=0;
}
Il sera lié lors de l'exécution des rails.
Erreur
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.
Hou la la! !! D'une manière ou d'une autre, je me suis mis en colère ...
Il semble que SQLite 3.8 ou supérieur soit requis pour utiliser SQLite avec Ruby on Rails 6. Le package SQLite contient 3.7 ... Installez la dernière version de SQLite pour résoudre le problème.
# 3.Télécharger 29
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar xzvf sqlite-autoconf-3290000.tar.gz
$ cd sqlite-autoconf-3290000
#Ne pas entrer en conflit avec le sqlite d'origine/opt/sqlite/Installer sur sqlite3
$ ./configure --prefix=/opt/sqlite/sqlite3
$ make
$ sudo make install
#Confirmation de version
$ /opt/sqlite/sqlite3/bin/sqlite3 --version
3.29.0 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6
#Réinsérez la gemme sqlite3
$ gem uninstall sqlite3
#Installez en spécifiant la lib et incluez les chemins entrés ci-dessus
$ gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include \
--with-sqlite3-lib=/opt/sqlite/sqlite3/lib
Essayez à nouveau de déplacer les rails ...
Oh! !! déplacé! !!
Au fait, configurons également SSL
Vérifiez et installez OpenSSL
#Vérifiez la version d'openssl
$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
#Si la version n'est pas affichée, installez
$ sudo yum install -y openssl
Créer un répertoire
$ sudo mkdir /etc/nginx/ssl
$ sudo openssl genrsa -out /etc/nginx/ssl/server.key 2048
Créez une "CSR (Certificate Signing Request)" à partir de la clé privée
Il vous sera demandé de saisir le code du pays, l'adresse, le nom de l'entreprise, etc., mais s'il s'agit d'un certificat auto-signé, ce n'est pas nécessaire, alors ne saisissez rien et sautez-le avec "Entrée".
Créer un CSR
$ sudo openssl req -new -key /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.csr
À l'origine, j'ai enregistré le CSR que j'ai mentionné plus tôt auprès de l'autorité de certification et leur ai demandé d'émettre un «CRT (certificat de serveur SSL)», mais cette fois j'ai fait un «certificat Oreore (auto-signé)» et cette machine Terminé dans
Créer CRT
#Créer CRT (date d'expiration 10 ans)
$ sudo openssl x509 -days 3650 -req -signkey /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr -out /etc/nginx/ssl/server.crt
#Confirmez que CRT a été généré
$ ls -l /etc/nginx/ssl/
12 au total
-rw-r--r--1 racine racine 1103 14 juillet 11:52 server.crt
-rw-r--r--1 racine racine 952 14 juillet 11:52 server.csr
-rw-r--r--1 racine racine 1675 14 juillet 11:51 server.key
ruby:/etc/nginx/conf.d/rails.conf
server {
#Autoriser le port 443 et activer la fonction SSL
# listen 80;
listen 443 ssl;
server_name {#server_name};
#Définir le certificat
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
:
:
}
Redémarrer
$ sudo restart nginx
J'ai pu me connecter avec SSL! !!
Recommended Posts