Beginnen Sie mit der Entwicklung von Ruby on Rails-Anwendungen, die in der flexiblen Umgebung von App Engine ausgeführt werden. Die von Ihnen erstellten Anwendungen werden auf derselben Infrastruktur ausgeführt, auf der alle Google-Produkte basieren. So können Sie sicher sein, dass sie für alle Nutzer skaliert werden können, unabhängig davon, ob es sich um wenige oder Millionen von ihnen handelt.
In dieser Anleitung wird davon ausgegangen, dass Sie mit der Rails-Webentwicklung vertraut sind. Sie werden darin durch die Einrichtung von Cloud SQL für MySQL für eine neue Rails-Anwendung geführt. Sie können diese Anleitung auch als Referenz für die Konfiguration vorhandener Rails-Anwendungen zur Verwendung von Cloud SQL für MySQL nutzen.
Für diese Anleitung ist mindestens Ruby 2.3.4 erforderlich.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Cloud SQL für MySQL-Instanz vorbereiten
Richten Sie für diese Anleitung eine Cloud SQL für MySQL-Instanz ein.
Erstellen Sie eine Instanz der zweiten Generation. In dieser Anleitung lautet der Name der Instanz
rails-cloudsql-instance
.Erstellen Sie eine Datenbank in der Instanz. In dieser Anleitung lautet der Name für die Produktionsdatenbank
cat_list_production
.Legen Sie ein Passwort für den Root-Nutzer der Instanz fest.
Lokale Umgebung für Rails einrichten
So richten Sie eine lokale Umgebung für diese Anleitung ein:
Installieren Sie Ruby 2.3.4 oder höher.
Installieren Sie das Gem Rails 5.
Installieren Sie das Gem Bundler.
Weitere Informationen zur Installation von Rails und dessen Abhängigkeiten finden Sie im offiziellen Leitfaden Erste Schritte mit Rails.
Nachdem Sie die Voraussetzungen erfüllt haben, können Sie eine Schienenanwendung mit Cloud SQL for MySQL erstellen und bereitstellen. In den folgenden Abschnitten wird gezeigt, wie Sie eine Verbindung zu Cloud SQL for MySQL herstellen und eine Verbindung zu ihr herstellen sowie eine Anwendung bereitstellen.
Neue App zum Auflisten von Katzen erstellen
Führen Sie den Befehl
rails new
aus, um eine neue Rails-Anwendung zu erstellen. Diese Anwendung speichert eine Liste von Katzen in Cloud SQL für MySQL:rails new cat_sample_app
Wechseln Sie in das Verzeichnis mit der erstellten Rails-Anwendung:
cd cat_sample_app
Anwendung lokal ausführen
So führen Sie die neue Rails-Anwendung lokal auf Ihrem Computer aus:
Installieren Sie die Abhängigkeiten mit Bundler:
bundle install
Starten Sie einen lokalen Webserver:
bundle exec bin/rails server
Geben Sie in einem Webbrowser http://localhost:3000/ ein.
Die Meldung der Anwendung Yay! Du bist auf Rails! wird auf der Seite angezeigt.
Gerüst für eine Liste von Katzen generieren
Generieren Sie ein Gerüst für eine Ressource namens Cat
, die zum Erstellen einer Liste von Katzen mit ihrem Namen und ihrem Alter verwendet wird.
Generieren Sie das Gerüst:
bundle exec rails generate scaffold Cat name:string age:integer
Der Befehl generiert ein Modell, einen Controller und Ansichten für die Ressource
Cat
.invoke active_record create db/migrate/20170804210744_create_cats.rb create app/models/cat.rb invoke rspec create spec/models/cat_spec.rb invoke resource_route route resources :cats invoke scaffold_controller create app/controllers/cats_controller.rb invoke erb create app/views/cats create app/views/cats/index.html.erb create app/views/cats/edit.html.erb create app/views/cats/show.html.erb create app/views/cats/new.html.erb create app/views/cats/_form.html.erb invoke jbuilder create app/views/cats/index.json.jbuilder create app/views/cats/show.json.jbuilder create app/views/cats/_cat.json.jbuilder invoke assets invoke js create app/assets/javascripts/cats.js invoke scss create app/assets/stylesheets/cats.scss invoke scss create app/assets/stylesheets/scaffolds.scss
Öffnen Sie die Datei
config/routes.rb
, um die folgenden generierten Inhalte zu sehen.Fügen Sie der Datei
root 'cats#index'
hinzu.Speichern Sie die Datei und schließen Sie sie.
Testen Sie die Rails-Anwendung wie zuvor beschrieben.
Cloud SQL für MySQL mit App Engine verwenden
Cloud SQL für MySQL ist ein vollständig verwalteter Datenbankdienst zum Einrichten, Verwalten, Verwalten und Verwalten relationaler MySQL-Datenbanken in Google Cloud. Sie können Cloud SQL in einer Rails-Anwendung wie jede andere relationale Datenbank verwenden.
Cloud SQL für MySQL einrichten
So legen Sie die Verwendung von Cloud SQL mit Ihrer Rails-Anwendung in der Produktion fest:
Fügen Sie der Datei
Gemfile
die Gemsmysql2
undappengine
hinzu:bundle add mysql2 bundle add appengine
Die Rails
Gemfile
enthält die folgenden zusätzlichengem
-Einträge:Konfigurieren Sie die Datei
config/database.yml
, um die Rails-Anwendung für die Verbindung zu Cloud SQL zu konfigurieren. Es werden die folgenden Datenbankeinstellungen für SQLite angezeigt:Konfigurieren Sie den Cloud SQL-Instanzverbindungsnamen für die App Engine-Produktionsumgebung.
Rufen Sie den Instanzverbindungsnamen ab:
gcloud sql instances describe rails-cloudsql-instance
Kopieren Sie den Wert neben
connectionName
.
Ändern Sie die Konfiguration der Produktionsdatenbank
database.yml
wie folgt:Dabei gilt:
[YOUR_MYSQL_USERNAME]
ist Ihr MySQL-Nutzername[YOUR_MYSQL_PASSWORD]
ist Ihr MySQL-Passwort[YOUR_INSTANCE_CONNECTION_NAME]
ist der im vorherigen Schritt kopierte Instanzverbindungsname
Die Rails-Anwendung ist jetzt für die Verwendung von Cloud SQL bei der Bereitstellung in der flexiblen App Engine-Umgebung eingerichtet.
App in der flexiblen App Engine-Umgebung bereitstellen
Die flexible App Engine-Umgebung verwendet eine Datei namens app.yaml
, um die Bereitstellungskonfiguration einer Anwendung zu beschreiben. Wenn diese Datei vorhanden ist, versucht die gcloud-Befehlszeile, die Bereitstellungskonfiguration zu erraten.
Es wird allerdings empfohlen, die Datei vorab zu definieren. Dies ermöglicht Ihnen, die erforderlichen Konfigurationseinstellungen für den geheimen Rails-Schlüssel und für Cloud SQL bereitzustellen.
Erstellen Sie eine neue Datei mit dem Namen app.yaml
im Stammverzeichnis der Rails-Anwendung und fügen Sie Folgendes hinzu, um die Beispielanwendung für die Bereitstellung in App Engine zu konfigurieren:
Konfigurieren Sie den geheimen Rails-Schlüssel in der Datei app.yaml
Wenn eine Rails-Anwendung in der production
- Umgebung bereitgestellt wird, legen Sie die Umgebungsvariable SECRET_KEY_BASE
mit einem geheimen Schlüssel fest, um die Sitzungsdaten der Nutzer zu schützen. Diese Umgebungsvariable wird aus der Datei config/secrets.yml
in der Rails-Anwendung gelesen.
Erzeugen Sie einen neuen geheimen Schlüssel.
bundle exec bin/rails secret
Kopieren Sie den generierten geheimen Schlüssel.
.ffnen Sie die zuvor erstellte Datei
app.yaml
und fügen Sie den Abschnittenv_variables
hinzu.env_variables
definiert Umgebungsvariablen in der flexiblen App Engine-Umgebung. Die Dateiapp.yaml
sollte ähnlich wie im folgenden Beispiel aussehen, wobei[SECRET_KEY]
durch Ihren geheimen Schlüssel ersetzt wird.
Konfigurieren Sie die Cloud SQL-Instanz in der Datei app.yaml
Konfigurieren Sie als Nächstes die flexible App Engine-Umgebung für die Verwendung einer bestimmten Cloud SQL-Instanz, indem Sie den Verbindungsnamen der Cloud SQL-Instanz in der app.yaml
- Konfigurationsdatei angeben.
Öffnen Sie die Datei
app.yaml
und fügen Sie einen neuen Abschnitt mit dem Namenbeta_settings
hinzu.Definieren Sie einen verschachtelten Parameter
cloud_sql_instances
mit dem Instanzverbindungsnamen als Wert.app.yaml
sollte in etwa so aussehen:
Anwendung in einer flexiblen App Engine-Umgebung erstellen
Wenn Sie zum ersten Mal eine Anwendung bereitstellen, müssen Sie eine Anwendung in der flexiblen App Engine-Umgebung erstellen und die Region auswählen, in der Sie die Rails-Anwendung ausführen möchten.
Erstellen Sie eine App Engine-Anwendung:
gcloud app create
Wählen Sie eine Region aus, die die flexible App Engine-Umgebung für Ruby-Anwendungen unterstützt. Weitere Informationen finden Sie unter Regionen und Zonen.
Neue Version bereitstellen
Als Nächstes stellen Sie eine neue Version der Rails-Anwendung bereit, die in der Datei app.yaml
beschrieben wird, ohne den Traffic von der aktuellen Standardbereitstellungsversion weiterzuleiten.
Kompilieren Sie vorab die Rails-Assets:
bundle exec bin/rails assets:precompile
Erstellen Sie nach dem Kompilieren der Assets eine neue Version der Anwendung:
gcloud app deploy --no-promote
Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Warten Sie, bis die erfolgreiche Bereitstellung angezeigt wird. Bereitgestellte Versionen werden in der App Engine-Versionsliste aufgeführt.
Wenn Sie nach dem Bereitstellen der neuen Version versuchen, auf diese neue Version zuzugreifen, wird die folgende Fehlermeldung angezeigt, da die Datenbank nicht migriert wurde.
Erteilen Sie die erforderliche Berechtigung für das Gem appengine
Als Nächstes gewähren Sie Zugriff auf das Cloudbuild-Dienstkonto, um mit dem Gem appengine
Migrationen von Produktionsdatenbanken auszuführen.
Listen Sie die verfügbaren Projekte auf:
gcloud projects list
Suchen Sie in der Ausgabe das Projekt, das Sie zur Bereitstellung der Anwendung verwenden möchten, und kopieren Sie die Projektnummer.
Fügen Sie der Projekt-IAM-Richtlinie ein neues Mitglied für die Rolle
roles/editor
hinzu, um Datenbankmigrationen auszuführen. Ersetzen Sie[YOUR-PROJECT-ID]
durch Ihre Google Cloud-Projekt-ID und[PROJECT_NUMBER]
durch die Projektnummer, die Sie im vorherigen Schritt kopiert haben.gcloud projects add-iam-policy-binding [YOUR-PROJECT-ID] \ --member=serviceAccount:[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com \ --role=roles/editor
Rails-Datenbank migrieren
Mit Rails-Datenbankmigrationen kann das Schema Ihrer Datenbank ohne SQL-Syntax direkt aktualisiert werden. Als Nächstes migrieren Sie Ihre cat_list_production
- Datenbank.
Das Gem appengine
stellt die Rake-Aufgabe appengine:exec
bereit, um einen Befehl für die neueste bereitgestellte Version Ihrer Anwendung in der flexiblen App Engine-Produktionsumgebung auszuführen.
Migrieren Sie die Cloud SQL für MySQL-Datenbank
cat_list_production
in der Produktion:bundle exec rake appengine:exec -- bundle exec rake db:migrate
Die Ausgabe sollte etwa so aussehen:
---------- EXECUTE COMMAND ---------- bundle exec rake db:migrate Debuggee gcp:787021104993:8dae9032f8b02004 successfully registered == 20170804210744 CreateCats: migrating ======================================= -- create_table(:cats) -> 0.0219s == 20170804210744 CreateCats: migrated (0.0220s) ============================== ---------- CLEANUP ----------
Wechseln Sie zur Überprüfung der Datenbankmigration zu:
[YOUR-VERSION]-dot-[YOUR-PROJECT-ID].appspot.com
Bei einer erfolgreichen Bereitstellung wird Folgendes angezeigt:
Traffic zu neuer Version migrieren
Abschließend können Sie mithilfe des folgenden Befehls den Traffic zur neu erstellten Version umleiten:
gcloud app services set-traffic default --splits [YOUR-VERSION]=1
Die neue Version der Anwendung ist jetzt verfügbar über:
https://[YOUR-PROJECT-ID].appspot.com
App Engine-Logs aufrufen
Wenn Sie nach der Erstellung der Rails-Anwendung die Logs aufrufen möchten, Die Anwendungslogs können Sie mit dem Log-Explorer in der Google Cloud Console lesen.
Weitere Informationen zum Lesen von Logs mit der gcloud-Befehlszeile.
Ressourcen bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
App Engine-Version löschen
So löschen Sie eine Anwendungsversion:
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Klicken Sie zum Löschen der Anwendungsversion auf Löschen.
Cloud SQL-Instanz löschen
So löschen Sie eine Cloud SQL-Instanz:
- In the Google Cloud console, go to the Instances page.
- Click the name of the SQL instance you that want to delete.
- To delete the instance, click Delete, and then follow the instructions.