[RUBY] Versuchen Sie, die Rails-App für EC2-Teil 2 (Bereitstellung) bereitzustellen.

Über diesen Artikel

Wir werden unter der Voraussetzung des Inhalts des ersten Teils fortfahren. Bitte erstellen Sie im Voraus ein GitHub-Repository. Dieses Mal werden wir eine Rails-App mit EC2 bereitstellen.

(Teil 1) https://qiita.com/kotobuki562/items/92827bcf99d89b350445 (Teil 2-Datenbankaufbau-) https://qiita.com/kotobuki562/items/92827bcf99d89b350445

Registrieren Sie den SSH-Schlüssel für GitHub

Registrieren wir zunächst den SSH-Schlüssel, um das GitHub-Repository auf EC2 zu klonen. Wenn Sie den SSH-Schlüssel nicht registrieren, kann EC2 keine Verbindung zu GitHub herstellen.

Führen Sie den folgenden Befehl in EC2 aus. Wenn Sie es ausführen, werden Sie möglicherweise nach verschiedenen Eingaben gefragt. Drücken Sie in diesem Fall die Eingabetaste. Bei Erfolg wird so etwas wie eine Zahl wie "RSA 4096" ausgegeben.

[ec2-user@ip-111-11-11-111 ~]$ ssh-keygen -t rsa -b 4096

Schauen wir uns den Inhalt des SSH-Schlüssels mit dem Befehl cat an. Führen Sie den folgenden Befehl aus.

[ec2-user@ip-111-11-11-111 ~]$ cat ~/.ssh/id_rsa.pub

Gehen Sie dann zu GirHub und registrieren Sie Ihren SSH-Schlüssel Greifen Sie über die unten stehende URL zu und kopieren Sie den SSH-Schlüssel, der zuvor mit dem Befehl cat bestätigt wurde. Geben Sie dem SSH-Schlüsseltitel auf der GitHub-Seite einen beliebigen Namen. https://github.com/settings/keys

Führen Sie nach dem Registrieren des Schlüssels den folgenden Befehl aus. Nach der Ausführung werden Sie mit Ja / Nein gefragt. Bitte waschen Sie Ja. Danach ist der Zugriff abgeschlossen.

[ec2-user@ip-111-11-11-111 ~]$ ssh -T [email protected]

Anwendungsserver

Dieses Mal erstellen wir einen Anwendungsserver mit "Einhorn". Wenn Sie das Einhorn Gem noch nicht installiert haben, installieren Sie es zuerst.

Dieses Mal werden wir eine Produktionsumgebung einbauen.

.Gemfile


group :production do
  gem unicorn
end

Erstellen Sie als Nächstes unicorn.rb in config und schreiben Sie es wie folgt. Ich werde es als Beispiel beschreiben, aber Sie können es selbst einstellen.

config/unicorn.rb



app_path = File.expand_path('../../', __FILE__)

worker_processes 1

working_directory app_path

pid "#{app_path}/tmp/pids/unicorn.pid"

listen 3000

stderr_path "#{app_path}/log/unicorn.stderr.log"

stdout_path "#{app_path}/log/unicorn.stdout.log"

timeout 60

preload_app true
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true

check_client_connection false

run_once = true

before_fork do |server, worker|
  defined?(ActiveRecord::Base) &&
    ActiveRecord::Base.connection.disconnect!

  if run_once
    run_once = false
  end

  old_pid = "#{server.config[:pid]}.oldbin"
  if File.exist?(old_pid) && server.pid != old_pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH => e
      logger.error e
    end
  end
end

after_fork do |_server, _worker|
  defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
end

Klonen Sie das GitHub-Repository

Als nächstes erstellen wir ein Verzeichnis zum Klonen von GitHub. Nach dem Erstellen des Verzeichnisses wird die Berechtigung an den EC2-Benutzer übergeben

[ec2-user@ip-111-11-11-111 ~]$ sudo mkdir /var/www/
[ec2-user@ip-111-11-11-111 ~]$ sudo chown ec2-user /var/www/

Klonen Sie GitHub in das von Ihnen erstellte Verzeichnis. Gehen Sie in das Verzeichnis und führen Sie den Befehl git clone aus. Zum Schluss wenden wir den Edelstein mit der Bundle-Installation an.

[ec2-user@ip-111-11-11-111 ~]$ cd /var/www/
[ec2-user@ip-111-11-11-111 www ~]$Git-Klon Einfügen der kopierten URL
[ec2-user@ip-111-11-11-111 app ~]$ bundle install

Legen Sie als Nächstes die Umgebungsvariablen fest. Führen Sie den folgenden Befehl aus. Machen Sie eine Kopie davon, wenn es herauskommt.

[ec2-user@ip-111-11-11-111 <Repository-Name> ~]$ rake secret

Als nächstes werden wir tatsächlich die Umgebungsvariablen beschreiben. Führen wir den folgenden Befehl aus und beschreiben ihn.

[ec2-user@ip-111-11-11-111 ~]$ sudo vim /etc/environment

Legen Sie die im vorherigen Kapitel festgelegten Datenbankumgebungsvariablen fest. Beschreiben wir die folgenden zwei Punkte

