Wir werden das Verfahren zum Veröffentlichen einer Anwendung mit AWS beschreiben. In diesem Artikel wird Nginx, ein Webserver, vorgestellt.
Nginx ist eine Art Webserver. Führt als Reaktion auf Benutzeranforderungen eine Verarbeitung zum Abrufen statischer Inhalte durch und fordert den Anwendungsserver auf, dynamischen Inhalt zu generieren.
Führen Sie den folgenden Befehl aus und wechseln Sie in das Verzeichnis ".ssh".
cd ~/.ssh/
Führen Sie den folgenden Befehl aus, um mit ssh auf die EC2-Instanz zuzugreifen. (Wenn der Name der heruntergeladenen PEM-Datei "xxx.pem" und die elastische IP 12.345.67.890 lautet)
ssh -i xxx.pem [email protected]
Führen Sie den folgenden Befehl aus, um Nginx zu installieren.
sudo yum -y install nginx
Führen Sie den folgenden Befehl aus, um die Nginx-Konfigurationsdatei mit vim zu bearbeiten. Dateien im Verzeichnis / etc können nicht ohne Erlaubnis gelesen, geschrieben oder gespeichert werden. Führen Sie sie daher mit sudo aus.
sudo vim /etc/nginx/conf.d/rails.conf
Bearbeiten Sie die Datei rails.conf wie folgt. Dieses Mal verwenden wir als Beispiel den Fall, in dem der Anwendungsname "testapp" und die elastische IP "12.345.67.890" lautet.
rails.conf
upstream app_server {
#Einstellungen für die Verknüpfung mit Unicorn.
server unix:/var/www/testapp/tmp/sockets/unicorn.sock;
}
# {}Der von umgebene Teil wird als Block bezeichnet. Kann den Server einstellen
server {
#Portnummer, an der dieses Programm Verbindungen akzeptiert
listen 80;
#URL anfordern, um Verbindung zu akzeptieren Kein Zugriff mit URL, die hier nicht geschrieben ist
server_name 12.345.67.890;
#Stellen Sie die maximale Größe der vom Client hochgeladenen Dateien auf 2 Giga ein. Der Standardwert ist 1 Mega, halten Sie ihn also groß
client_max_body_size 2g;
#Stammverzeichnis, als die Verbindung hergestellt wurde
root /var/www/testapp/public;
#Assets-Datei(CSS- und JavaScript-Dateien usw.)Einstellungen, die beim Zugriff angewendet werden
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
error_page 500 502 503 504 /500.html;
}
Führen Sie den folgenden Befehl aus, um die Nginx-Berechtigungen zu ändern. Durch Ändern der Berechtigungen hier gibt die POST-Methode keinen Fehler aus.
cd /var/lib
sudo chmod -R 775 nginx
Die Option "-R" ist eine Option für rekursive Änderungen. Ändern Sie also die Berechtigungen für dieses Verzeichnis und alle Dateien in diesem Verzeichnis.
Eine der Anforderungen, die vom Client per HTTP-Kommunikation an den Webserver gesendet wurden, um Daten vom Client an das in der URL angegebene Programm zu senden. Wird verwendet, um große Datenmengen und Dateien an den Server zu senden.
Führen Sie den folgenden Befehl aus, um Nginx neu zu starten und die Konfigurationsdatei neu zu laden.
cd ~
sudo service nginx restart
Ändern Sie die Einhorneinstellungen erneut, um sie über Nginx zu verarbeiten.
Bearbeiten Sie config / unicorn.rb in der Entwicklungsumgebung wie folgt. Vergessen Sie nach dem Bearbeiten nicht, festzuschreiben und zu pushen.
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 "#{app_path}/tmp/sockets/unicorn.sock"
#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
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
Führen Sie den folgenden Befehl aus, um den bearbeiteten Inhalt in der Produktionsumgebung wiederzugeben.
cd /var/www/testapp(Wenn der Name des Anwendungsrepositorys "testapp" ist)
git pull origin master
Führen Sie den folgenden Befehl aus, um die Prozess-ID des Einhorn-Masters zu überprüfen.
ps aux | grep unicorn
Führen Sie den folgenden Befehl aus, um die bestätigte Prozess-ID zu beenden. (Hier wird angenommen, dass die Prozess-ID des Einhorn-Masters 17877 ist.)
kill 17877
Führen Sie den folgenden Befehl aus, um das Einhorn zu starten.
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
Greifen Sie über einen Browser auf die Anwendung mit Elastic IP zu. (Diesmal: Sie müssen nicht 3000 hinzufügen) Zu diesem Zeitpunkt muss das Einhorn laufen.
--Wenn Sie eine Fehlermeldung erhalten, dass 502 fehlerhaftes Gateway angezeigt wird, überprüfen Sie /var/log/nginx/error.log -Überprüfen Sie /var/www/testapp/log/unicorn.stderr.log auf Fehler (wenn der Repository-Name testapp lautet).
Empfängt eine von außen gesendete Anfrage und fügt die Verarbeitung hinzu. Nginx ist eine Art Webserver. Es hat die folgenden Rollen.
Statischer Inhalt ist eine Datei, deren Inhalt sich nicht bei jeder Anforderung ändert. CSS- und Bilddateien mit fester Anzeige. Dynamischer Inhalt ist eine Datei, deren Inhalt sich mit jeder Anforderung ändert. Eine Datei, die Daten aus der Datenbank abruft und anzeigt, die die Suchbedingungen erfüllen.
Generiert dynamischen Inhalt und gibt das Verarbeitungsergebnis an den Webserver zurück. Unicorn ist eine Art Anwendungsserver. Es hat die folgenden Rollen.
Verfahren zum Veröffentlichen einer Anwendung mit AWS (1) AWS-Konto erstellen Verfahren zum Veröffentlichen einer Anwendung mit AWS (2) EC2-Instanz erstellen [So veröffentlichen Sie eine Anwendung mithilfe der AWS (3) EC2-Instanzumgebungskonstruktion] (https://qiita.com/osawa4017/items/8dc09203f84e04bf0e66) [Verfahren zum Veröffentlichen einer Anwendung mit AWS (4) Datenbank erstellen] (https://qiita.com/osawa4017/items/7dba25f4fa30ab0b1246) [Verfahren zum Veröffentlichen eines Antrags mit AWS (5) Antrag veröffentlichen] (https://qiita.com/osawa4017/items/6f3125fcc21f73024311)
Recommended Posts