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