Ich habe also einen LINE-Bot mit Schienen gemacht Versuchen Sie, die Rails-App mit nginx + puma zu veröffentlichen.
Richten Sie eine EC2-Instanz ein, auf die hier Bezug genommen wird.
Referenz: Versuchen Sie, einen Webserver mit AWS EC2 zu erstellen https://qiita.com/Arashi/items/629aaed33401b8f2265c
Wenn Sie eine Rails-App in Ihrem Home-Verzeichnis haben Verschieben oder kopieren Sie unter "/ opt". Beachten Sie, dass das Home-Verzeichnis kein guter Ort ist, um die Apps zu platzieren, die Sie veröffentlichen möchten.
Rails-App kopieren
#Beim Kopieren
$ sudo cp -arf ~/rails/rails_app/opt/
#Überprüfen Sie die Datei
$ ls -al /opt/
drwxr-xr-x 5 Wurzel Wurzel 4096 15. Juli 13:59 .
dr-xr-xr-x 25 root root 4096 16. Juli 06:02 ..
drwxrwxr-x 13 ec2-user ec2-Benutzer 4096 15. Juli 13:57 rails_app
Zuerst installieren
Installieren Sie Nginx
$ sudo yum install -y nginx
Versionsbestätigung
$ nginx -v
nginx version: nginx/1.16.1
Schreiben Sie Einstellungen in die Konfigurationsdatei
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;
#Folgen Sie dem Dokumentenstamm in der Reihenfolge von unten nach unten
try_files $uri @rails_app;
#über@rails_Laden Sie die folgenden Einstellungen nur, wenn die App aufgerufen wird
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;
}
}
Versuchen Sie es einmal zu bewegen
Anlaufen
$ sudo nginx
Halt
$ sudo nginx -s stop
Oh! !! gerührt! !!
Ändern Sie die Konfigurationsdatei von Puma, um Rails (Puma) und Nginx zu integrieren
/opt/rails_app/config/puma.rb
#Kommentar hier raus
#port ENV.fetch("PORT") { 3000 }
#Fügen Sie diese Zeile hinzu
bind "unix:///opt/rails_app/tmp/sockets/puma.sock"
Der Kooperationsteil wurde zu rails.conf hinzugefügt
ruby:/etc/nginx/conf.d/rails.conf
#Fügen Sie den folgenden Code hinzu
upstream rails_app {
#Kommunikationseinstellungen für den UNIX-Domain-Socket
server unix:///opt/rails_app/tmp/sockets/puma.sock fail_timeout=0;
}
Es wird verknüpft, wenn Schienen ausgeführt werden.
Error
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.
Beeindruckend! !! Irgendwie wurde ich wütend ...
Es scheint, dass SQLite 3.8 oder höher erforderlich ist, um SQLite mit Ruby on Rails 6 zu verwenden. Das SQLite-Paket enthält 3.7 ... Installieren Sie die neueste Version von SQLite, um das Problem zu beheben.
# 3.Laden Sie 29 herunter
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar xzvf sqlite-autoconf-3290000.tar.gz
$ cd sqlite-autoconf-3290000
#Widersprechen Sie nicht dem ursprünglichen SQLite/opt/sqlite/Auf sqlite3 installieren
$ ./configure --prefix=/opt/sqlite/sqlite3
$ make
$ sudo make install
#Versionsbestätigung
$ /opt/sqlite/sqlite3/bin/sqlite3 --version
3.29.0 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6
#Setzen Sie den Edelstein sqlite3 wieder ein
$ gem uninstall sqlite3
#Installieren Sie, indem Sie die Bibliothek angeben und die oben eingegebenen Pfade einschließen
$ gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include \
--with-sqlite3-lib=/opt/sqlite/sqlite3/lib
Versuchen Sie erneut, die Schienen zu bewegen ...
Oh! !! gerührt! !!
Lassen Sie uns übrigens auch SSL einrichten
Überprüfen und installieren Sie OpenSSL
#Überprüfen Sie die Version von openssl
$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
#Wenn die Version nicht angezeigt wird, installieren Sie
$ sudo yum install -y openssl
Verzeichnis erstellen
$ sudo mkdir /etc/nginx/ssl
$ sudo openssl genrsa -out /etc/nginx/ssl/server.key 2048
Erstellen Sie aus dem privaten Schlüssel eine "CSR (Certificate Signing Request)"
Sie werden aufgefordert, den Ländercode, die Adresse, den Firmennamen usw. einzugeben. Wenn es sich jedoch um ein selbstsigniertes Zertifikat handelt, ist dies nicht erforderlich. Geben Sie also nichts ein und überspringen Sie es mit "Enter".
Erstellen Sie eine CSR
$ sudo openssl req -new -key /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.csr
Ursprünglich habe ich den zuvor erwähnten CSR bei der Zertifizierungsstelle registriert und sie gebeten, ein "CRT (SSL-Serverzertifikat)" auszustellen, aber diesmal habe ich ein "Oreore-Zertifikat (selbstsigniert)" und diesen Computer erstellt Innerhalb abgeschlossen
CRT erstellen
#CRT erstellen (Ablaufdatum 10 Jahre)
$ sudo openssl x509 -days 3650 -req -signkey /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr -out /etc/nginx/ssl/server.crt
#Bestätigen Sie, dass CRT generiert wurde
$ ls -l /etc/nginx/ssl/
Insgesamt 12
-rw-r--r--1 Wurzel Wurzel 1103 14. Juli 11:52 server.crt
-rw-r--r--1 Wurzel Wurzel 952 14. Juli 11:52 server.csr
-rw-r--r--1 Wurzel Wurzel 1675 14. Juli 11:51 server.key
ruby:/etc/nginx/conf.d/rails.conf
server {
#Lassen Sie Port 443 zu und aktivieren Sie die SSL-Funktion
# listen 80;
listen 443 ssl;
server_name {#server_name};
#Zertifikat festlegen
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
:
:
}
Starten Sie neu
$ sudo restart nginx
Ich konnte mich mit SSL verbinden! !!
Recommended Posts