index Wie im folgenden Artikel gezeigt, habe ich als persönliche Erinnerung zusammengefasst, worauf ich beim Bereitstellen einer Rails-App für AWS gestoßen bin.
(Vorbereitung) Der höflichste AWS-Kommentar der Welt. Verwenden von EC2, um die Rails-App zu AWS zu bringen https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce https://qiita.com/naoki_mochizuki/items/22cfbf4bf7ec95f6ac1c https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1
Wenn ich RDS einstelle und auf "Datenbank erstellen" klicke, tritt dieser Fehler auf.
DB Subnet Group doesn't meet availability zone coverage requirement. Please add subnets to cover at least 2 availability zones. Current coverage: 1 (Service: AmazonRDS; Status Code: 400; Error Code: DBSubnetGroupDoesNotCoverEnoughAZs; Request ID: 3e87202c-e6b3-46dc-8396-47c64a2f0dd6)
Ich habe auf diesen Artikel verwiesen. https://www.wantanblog.com/entry/2019/09/24/225020 Anscheinend bestand das Problem darin, dass nur eine Subnetzgruppe erstellt wurde. Wenn Sie also ein anderes Subnetz mit den folgenden Einstellungen unter "VPC" → "Subzone" → "Subnetz erstellen" erstellen, können Sie eine RDS-Instanz erstellen. Es wurde so. ・ VPC ・ ・ ・ Wählen Sie die erstellte VPC aus ・ Verfügbarkeitszone ・ ・ ・ Geben Sie einen anderen Speicherort als das bereits erstellte Subnetz an ・ IPv4-CIDR-Block ・ 0. 0. 10.0.1.0/24
*[ .ssh ] $: ssh -i mumu.pem [email protected]
Als ich versuchte, mich bei EC2 anzumelden, wurde nach einer Weile Wartezeit ein Verbindungsfehler angezeigt. Ich habe auf diesen Artikel verwiesen. https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/?p=3583 Als ich die Routentabelle des Subnetzes überprüfte, in dem sich EC2 befindet, wurde die Route nach außen (Ziel 0.0.0.0/0, Ziel igw -...) nicht (versehentlich) festgelegt. Nach dem Hinzufügen von Folgendem in "VPC" -> "Routentabelle" -> "Überprüfen der entsprechenden Routentabelle" -> "Routentabelle" -> "Routentabelle bearbeiten" -> "Route hinzufügen" wird eine SSH-Verbindung zu EC2 möglich. Ich tat. ・ Ziel ・ ・ 0. 0.0.0.0/0 ・ Ziel ・ ・ ig igw -... (erstelltes Internet-Gateway)
Es war ein Tippfehler. Es war ssh-keygen anstelle von ssh-key gem.
Der folgende Fehler tritt auf
$ rake secret
You must use Bundler 2 or greater with this lockfile.
Ich habe auf diesen Artikel verwiesen. https://programming-beginner-zeroichi.jp/articles/169
$ gem install bundler
$ bundle install
$ bundle exec rake secret
Ich habe es mit gelöst. (* Da der Autor die Datenbank der Anwendung auf SQLite gesetzt hat, ist übrigens ein Fehler bei der "Bundle-Installation" aufgetreten. Nachdem ich die Schritte im nächsten Artikel ausgeführt habe, habe ich die "Bundle-Installation" durchgeführt.
Ich habe vor, MySQL als Datenbank zu verwenden, daher werde ich die Rails-App-Datenbank von SQLite auf MySQL ändern. Ich habe auf diesen Artikel verwiesen. https://note.com/itoa06/n/n31fe4f9cd6b9
Klicken Sie hier für den Unterschied /Gemfile
-gem 'sqlite3', '~> 1.4'
+gem 'mysql2', '>= 0.4.4'
/config/database.yml
default: &default
- adapter: sqlite3
+ adapter: mysql2
+ encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
- timeout: 5000
+ username: root
+ password:
+ host: localhost
development:
<<: *default
- database: db/development.sqlite3
+ database: hello_rails_development
test:
<<: *default
- database: db/test.sqlite3
+ database: hello_rails_test
production:
<<: *default
- database: db/production.sqlite3
+ database: hello_rails_production
+ username: hello_rails
+ password: <%= ENV['HELLO_RAILS_DATABASE_PASSWORD'] %>
Failed to start mysqld.service: Unit not found. Beim Versuch, MySQL zu starten, ist ein Fehler aufgetreten
sudo service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Failed to start mysqld.service: Unit not found.
Ich habe auf diesen Artikel verwiesen. https://qiita.com/hamham/items/fd77bb0bb167a150dc8e#mysql57%E3%81%AE%E5%B0%8E%E5%85%A5
Wie @MurakamiKazutaka in dem Kommentar schrieb, scheint es, dass Amazon Linux 2 versuchen wird, mariaDB zu installieren, wenn versucht wird, mysql mit yum zu installieren.
$ yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
$ yum -y install mysql mysql-community-server
$ mysqld --version
mysqld Ver 5.7.23 for Linux on x86_64 (MySQL Community Server (GPL))
$ cd /var/www/rails/App Name
$ sudo service mysqld start
Es wurde sicher gelöst.
Ich dachte, es wäre nicht sicher. In diesem Fall erstellt MySQL das Kennwort des Root-Benutzers selbst, sodass Sie das Kennwort in database.yml einfügen müssen, wie @hat_log sagte. https://qiita.com/Dough/items/7493ad374a51b24abb58
$ sudo cat /var/log/mysqld.log | grep 'temporary password'
[Note] A temporary password is generated for root@localhost: XXXXXX
$ mysql -u root -p
Enter password: XXXXXX
mysql> set password for root@localhost=password('passwordPASSWORD@999');
Geben Sie als Nächstes das Kennwort in database.yml ein
production:
<<: *default
database: mumu_production
username: root
password: passwordPASSWORD@999
Beim Erstellen der Datenbank ist ein Fehler aufgetreten.
$ rake db:create RAILS_ENV=production
...
NoMethodError (undefined method `deep_symbolize_keys' for...
Ich fragte mich, ob die .yml-Datei fehlerhaft war und wahrscheinlich keine zwei Einrückungsbereiche hatte. Dann habe ich den Schlüsselnamen secret_key_base nicht geschrieben: in config / Secrets.yml (versehentlich).
Falsch ↓
production:
(Generierter geheimer Schlüssel)
Korrigieren Sie eine ↓
production:
secret_key_base:(Generierter geheimer Schlüssel)
Beim Versuch, Nginx zu starten, tritt ein Fehler auf
$ sudo service nginx start
Redirecting to /bin/systemctl start nginx.service
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
Ich habe auf diesen Artikel verwiesen. https://qiita.com/shota0701nemoto/items/a6929ef6f396cf3bede4
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] open() "/var/www/rails/[Falscher App-Name]/log/nginx.error.log" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
Ich denke, der Inhalt des Fehlers variiert von Person zu Person. Mir wurde gesagt, dass "/ var / www / rails / [falscher App-Name] /log/nginx.error.log" nicht existiert, also bin ich in die Datei gegangen und habe sie gefunden
$ cd /var/www/rails/[Falscher App-Name]/log
-bash: cd: /var/www/rails/[Falscher App-Name]/log: No such file or directory
Als ich genau hinschaute, bemerkte ich, dass ich beim Schreiben des Bindestrichs (-) und der Unterleiste (_) im App-Namen einen Fehler gemacht hatte.
$ vim config/unicorn.conf.rb
$ cd /etc/nginx/conf.d/
$ sudo vim mumu.conf
Der falsche Teil in wurde korrigiert.
$ cd /var/www/rails/[App Name]/
$ sudo service nginx start
Es begann sicher.
Wenn ich nach dem Start von Nginx versuche, mit Chrome auf die EC2-IP-Adresse zuzugreifen,
We're sorry, but something went wrong.
Es wurde. Ich dachte, das lag daran, dass ich RDS einmal gestoppt habe.
$ sudo service mysqld start
Ich habe MySQL gestartet, aber es gibt keine Änderung.
$ less log/production.log
Als ich das Rails-Login überprüft habe (unten sind die neuesten Informationen),
ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.
Da der Fehler angezeigt wurde, schreiben Sie config / envitonments / Production.rb unter Bezugnahme auf diesen Artikel neu. https://kanoe.studio/archives/791
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = true
Starten Sie den Anwendungsserver neu. (Ich habe auf diesen Artikel verwiesen https://qiita.com/takuyanagai0213/items/259ca105e35f6eb066d6 )
$ ps -ef | grep unicorn | grep -v grep
takuya 2460 1 0 11. März? 00:00:04 unicorn_rails master -c /var/www/rails/myapp/config/unicorn.conf.rb -D -E production
takuya 2465 2460 0 11. März? 00:00:05 unicorn_rails worker[0] -c /var/www/rails/myapp/config/unicorn.conf.rb -D -E production
takuya 2467 2460 0 11. März? 00:00:04 unicorn_rails worker[1] -c /var/www/rails/myapp/config/unicorn.conf.rb -D -E production
$ kill 2460
$ unicorn_rails -c /var/www/rails/myapp(Mein App-Name)/config/unicorn.conf.rb -D -E production
Ich habe erneut auf die EC2-IP-Adresse zugegriffen, aber wie üblich: "Es tut uns leid, aber etwas ist schiefgegangen." Fortsetzung (Ist es immer noch ein Fehler ...)
Als ich das Protokoll erneut überprüfte,
$ less log/production.log
ActionView::Template::Error (Webpacker can't find application in /var/www/rails/hello-rails/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Es ist ein Fehler aufgetreten.
Ich weiß nicht, wovon du sprichst
Ich habe auf diesen Artikel verwiesen. https://qiita.com/natecotus/items/a2bd9f3ebd5b1866d48e
$ rm -rf bin/webpack*
$ rails webpacker:install
Webpacker requires Node.js >= 8.16.0 and you are using 6.17.1
Please upgrade Node.js https://nodejs.org/en/download/
Es ist erneut ein Fehler aufgetreten. Es scheint, dass die Version von Node.js alt ist. Ich habe auf diesen Artikel verwiesen. https://qiita.com/paranishian/items/bddaed7c3aacedb11967
$ git clone git://github.com/creationix/nvm.git .nvm
$ . ~/.nvm/nvm.sh
$ nvm install
$ curl -o- -L https://yarnpkg.com/install.sh | bash
$ source ~/.bashrc
$ yarn -v
Na dann, lass es uns ändern ~
$ rails webpacker:install
[Ynaqdhm] Y
[Ynaqdhm] Y
$ RAILS_ENV=production bundle exec rails webpacker:compile
Nachdem es so aussieht, als wäre es kompiliert, starten Sie Unicorn und Nginx neu.
$ ps -ef | grep unicorn | grep -v grep
$ kill [Prozess ID]
$ unicorn_rails -c /var/www/rails/[App Name]/config/unicorn.conf.rb -D -E production
$ sudo nginx -s reload
Versuchen Sie nun, eine Verbindung mit einer IP-Adresse herzustellen. .. .. Es wurde angezeigt!
Recommended Posts