Vytvoření aplikace Ruby a Postgres v Azure App Service v systému Linux
Azure App Service je vysoce škálovatelná služba s automatickými opravami pro hostování webů. V tomto kurzu se dozvíte, jak vytvořit aplikaci v Ruby a připojit ji k databázi PostgreSQL. Po dokončení budete mít ve službě App Service v Linuxu spuštěnou aplikaci Ruby on Rails.
V tomto kurzu se naučíte:
- Vytvořit databázi PostgreSQL v Azure
- Připojit k PostgreSQL aplikaci Ruby on Rails
- Nasadit aplikaci do Azure
- Aktualizovat datový model a znovu nasadit aplikaci
- Streamovat diagnostické protokoly z Azure
- Spravovat aplikaci na webu Azure Portal
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Požadavky
Pro absolvování tohoto kurzu potřebujete:
- Nainstalovat Git.
- Instalace Ruby 2,6
- Nainstalovat rámec Ruby on Rails 5.1.
- Nainstalovat a spustit PostgreSQL
V nástroji použijte prostředí Bash Azure Cloud Shell.
Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Příprava místního Postgres
V tomto kroku vytvoříte na místním serveru Postgres databázi, kterou budete v tomto kurzu používat.
Připojení k místnímu serveru Postgres
Otevřete okno terminálu a spuštěním příkazu
psqlse připojte ke svému místnímu serveru Postgres.sudo -u postgres psqlPokud se úspěšně připojíte, vaše databáze Postgres je spuštěná. Pokud ne, podle postupu na stránce Downloads – PostgreSQL Core Distribution (Ke stažení – Distribuce jádra PostgreSQL) se ujistěte, že je vaše místní databáze Postgres spuštěná.
Zadáním příkazu
\qukončete klienta Postgres.Vytvořte uživatele Postgres, který může vytvářet databáze, spuštěním následujícího příkazu s použitím vašeho přihlašovacího uživatelského jména pro Linux.
sudo -u postgres createuser -d <signed-in-user>
Vytvoření aplikace Ruby on Rails v místním prostředí
V tomto kroku získáte ukázkovou aplikaci Ruby on Rails, nakonfigurujete její připojení k databázi a spustíte ji v místním prostředí.
Vytvoření klonu ukázky
V okně terminálu přejděte pomocí příkazu
cddo pracovního adresáře.Naklonujte ukázkové úložiště a přejděte do kořenového adresáře úložiště.
git clone https://github.com/Azure-Samples/rubyrails-tasks.git cd rubyrails-tasksUjistěte se, že je výchozí větev
main.git branch -m mainTip
App Service nepožaduje změnu názvu větve. Vzhledem k tomu, že mnoho úložišť mění výchozí větev na
main, v tomto kurzu se také dozvíte, jak nasadit úložiště zmain. Další informace najdete v tématu Změna větve nasazení.Nainstalujte požadované balíčky.
bundle install --path vendor/bundle
Spuštění ukázky v místním prostředí
Spusťte migrace serveru Rails, aby se vytvořily tabulky, které aplikace potřebuje. Pokud chcete zjistit, které tabulky migrace vytvářejí, podívejte se do adresáře db/migrate v úložišti Git.
rake db:create rake db:migrateSpusťte aplikaci.
rails serverV prohlížeči přejděte na
http://localhost:3000. Na stránce přidejte několik úkolů.
Pokud chcete server Rails zastavit, zadejte do terminálu
Ctrl + C.
Vytvoření Postgres v Azure
V tomto kroku vytvoříte v Azure Database for PostgreSQL databázi Postgres. Později nakonfigurujete aplikaci Ruby on Rails pro připojení k této databázi.
Vytvoření skupiny prostředků
Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure, jako jsou webové aplikace, databáze a účty úložiště. Později se například můžete rozhodnout odstranit celou skupinu prostředků v jednom jednoduchém kroku.
V Cloud Shell vytvořte skupinu prostředků pomocí az group create příkazu. Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění Západní Evropa. Pokud chcete zobrazit všechna podporovaná umístění pro službu App Service v Linuxu na úrovni Basic, spusťte příkaz az appservice list-locations --sku B1 --linux-workers-enabled.
az group create --name myResourceGroup --location "West Europe"
Obvykle budete svoji skupinu prostředků a prostředky vytvářet v oblasti, kterou máte blízko.
Po dokončení příkazu se ve výstupu JSON zobrazí vlastnosti skupiny prostředků.
Vytvoření databáze Postgres v Azure
Nainstalujte
db-uprozšíření pomocí následujícího příkazu:az extension add --name db-upVytvořte databázi Postgres v Azure pomocí
az postgres uppříkazu, jak je znázorněno v následujícím příkladu. Nahraďte <postgresql-name> jedinečným názvem (koncový bod serveru je https:// <postgresql-name> . Postgres.Database.Azure.com). V případě <admin-username> a <admin-password> Zadejte přihlašovací údaje pro vytvoření uživatele správce pro tento server Postgres.az postgres up --resource-group myResourceGroup --location westeurope --server-name <postgresql-name> --database-name sampledb --admin-user <admin-username> --admin-password <admin-password> --ssl-enforcement EnabledTento příkaz může chvíli trvat, protože je to následující:
- Vytvoří skupinu prostředků s názvem
myResourceGroup, pokud neexistuje. Každý prostředek Azure musí být v jednom z těchto. Parametr--resource-groupje volitelný. - Vytvoří server Postgres s administrativním uživatelem.
- Vytvoří
sampledbdatabázi. - Umožňuje přístup z místní IP adresy.
- Umožňuje přístup ze služeb Azure.
- Vytvořte uživatele databáze s přístupem k
sampledbdatabázi.
Všechny kroky můžete provádět samostatně s ostatními
az postgrespříkazy apsql, ale všechny jsouaz postgres upv jednom kroku.Po dokončení příkazu Najděte výstupní řádky, které se nacházejí v
Ran Database Query:. Zobrazují uživatele databáze, který vám byl vytvořen, s uživatelským jménemroota heslemSampledb1. Později je budete používat k připojení aplikace k databázi.Tip
--location <location-name>, lze nastavit na některou z oblastí Azure. Pomocí příkazu můžete získat oblasti dostupné pro vaše předplatnéaz account list-locations. V produkčních aplikacích uložte svou databázi a aplikaci do stejného umístění.- Vytvoří skupinu prostředků s názvem
Připojení aplikace k Azure Postgres
V tomto kroku připojíte aplikaci Ruby on Rails k databázi Postgres, kterou jste vytvořili v Azure Database for PostgreSQL.
Konfigurace připojení k databázi
V úložišti otevřete soubor config/database.yml. Ve spodní části souboru nahraďte produkční proměnné následujícím kódem.
production:
<<: *default
host: <%= ENV['DB_HOST'] %>
database: <%= ENV['DB_DATABASE'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
Uložte změny.
Test aplikace v místním prostředí
Vraťte se do místního terminálu a nastavte následující proměnné prostředí:
export DB_HOST=<postgres-server-name>.postgres.database.azure.com export DB_DATABASE=sampledb export DB_USERNAME=root@<postgres-server-name> export DB_PASSWORD=Sampledb1Spusťte migrace databáze Rails s produkčními hodnotami, které jste právě nakonfigurovali, aby se ve vaší databázi Postgres v Azure Database for PostgreSQL vytvořily tabulky.
rake db:migrate RAILS_ENV=productionPři spuštění v produkčním prostředí potřebuje aplikace Rails předkompilované prostředky. Požadované prostředky vygenerujte pomocí následujícího příkazu:
rake assets:precompileProdukční prostředí Rails také používá ke správě zabezpečení tajné kódy. Vygenerujte tajný klíč.
rails secretUložte tajný klíč do odpovídajících proměnných používaných produkčním prostředím Rails. Pro jednoduchost použijte u obou proměnných stejný klíč.
export RAILS_MASTER_KEY=<output-of-rails-secret> export SECRET_KEY_BASE=<output-of-rails-secret>Povolte v produkčním prostředí Rails zpracování souborů JavaScript a CSS.
export RAILS_SERVE_STATIC_FILES=trueSpusťte v produkčním prostředí ukázkovou aplikaci.
rails server -e productionPřejděte na adresu
http://localhost:3000. Pokud se stránka načte bez chyb, aplikace Ruby on Rails se připojuje k databázi Postgres v Azure.Na stránce přidejte několik úkolů.

Pokud chcete server Rails zastavit, zadejte do terminálu
Ctrl + C.
Potvrzení změn
Potvrďte provedené změny spuštěním následujících příkazů Gitu:
git add . git commit -m "database.yml updates"
Vaše aplikace je připravená k nasazení.
Nasazení do Azure
V tomto kroku nasadíte aplikaci Rails připojenou k Postgres do služby Azure App Service.
Konfigurace uživatele nasazení
FTP a místní Git se můžou nasadit do webové aplikace Azure pomocí uživatele nasazení. Jakmile nakonfigurujete uživatele nasazení, můžete ho použít pro všechna nasazení Azure. Uživatelské jméno a heslo nasazení na úrovni účtu se liší od přihlašovacích údajů předplatného Azure.
Pokud chcete nakonfigurovat uživatele nasazení, spusťte v Azure Cloud Shell příkaz AZ WebApp Deployment User set . Nahraďte <username> a <password> pomocí uživatelského jména a hesla pro nasazení.
- Uživatelské jméno musí být v rámci Azure jedinečné a pro místní nabízená oznámení Git nesmí obsahovat @ symbol.
- Heslo musí mít délku alespoň osm znaků a dva z následujících tří prvků: písmena, číslice a symboly.
az webapp deployment user set --user-name <username> --password <password>
Výstup JSON zobrazuje heslo jako null . Pokud se zobrazí chyba 'Conflict'. Details: 409, změňte uživatelské jméno. Pokud se zobrazí chyba 'Bad Request'. Details: 400, použijte silnější heslo.
Poznamenejte si uživatelské jméno a heslo, které chcete použít k nasazení webových aplikací.
Vytvoření plánu služby App Service
V Cloud Shell vytvořte App Service plán pomocí az appservice plan create příkazu.
Následující příklad vytvoří plán služby App Service s názvem myAppServicePlan v cenové úrovni Free:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
Po vytvoření plánu služby App Service se v rozhraní příkazového řádku Azure zobrazí podobné informace jako v následujícím příkladu:
{
"freeOfferExpirationTime": null,
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "linux",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Vytvoření webové aplikace
Vytvořte webovou aplikaci v myAppServicePlan App Service plánu.
V Cloud Shell můžete použít příkaz az webapp create . V následujícím příkladu nahraďte <app-name> globálně jedinečným názvem aplikace (platné znaky jsou a-z, 0-9 a -). Modul runtime je nastavený na RUBY|2.6.2. Pokud chcete zobrazit všechny podporované moduly runtime, spusťte az webapp list-runtimes --linux příkaz .
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'RUBY|2.6.2' --deployment-local-git
Po vytvoření webové aplikace Azure CLI zobrazí výstup podobný následujícímu příkladu:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<app-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
Vytvořili jste novou prázdnou webovou aplikaci s povoleným nasazením gitu.
Poznámka
Adresa URL vzdáleného úložiště Git se zobrazuje ve vlastnosti deploymentLocalGitUrl ve formátu https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Tuto adresu URL si uložte, protože ji budete potřebovat později.
Konfigurace nastavení databáze
Ve službě App Service můžete nastavit proměnné prostředí jako nastavení aplikace pomocí příkazu az webapp config appsettings set v Cloud Shellu.
Následující příkaz Cloud Shellu nakonfiguruje nastavení aplikace DB_HOST, DB_DATABASE, DB_USERNAME a DB_PASSWORD. Nahraďte zástupné < symboly appname> a < postgres-server-name>.
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DB_HOST="<postgres-server-name>.postgres.database.azure.com" DB_DATABASE="sampledb" DB_USERNAME="root@<postgres-server-name>" DB_PASSWORD="Sampledb1"
Konfigurace proměnných prostředí Rails
V místním terminálu vygenerování nového tajného kódu pro produkční prostředí Rails v Azure.
rails secretV následujícím Cloud Shell nahraďte dva zástupné symboly < output-of-rails-secret>novým tajným klíčem, který jste vygeneroval v místním terminálu.
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings RAILS_MASTER_KEY="<output-of-rails-secret>" SECRET_KEY_BASE="<output-of-rails-secret>" RAILS_SERVE_STATIC_FILES="true" ASSETS_PRECOMPILE="true"Nastavení
ASSETS_PRECOMPILE="true"sdělí kontejneru Ruby, že se mají při každém nasazení z Gitu předkompilovat prostředky. Další informace najdete v tématu Předkompilování prostředků a Obsluhu statických prostředků.
Přenos z Gitu do Azure
Vzhledem k tomu, že nasazujete větev , musíte nastavit výchozí větev nasazení pro
mainvaši App Servicemainna (viz Změna větve nasazení). V Cloud Shell nastavte nastaveníDEPLOYMENT_BRANCHaplikace pomocíaz webapp config appsettings setpříkazu .az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'V místním terminálu přidejte do místního úložiště Gitu vzdálené prostředí Azure.
git remote add azure <paste-copied-url-here>Nasdílením změn do vzdáleného prostředí Azure nasaďte aplikaci Ruby on Rails. Zobrazí se výzva k zadání hesla, které jste zadali dříve v rámci vytváření uživatele nasazení.
git push azure mainBěhem nasazení bude služba Azure App Service hlásit Gitu průběh nasazení.
Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id 'a5e076db9c'. remote: Running custom deployment command... remote: Running deployment command... ... < Output has been truncated for readability >
Přejděte do aplikace Azure.
Přejděte na adresu http://<app-name>.azurewebsites.net a přidejte do seznamu několik úkolů.
Blahopřejeme! Teď máte ve službě Azure App Service spuštěnou aplikaci Ruby on Rails založenou na datech.
Místní aktualizace modelu a opětovné nasazení
V tomto kroku provedete jednoduchou změnu datového modelu task a webové aplikace a potom tuto aktualizaci publikujete v Azure.
Pro scénář úkolů upravíte aplikaci tak, abyste mohli úkol označit jako dokončený.
Přidání sloupce
V terminálu přejděte do kořenového adresáře úložiště Git.
Vytvořte novou migraci, která přidá do tabulky
Taskslogický sloupec s názvemDone:rails generate migration AddDoneToTasks Done:booleanTento příkaz vygeneruje v adresáři db/migrate nový soubor migrace.
V terminálu spusťte migrace databáze Rails, aby se změna provedla v místní databázi.
rake db:migrate
Aktualizace logiky aplikace
Otevřete soubor app/controllers/tasks_controller.rb. Na konci souboru najdete následující řádek:
params.require(:task).permit(:Description)Tento řádek upravte tak, aby obsahoval nový parametr
Done.params.require(:task).permit(:Description, :Done)
Aktualizace zobrazení
Otevřete soubor app/views/tasks/_form.html.erb, což je formulář pro úpravy.
Najděte řádek
<%=f.error_span(:Description) %>a přímo pod něj vložte následující kód:<%= f.label :Done, :class => 'control-label col-lg-2' %> <div class="col-lg-10"> <%= f.check_box :Done, :class => 'form-control' %> </div>Otevřete soubor app/views/tasks/show.html.erb což je stránka zobrazení s jedním záznamem.
Najděte řádek
<dd><%= @task.Description %></dd>a přímo pod něj vložte následující kód:<dt><strong><%= model_class.human_attribute_name(:Done) %>:</strong></dt> <dd><%= check_box "task", "Done", {:checked => @task.Done, :disabled => true}%></dd>Otevřete soubor app/views/tasks/index.html.erb, což je indexová stránka pro všechny záznamy.
Najděte řádek
<th><%= model_class.human_attribute_name(:Description) %></th>a přímo pod něj vložte následující kód:<th><%= model_class.human_attribute_name(:Done) %></th>Ve stejném souboru najděte řádek
<td><%= task.Description %></td>a přímo pod něj vložte následující kód:<td><%= check_box "task", "Done", {:checked => task.Done, :disabled => true} %></td>
Místní test provedených změn
V místní terminálu spusťte server Rails.
rails serverPokud chcete vidět změnu stavu úkolu, přejděte na adresu
http://localhost:3000a přidejte nebo upravte položky.
Pokud chcete server Rails zastavit, zadejte do terminálu
Ctrl + C.
Publikování změn v Azure
V terminálu spusťte migrace databáze Rails, aby produkční prostředí provedlo změnu v databázi Azure.
rake db:migrate RAILS_ENV=productionPotvrďte všechny změny v Gitu a potom odešlete změny kódu do Azure.
git add . git commit -m "added complete checkbox" git push azure mainPo
git pushdokončení přejděte do aplikace Azure a otestujte nové funkce.
Pokud jste přidali nějaké úkoly, zůstanou v databázi. Aktualizace schématu dat nechávají existující data netknutá.
Streamování diagnostických protokolů
Pokud chcete získat přístup k protokolům konzoly vygenerovaným v rámci kódu aplikace ve službě App Service, zapněte protokolování diagnostiky spuštěním následujícího příkazu v Cloud Shellu:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Možné hodnoty pro --level jsou: Error, Warning, Info a Verbose. Každá další úroveň zahrnuje předchozí úroveň. Například Error zahrnuje jenom chybové zprávy a Verbose zahrnuje všechny zprávy.
Jakmile je aktivované protokolování diagnostiky, spusťte následující příkaz pro zobrazení streamu protokolů:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Poznámka
Soubory protokolu můžete také zkontrolovat v prohlížeči na https://<app-name>.scm.azurewebsites.net/api/logs/docker.
Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.
Správa aplikace Azure
Přejděte do Azure Portal a spravujte aplikaci, kterou jste vytvořili.
V nabídce vlevo klikněte na App Services a pak klikněte na název vaší aplikace Azure.

Zobrazí se stránka Přehled vaší aplikace. Tady můžete provádět základní úkoly správy, jako je zastavení, spuštění, restartování, procházení a odstranění.
Levá nabídka obsahuje stránky pro konfiguraci vaší aplikace.

Vyčištění prostředků
V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:
az group delete --name myResourceGroup
Spuštění tohoto příkazu může trvat přibližně minut.
Další kroky
V tomto kurzu jste se naučili:
- Vytvořit v Azure databázi Postgres
- Připojit k Postgres aplikaci Ruby on Rails
- Nasadit aplikaci do Azure
- Aktualizovat datový model a znovu nasadit aplikaci
- Streamovat diagnostické protokoly z Azure
- Spravovat aplikaci na webu Azure Portal
V dalším kurzu se dozvíte, jak namapovat vlastní název DNS na vaši aplikaci.
Nebo se podívejte na další zdroje informací:
