AWS steht für Amazon Web Servises und ist ein Cloud-Server-Service von Amazon. Wir werden das Gelernte ausgeben, um unser Verständnis von AWS zu verbessern.
Es wird davon ausgegangen, dass die Instanz erstellt wurde.
① Installieren Sie Unicorn in Ihrer eigenen Anwendung
Fügen Sie der Gemfile in der Anwendung die folgende Beschreibung hinzu.
Gemfile
group :production do
gem 'unicorn', '5.4.1'
end
Terminal
% bundle install
② Einhorneinstellungen
Erstellen Sie unicorn.rb in der Konfiguration Ihrer Anwendung. Nehmen Sie dann die folgenden Einstellungen vor.
config/unicorn.rb
#Legen Sie das Verzeichnis, in dem der Anwendungscode auf dem Server installiert ist, in einer Variablen ab
app_path = File.expand_path('../../', __FILE__)
#Bestimmen Sie die Leistung des Anwendungsservers
worker_processes 1
#Geben Sie das Verzeichnis an, in dem die Anwendung installiert ist
working_directory app_path
#Geben Sie den Speicherort der Dateien an, die zum Starten von Unicorn erforderlich sind
pid "#{app_path}/tmp/pids/unicorn.pid"
#Geben Sie die Portnummer an
listen 3000
#Geben Sie eine Datei an, um Fehler zu protokollieren
stderr_path "#{app_path}/log/unicorn.stderr.log"
#Geben Sie eine Datei an, um normale Protokolle aufzuzeichnen
stdout_path "#{app_path}/log/unicorn.stdout.log"
#Legen Sie die maximale Wartezeit für die Antwort der Rails-Anwendung fest
timeout 60
#Das Folgende ist eine angewendete Einstellung, daher wird die Erklärung weggelassen.
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 # prevent from firing again
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
Schieben Sie es in das Remote-Repository und spiegeln Sie es wider.
③ Installieren Sie die Anwendung auf der Instanz
Terminal
Melden Sie sich bei der Instanz an
% ssh -Ich Schlüsselpaar Name.pem ec2-user@<Öffentliche IP>
In der Instanz/var/www/Ein Verzeichnis erstellen
[Beispiel]$ sudo mkdir /var/www/
Ec2-Berechtigungen für das erstellte WWW-Verzeichnis-Dem Benutzer gewährt
[Beispiel]$ sudo chown ec2-user /var/www/
Gehen Sie zum Verzeichnis www
[Beispiel]$ cd /var/www/
#Klonen Sie die Anwendung von GitHub
[Instanz www]$ git clone <HTTPS-URL, die über die Schaltfläche Code der Anwendung abgerufen wird, die Sie auf GitHub bereitstellen möchten>
④ Installieren Sie Gem
Terminal
In der Instanz in das Ausgangsverzeichnis wechseln
[Instanz www]$ cd ~
Tauschen Sie die Dateieinstellungen aus
[Beispiel]$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
[Beispiel]$ sudo chmod 600 /swapfile1
[Beispiel]$ sudo mkswap /swapfile1
[Beispiel]$ sudo swapon /swapfile1
[Beispiel]$ sudo sh - -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'
Terminal
Wechseln Sie in das Anwendungsverzeichnis der Instanz
[Beispiel]$ cd /var/www/<Anwendungsname>
Installieren Sie den Bundler(Die Version von Bundler ist "Befehl" im Terminal+Erstellen Sie eine weitere Registerkarte mit "T" und "Bundler" in der neu erstellten Registerkarte-Sie können dies überprüfen, indem Sie "v" ausführen.)
[Beispiel<Anwendungsname>]$ gem install bundler -v <Bundler-Version>
Installieren Sie Gem
[Beispiel<Anwendungsname>]$ bundle install
⑤ Umgebungsvariablen einstellen
Aus Sicherheitsgründen werden Datenbankkennwörter usw. nicht auf GitHub hochgeladen. Solche Informationen werden unter Verwendung von "Umgebungsvariablen" festgelegt.
Eine Zeichenfolge zum Verschlüsseln eines Cookies. Erforderlich zum Ausführen von Rails-Anwendungen in der Produktion.
Terminal
[Beispiel<Anwendungsname>]$ rake secret
=> secret_key_Die Basiszeichenfolge wird angezeigt
Wechseln Sie in Ihr Home-Verzeichnis innerhalb der Instanz
[Beispiel<Anwendungsname>]$ cd ~
/etc/Umgebung bearbeiten
[Beispiel]$ sudo vim /etc/environment
Geben Sie "i" ein, um den Eingabemodus aufzurufen
Geben Sie das Passwort des Root-Benutzers der konfigurierten Datenbank ein
DATABASE_PASSWORD='Datenbank-Root-Benutzerpasswort'
SECRET_KEY_BASE='Das früher geschaffene Geheimnis_key_base'
* Wenn Sie AWS S3 verwenden, geben Sie Folgendes ein (geben Sie den Wert ein, der sich auf die CSV-Datei bezieht, die beim Einstellen von S3 heruntergeladen wurde).
AWS_ACCESS_KEY_ID='Kopieren Sie hier den Zugriffsschlüssel-ID-Wert der CSV-Datei'
AWS_SECRET_ACCESS_KEY='Kopieren Sie hier den Wert des geheimen Zugriffsschlüssels aus der CSV-Datei'
* Wenn die Standardauthentifizierung installiert ist, geben Sie Folgendes ein (geben Sie den festgelegten Benutzernamen und das Kennwort ein).
BASIC_AUTH_USER='Benutzernamen festlegen'
BASIC_AUTH_PASSWORD='Passwort festlegen'
「:Speichern als "wq"
Melden Sie sich von der Instanz ab und erneut an, damit die Umgebungsvariablen wirksam werden
[Beispiel]$ exit
% ssh -Ich Schlüsselpaar Name.pem ec2-user@<Öffentliche IP>
Umgebungsvariablen überprüfen
[Instanz re]$ env
=>OK, wenn die oben festgelegten Einstellungen angezeigt werden.
⑥ Geben Sie den Port für die Sicherheitsgruppe frei
Fügen Sie in der AWS Management Console "Port 3000" und "Source 0.0.0.0/0" von "Custom TCP" zur Eingangsregel der Sicherheitsgruppe der Instanz hinzu.
⑦ Ändern Sie die Rails-Anwendungseinstellungen
Die in der obigen Instanz festgelegten Umgebungsvariablen müssen auch in der Anwendung festgelegt werden.
:config/database.yml
production:
<<: *default
database:(* Hier nicht bearbeiten)
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
Drücken Sie nach dem Ändern der Einstellungen auf GitHub.
Wenden Sie dann die Anwendungsänderungen auf die Instanz an.
Terminal
Wechseln Sie innerhalb der Instanz in das Anwendungsverzeichnis
[Beispiel]$ cd /var/www/<Anwendungsname>
Änderungen der Anwendungseinstellungen widerspiegeln
[Beispiel<Anwendungsname>]$ git pull origin master
⑧ Erstellen Sie eine Datenbank (wenn in der Instanz ein Datenbankserver vorhanden ist)
Informationen zum Erstellen eines Datenbankservers finden Sie hier unter https://qiita.com/daisuke30x/items/7501d724a0727ad9f2e4
Terminal
Datenbank erstellen
[Beispiel<Anwendungsname>]$ rails db:create RAILS_ENV=production
[Beispiel<Anwendungsname>]$ rails db:migrate RAILS_ENV=production
Datenbank starten
[Beispiel<Anwendungsname>] $ sudo systemctl start maradb
RAILS_ENV = Produktion ist eine Option zur Angabe der Produktionsumgebung
⑨ Anwendung starten
Terminal
[Beispiel<Anwendungsname>]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
Kompilieren Sie Anwendungs-Asset-Dateien (CSS, JavaScript, Bilder usw.). Dies ist eine notwendige Aufgabe in einer Produktionsumgebung.
Terminal
[Beispiel<Anwendungsname>]$ rails assets:precompile RAILS_ENV=production
Terminal
Überprüfen Sie den Prozess
[Beispiel<Anwendungsname>]$ ps aux | grep unicorn
=>Die zweite Nummer von links ist die Prozess-ID
Stoppen Sie den Prozess
[Beispiel<Anwendungsname>]$ kill <unicorn_Prozess-ID des Schienenmasters>
Starten Sie die Anwendung erneut
[Beispiel<Anwendungsname>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
"RAILS_SERVE_STATIC_FILES = 1" ist die Rolle, die die zu findende kompilierte Asset-Datei angibt.
** Geben Sie im Browser "http: // <Öffentliche IP>: 3000 /" oder "http: //
Wir hoffen, dass dieser Beitrag Anfängern bei der Überprüfung hilft.
Recommended Posts