DATABASE_PASSWORD='Datenbank-Root-Benutzerpasswort'
SECRET_KEY_BASE='Das früher geschaffene Geheimnis_key_base'

Jetzt bist du bereit.

EC2-Port offen

Kehren wir im Web zu EC2 zurück und öffnen den Port. Geben Sie die zuvor beschriebene Portnummer 3000 von unicorn.rb frei. Die Einstellmethode wird im ersten Teil beschrieben. Bitte überprüfen Sie dort. Bitte stellen Sie wie im Bild unten gezeigt ein.

スクリーンショット 2020-11-11 12.01.11.png

Bereitstellen

Bearbeiten Sie zunächst die lokale database.yml. Bitte bearbeiten Sie wie folgt. Bearbeiten Sie die Datenbank nicht.

config/database.yml


production:
  <<: *default
  database: app_production
  username: root
  password: <%= ENV['DATABASE_PASSWORD'] %>
  socket: /var/lib/mysql/mysql.sock

Gehen wir zurück zu EC2 im Terminal und machen einen Git Pull.

[ec2-user@ip-111-11-11-111 <Repository-Name>] git pull origin master

Lassen Sie uns eine Datenbank in EC2 erstellen und migrieren. Sie sind jetzt bereit.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ rails db:create RAILS_ENV=production
[ec2-user@ip-111-11-11-111 <Repository-Name>]$ rails db:migrate RAILS_ENV=production

Lassen Sie uns nun das Assets-Verzeichnis mit Assets widerspiegeln: orecompile. Starten Sie den Server schließlich mit dem Bundle exec unicorn_rails.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ rails assets:precompile RAILS_ENV=production
[ec2-user@ip-111-11-11-111 <Repository-Name>]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Start bestätigt wurde.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ ps aux | grep unicorn

#Der folgende Prozess wird ausgegeben.

ec2-user  5879  0.0 13.0 515244 131640 ?Sl November 09 0:02 unicorn_rails master -c config/unicorn.rb -E production -D
ec2-user  5887  0.0 12.6 525216 127600 ?Sl November 09 0:02 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
ec2-user 15917  0.0  0.0 119436   976 pts/0    S+   03:26   0:00 grep --color=auto unicorn

Um es zu stoppen, schreiben Sie den folgenden Befehl.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ kill 5879 #Prozess-ID stoppen

Führen Sie nach dem Beenden des Prozesses den folgenden Befehl aus und prüfen Sie, ob er tatsächlich im Browser angezeigt wird. Sie können unter http: // : 3000 / darauf zugreifen.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D

Fehlerprotokoll

Wenn nach der Bereitstellung ein Fehler auftritt, führen Sie den folgenden Befehl aus und überprüfen Sie das Fehlerprotokoll. Greifen wir auf den Speicherort des Fehlerprotokolls zu, das zuvor in unicorn.rb beschrieben wurde.

[ec2-user@ip-111-11-11-111 <Repository-Name>]$ less log/unicorn.stderr.log

Recommended Posts

Versuchen Sie, die Rails-App für EC2-Teil 2 (Bereitstellung) bereitzustellen.
Versuchen Sie, die Rails-App für EC2-Teil 1 bereitzustellen.
So stellen Sie jQuery in Rails-Apps mit Webpacker bereit
So stellen Sie Bootstrap auf Rails bereit
Versuchen Sie, eine Server-Client-App zu erstellen
Stellen Sie Rails on Docker für Heroku bereit
So ändern Sie den App-Namen in Rails
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Laden Sie die Rails-App-Image-Datei in S3 hoch
Bereitstellen für Heroku [Ruby on Rails] Anfänger
Einführung von Vuetify in vorhandene Rails-Apps
Downgrade einer vorhandenen App, die mit Rails 5.2.4 erstellt wurde, auf 5.1.6
Android App: Versuchen Sie, Ereignisse und Hörer zusammenzufassen
Rails Tutorial Kapitel 1 Von Null bis Bereitstellung [Try]
Stellen Sie Rails mit AWS Copilot für ECS Fargate bereit
Fehler beim Bereitstellen von Rails5 + MySQL auf Heroku mit Docker-Compose
Vereinheitlichen Sie die Zeitzone der Rails-App mit der japanischen Zeit
Versuchen Sie, das gemeinsame Layout mit Schienen zusammenzufassen
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
So pushen Sie mit Rails entwickelte Apps an Github
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
[Rails] Erstellen Sie eine Sitemap mit sitemap_generator und stellen Sie sie in GAE bereit
Versuche Edelstein freizugeben
Schritte zur Bereitstellung in Heroku
Wie schreibe ich Rails
Einführung in Bootstrap in Rails 5
Bootstrap in Rails einführen !!
Einführung von Vue.js in Rails
Schritte zum Bereitstellen von Struts 2.5.8
Stellen Sie RAILS auf EC2 bereit
So deinstallieren Sie Rails
Bereitstellung auf Ruby on Rails Elastic Beanstalk (Änderung der IAM-Berechtigung)
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
So stellen Sie eine einfache Java-Servlet-App auf Heroku bereit
[Java] Stellen Sie die Spring Boot-Anwendung für den Azure App Service bereit
So geben Sie db beim Erstellen einer App mit Rails an
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)