Linux üzerinde Azure App Service'da Ruby ve Postgres uygulaması Linux üzerinde Azure App Service
Azure App Service, yüksek oranda ölçeklenebilen, kendi kendine düzeltme eki uygulayan bir web barındırma hizmeti sunar. Bu öğreticide, Ruby uygulamasının nasıl oluşturularak postgreSQL veritabanına nasıl bağlan olduğu gösterir. İşiniz bittiğinde, Linux üzerinde App Service’te çalışan bir Ruby on Rails uygulamasına sahip olacaksınız.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Azure’da PostgreSQL veritabanı oluşturma
- Ruby on Rails uygulamasını PostgreSQL'e bağlama
- Uygulamayı Azure’da dağıtma
- Veri modelini güncelleştirme ve uygulamayı yeniden dağıtma
- Azure’daki tanılama günlüklerinin akışını sağlama
- Uygulamayı Azure portalında yönetme
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Bu öğreticiyi tamamlamak için:
Azure Cloud Shell'Da Bash ortamını kullanın.
Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Yerel Postgres sunucusunu hazırlama
Bu adımda, bu öğreticide kullanmak üzere yerel Postgres sunucunuzda bir veritabanı oluşturursunuz.
Yerel Postgres sunucusuna bağlanma
Yerel Postgres sunucunuza bağlanmak için terminal penceresini açın ve
psqlkomutunu çalıştırın.sudo -u postgres psqlBağlantınız başarılı olursa, Postgres veritabanınız çalışır. Aksi takdirde, yerel Postgres veritabanınızın İndirmeler - PostgreSQL Çekirdek Dağıtım konusundaki adımlar izlenilerek başlatıldığından emin olun.
Postgres istemcisinden çıkmak için
\qyazın.Aşağıdaki komutu oturum açtığınız Linux kullanıcı adıyla çalıştırarak veritabanı oluşturabilen bir Postgres kullanıcısı oluşturun.
sudo -u postgres createuser -d <signed-in-user>
Yerel olarak bir Ruby on Rails uygulaması oluşturma
Bu adımda Ruby on Rails örnek uygulaması edinir, veritabanı bağlantısını yapılandırır ve yerel olarak çalıştırırsınız.
Örneği
Terminal penceresinde,
cdile bir çalışma dizinine gidin.Örnek depoyu klonlama ve depo köküne değiştirme.
git clone https://github.com/Azure-Samples/rubyrails-tasks.git cd rubyrails-tasksVarsayılan dal'ın olduğundan emin
mainolun.git branch -m mainİpucu
Dal adı değişikliği, dal adı değişikliği App Service. Ancak, birçok depo varsayılan dallarını olarak değiştirmektedir. Bu öğreticide, 'den
mainbir depoyu dağıtmayı damaingösterir. Daha fazla bilgi için bkz. Dağıtım dallarını değiştirme.Gereken paketleri yükleyin.
bundle install --path vendor/bundle
Örneği yerel olarak çalıştırma
Uygulama için gereken tabloları oluşturmak üzere Rails geçişlerini çalıştırın. Geçişlerde hangi tabloların oluşturulduğunu görmek için, Git deposundaki db/migrate dizinine bakın.
rake db:create rake db:migrateUygulamayı çalıştırın.
rails serverBir tarayıcıda
http://localhost:3000sayfasına gidin. Sayfaya birkaç görev ekleyin.
Rails sunucusunu durdurmak için terminale
Ctrl + Cyazın.
Azure'da Postgres oluşturma
Bu adımda, PostgreSQL için Azure Veritabanı içinde bir Postgres veritabanı oluşturursunuz. Daha sonra, Ruby on Rails uygulamasını bu veritabanına bağlanacak şekilde yapılandırırsınız.
Kaynak grubu oluşturma
Kaynak grubu , Web uygulamaları, veritabanları ve depolama hesapları gibi Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Örneğin, daha sonra tek bir basit adımda kaynak grubun tamamını silmeyi seçebilirsiniz.
Cloud Shell, komutuyla bir kaynak grubu oluşturun az group create . Aşağıdaki örnek Batı Avrupa konumunda myResourceGroup adlı bir kaynak grubu oluşturur. Temel katmanda Linux üzerinde App Service için desteklenen tüm konumları görüntülemek için az appservice list-locations --sku B1 --linux-workers-enabled komutunu çalıştırın.
az group create --name myResourceGroup --location "West Europe"
Genellikle kaynak grubunuzu ve kaynakları kendinize yakın bir bölgede oluşturursunuz.
Komut tamamlandığında, bir JSON çıkışı size kaynak grubu özelliklerini gösterir.
Azure'da Postgres veritabanı oluşturma
Uzantıyı
db-upaşağıdaki komutla yükleyin:az extension add --name db-upAşağıdaki örnekte gösterildiği gibi komutuyla Azure'da Postgres
az postgres upveritabanını oluşturun. yerine <postgresql-name> benzersiz bir ad yazın (sunucu uç noktası <postgresql-name> .https:// postgres.database.azure.com). ve <admin-username> <admin-password> için, bu Postgres sunucusu için yönetici kullanıcı oluşturmak için kimlik bilgilerini belirtin.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 EnabledBu komut şunları yaptığı için biraz zaman alır:
- Yoksa adlı bir
myResourceGroupkaynak grubu oluşturur. Her Azure kaynağının bunlardan biri olması gerekir.--resource-groupisteğe bağlıdır. - Yönetici kullanıcı ile bir Postgres sunucusu oluşturur.
- Bir veritabanı
sampledboluşturur. - Yerel IP adresinizden erişime izin verir.
- Azure hizmetlerinden erişime izin verir.
- Veritabanına erişimi olan bir veritabanı kullanıcısı
sampledboluşturun.
Tüm adımları diğer komutlar ve ile ayrı
az postgresayrıpsqlyapabilirsiniz,az postgres upancak bunların hepsini sizin için tek bir adımda yapar.Komut tamam olduğunda ile olan çıkış satırlarını
Ran Database Query:bulun. Sizin için oluşturulan veritabanı kullanıcı adını ve parolasınırootSampledb1gösterir. Bunları daha sonra, uygulamayı veritabanına bağlamak için kullanacağız.İpucu
--location <location-name>, Azure bölgelerinden herhangi biri olarak ayarlanmış olabilir. komutunu kullanarak aboneliğinizin kullanılabilir bölgeleriniaz account list-locationsedinebilirsiniz. Üretim uygulamaları için veritabanınızı ve uygulamalarınızı aynı konuma koyabilirsiniz.- Yoksa adlı bir
Uygulamayı Azure Postgres'e bağlama
Bu adımda, Ruby on Rails uygulamasını PostgreSQL için Azure Veritabanı içinde oluşturduğunuz Postgres veritabanına bağlarsınız.
Veritabanı bağlantısını yapılandırma
Depoda, config/database.yml dosyasını açın. Dosyanın en altında, üretim değişkenlerini aşağıdaki kodla değiştirin.
production:
<<: *default
host: <%= ENV['DB_HOST'] %>
database: <%= ENV['DB_DATABASE'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
Değişiklikleri kaydedin.
Uygulamayı yerel olarak test etme
Yerel terminale geri döndüğünüzde, aşağıdaki ortam değişkenlerini ayarlayın:
export DB_HOST=<postgres-server-name>.postgres.database.azure.com export DB_DATABASE=sampledb export DB_USERNAME=root@<postgres-server-name> export DB_PASSWORD=Sampledb1PostgreSQL için Azure Veritabanı (Önizleme) içinde tablolar oluşturmak için, Postgres veritabanı geçişlerini yeni yapılandırdığınız üretim değerleriyle çalıştırın.
rake db:migrate RAILS_ENV=productionÜretim ortamında çalıştırırken, Rails uygulamasına önceden derlenmiş varlıklar gerekir. Aşağıdaki komutu kullanarak gerekli varlıkları oluşturun:
rake assets:precompileAyrıca Rails üretim ortamı güvenliği yönetmek için gizli diziler kullanır. Gizli anahtar oluşturun.
rails secretGizli anahtarı, Rails üretim ortamı tarafından kullanılan ilgili değişkenlere kaydedin. Kolaylık olması için, her iki değişken için de aynı anahtarı kullanırsınız.
export RAILS_MASTER_KEY=<output-of-rails-secret> export SECRET_KEY_BASE=<output-of-rails-secret>JavaScript ve CSS dosyalarına hizmet vermek için Rails üretim ortamını etkinleştirin.
export RAILS_SERVE_STATIC_FILES=trueÖrnek uygulamayı üretim ortamında çalıştırın.
rails server -e productionhttp://localhost:3000sayfasına gidin. Sayfa hatasız yüklenirse, Ruby on Rails uygulaması Azure’da Postgres veritabanına bağlanıyor demektir.Sayfaya birkaç görev ekleyin.

Rails sunucusunu durdurmak için terminale
Ctrl + Cyazın.
Değişikliklerinizi kaydetme
Değişikliklerinizi kaydetmek için aşağıdaki Git komutlarını çalıştırın:
git add . git commit -m "database.yml updates"
Uygulamanız dağıtılmaya hazırdır.
Azure’a dağıtın
Bu adımda, Postgres'e bağlı Rails uygulamasını Azure App Service'e dağıtırsınız.
Dağıtım kullanıcısı yapılandırma
FTP ve yerel git, bir dağıtım kullanıcısı kullanarak bir Azure Web uygulamasına dağıtabilir. Dağıtım kullanıcısını yapılandırdıktan sonra tüm Azure dağıtımlarınız için kullanabilirsiniz. Hesap düzeyinde dağıtım Kullanıcı adınız ve parolanız, Azure aboneliği kimlik bilgilerinizden farklı.
Dağıtım kullanıcısını yapılandırmak için, Azure Cloud Shell bölümünde az WebApp Deployment User set komutunu çalıştırın. <username>Ve öğesini <password> bir dağıtım kullanıcısı Kullanıcı adı ve parolasıyla değiştirin.
- Kullanıcı adı Azure içinde benzersiz olmalıdır ve yerel git gönderimleri için ' @ ' sembolünü içermemelidir.
- Parola en az sekiz karakter uzunluğunda olmalıdır ve şu üç öğeden ikisi vardır: harfler, rakamlar ve semboller.
az webapp deployment user set --user-name <username> --password <password>
JSON çıktısı parolayı olarak gösterir null . 'Conflict'. Details: 409 hatası alırsanız kullanıcı adını değiştirin. 'Bad Request'. Details: 400 hatası alırsanız daha güçlü bir parola kullanın.
Web uygulamalarınızı dağıtmak için kullanmak üzere Kullanıcı adınızı ve parolanızı kaydedin.
App Service planı oluşturma
Komut Cloud Shell ile bir App Service planı az appservice plan create oluşturun.
Aşağıdaki örnekte, Ücretsiz fiyatlandırma katmanı kullanılarak myAppServicePlan adlı bir App Service planı oluşturulmaktadır:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
App Service planı oluşturulduğunda Azure CLI, aşağıdaki örneğe benzer bilgiler gösterir:
{
"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
}
Web uygulaması oluşturma
App Service planında bir Web uygulaması oluşturun myAppServicePlan .
Cloud Shell az webapp create komutunu kullanabilirsiniz. Aşağıdaki örnekte <app-name> kısmını genel olarak benzersiz bir uygulama adıyla değiştirin (geçerli karakterler a-z, 0-9 ve - şeklindedir). Çalışma zamanı RUBY|2.6.2 olarak ayarlanmıştır. Desteklenen tüm çalışma zamanlarını görmek için öğesini çalıştırın az webapp list-runtimes --linux .
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'RUBY|2.6.2' --deployment-local-git
Web uygulaması oluşturulduğunda Azure CLI aşağıda yer alan çıktıdaki gibi bilgiler gösterir:
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. >
}
Git dağıtımı etkinken boş bir yeni Web uygulaması oluşturdunuz.
Not
Git uzak URL’si deploymentLocalGitUrl özelliği içinde https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git biçiminde gösterilir. Bu URL’ye daha sonra ihtiyacınız olacağı için URL’yi kaydedin.
Veritabanı ayarlarını yapılandırma
App Service’te, Cloud Shell'de az webapp config appsettings set komutunu kullanarak ortam değişkenlerini uygulama ayarları olarak ayarlayabilirsiniz.
Aşağıdaki Cloud Shell komutu DB_HOST, DB_DATABASE, DB_USERNAME ve DB_PASSWORD uygulama ayarlarını yapılandırır. < appname>< ve postgres-server-name yer tutucularını>.
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"
Rails ortam değişkenlerini yapılandırma
Yerel terminalde, Azure'daki Rails üretim ortamı için yeni bir gizli kod oluştur.
rails secretAşağıdaki Cloud Shell komutunda, iki < output-of-rails-secret> yer tutucusunu yerel terminalde oluşturulan yeni gizli anahtarla değiştirin.
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"ASSETS_PRECOMPILE="true", varsayılan Ruby kapsayıcısına her Git dağıtımında varlıkları yeniden derlemesini bildirir. Daha fazla bilgi için bkz. Varlıkları önceden derleme ve Statik varlıklara hizmet etme.
Git üzerinden Azure'a gönderme
Dalı dağıtıyorsanız, uygulamanızın varsayılan dağıtım dalını olarak
mainApp Servicemaingerekir (bkz. Dağıtım dalını değiştirme). Komut Cloud Shell ileDEPLOYMENT_BRANCHuygulama ayarınıaz webapp config appsettings setayarlayın.az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'Yerel terminalde yerel Git deponuza bir Azure uzak deposu ekleyin.
git remote add azure <paste-copied-url-here>Ruby on Rails uygulamasını dağıtmak için Azure uzak deposuna gönderin. Daha önce dağıtım kullanıcısı oluştururken belirttiğiniz parola istenir.
git push azure mainDağıtım sırasında Azure App Service, ilerleme durumunu Git'e iletir.
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 >
Azure uygulamasına göz atma
http://<app-name>.azurewebsites.net listesine göz atın ve listeye birkaç görev ekleyin.
Tebrikler, Azure App Service'te veri temelli bir Ruby on Rails uygulaması çalıştırıyorsunuz.
Modeli yerel olarak güncelleştirme ve yeniden dağıtma
Bu adımda, task veri modeli ve web uygulamasında basit bir değişiklik yaptıktan sonra güncelleştirmeyi Azure'da yayımlarsınız.
Görevler senaryosu için, görevi tamamlandı olarak işaretleyebileceğiniz şekilde uygulamayı değiştirirsiniz.
Sütun ekleme
Terminalde Git deposunun kök dizinine gidin.
TaskstablosunaDoneadlı bir Boole sütunu ekleyen yeni bir geçiş oluşturun:rails generate migration AddDoneToTasks Done:booleanBu komut yeni geçiş dosyasını db/migrate dizininde oluşturur.
Terminalde, Rails veritabanı geçişlerini çalıştırarak yerel veritabanında değişikliği yapın.
rake db:migrate
Uygulama mantığını güncelleştirme
app/controllers/tasks_controller.rb dosyasını açın. Dosyanın en sonunda şu satırı bulun:
params.require(:task).permit(:Description)Bu satırı, yeni
Doneparametresini içerecek şekilde değiştirin.params.require(:task).permit(:Description, :Done)
Görünümleri güncelleştirme
Düzenleme formu olan app/views/tasks/_form.html.erb dosyasını açın.
<%=f.error_span(:Description) %>satırını bulun ve bu satırın hemen altına aşağıdaki kodu ekleyin:<%= f.label :Done, :class => 'control-label col-lg-2' %> <div class="col-lg-10"> <%= f.check_box :Done, :class => 'form-control' %> </div>Tek kayıtlı Görünüm sayfası olan app/views/tasks/show.html.erb dosyasını açın.
<dd><%= @task.Description %></dd>satırını bulun ve bu satırın hemen altına aşağıdaki kodu ekleyin:<dt><strong><%= model_class.human_attribute_name(:Done) %>:</strong></dt> <dd><%= check_box "task", "Done", {:checked => @task.Done, :disabled => true}%></dd>Tüm kayıtların dizin sayfası olan app/views/tasks/index.html.erb dosyasını açın.
<th><%= model_class.human_attribute_name(:Description) %></th>satırını bulun ve bu satırın hemen altına aşağıdaki kodu ekleyin:<th><%= model_class.human_attribute_name(:Done) %></th>Aynı dosyada,
<td><%= task.Description %></td>satırını bulun ve bu satırın hemen altına aşağıdaki kodu ekleyin:<td><%= check_box "task", "Done", {:checked => task.Done, :disabled => true} %></td>
Değişiklikleri yerel olarak test etme
Yerel terminalde Rails sunucusunu çalıştırın.
rails serverGörev durumu değişikliğini görmek için
http://localhost:3000öğesine gidip öğeleri ekleyin veya düzenleyin.
Rails sunucusunu durdurmak için terminale
Ctrl + Cyazın.
Değişiklikleri Azure’da yayımlama
Terminalde, üretim ortamı için Rails veritabanı geçişlerini çalıştırarak değişikliği Azure veritabanında yapın.
rake db:migrate RAILS_ENV=productionTüm değişiklikleri Git’e kaydedin ve ardından kod değişikliklerini Azure’a gönderin.
git add . git commit -m "added complete checkbox" git push azure maintamamlandıktan
git pushsonra Azure uygulamasına gidin ve yeni işlevselliği test edin.
Herhangi bir görevi eklediyseniz veritabanında tutulur. Veri şemasında yapılan güncelleştirmeler var olan verileri olduğu gibi bırakır.
Tanılama günlüklerini akışla aktarma
App Service’te uygulama kodunuzun içinden oluşturulan konsol günlüklerine erişmek için şu komutu Cloud Shell’de çalıştırarak tanılama günlüğüne kaydetmeyi açın:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
--level için olası değerler: Error, Warning, Info ve Verbose. Her düzey kendisinden önceki düzeyi içerir. Örneğin: Error yalnızca hata iletilerini içerir, Verbose ise tüm iletileri içerir.
Tanılama günlüğüne kaydetme açıldıktan sonra günlük akışını görmek için şu komutu çalıştırın:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Konsol günlüklerini hemen görmüyorsanız, 30 saniye içinde yeniden kontrol edin.
Not
Ayrıca, tarayıcıdan https://<app-name>.scm.azurewebsites.net/api/logs/docker adresine giderek günlük dosyalarını inceleyebilirsiniz.
Günlük akışını dilediğiniz zaman durdurmak için Ctrl+C yazın.
Azure uygulamasını yönetme
Oluşturduğunuz uygulamayı Azure portal için aşağıdaki sunucuya gidin.
Sol menüden Uygulama Hizmetleri'ne ve ardından Azure uygulamanıza tıklayın.

Uygulamanın Genel Bakış sayfasını görebilirsiniz. Buradan durdurma, başlatma, yeniden başlatma, göz atma ve silme gibi temel yönetim görevlerini gerçekleştirebilirsiniz.
Soldaki menü, uygulamanızı yapılandırmaya yönelik sayfalar sağlar.

Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Bu kaynakların gelecekte gerekli olacağını düşünmüyorsanız, Cloud Shell’de aşağıdaki komutu çalıştırarak kaynak grubunu silin:
az group delete --name myResourceGroup
Bu komutun çalıştırılması bir dakika sürebilir.
Sonraki adımlar
Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:
- Azure'da Postgres veritabanı oluşturma
- Ruby on Rails uygulamasını Postgres'e bağlama
- Uygulamayı Azure’da dağıtma
- Veri modelini güncelleştirme ve uygulamayı yeniden dağıtma
- Azure’daki tanılama günlüklerinin akışını sağlama
- Uygulamayı Azure portalında yönetme
Özel bir DNS adını uygulamanıza eşleme hakkında bilgi edinmek için sonraki öğreticiye ilerleyin.
Veya diğer kaynaklara göz atarak:
