App Engine में ASP.NET कोर ऐप डिप्लॉय करना

1. खास जानकारी

ASP.NET Core एक नया ओपन-सोर्स और क्रॉस-प्लैटफ़ॉर्म फ़्रेमवर्क है. इसकी मदद से, C# प्रोग्रामिंग भाषा का इस्तेमाल करके, क्लाउड पर आधारित और इंटरनेट से कनेक्ट किए गए आधुनिक ऐप्लिकेशन बनाए जा सकते हैं.

इस लैब में, आपको App Engine फ़्लेक्सिबल एनवायरमेंट में एक सामान्य ASP.NET Core ऐप्लिकेशन डिप्लॉय करना होगा. यह कोडलैब, Google Cloud Shell से ASP.NET Core ऐप्लिकेशन बनाएं और लॉन्च करें कोडलैब पर आधारित है. इस लैब को आज़माने से पहले, आपको वह लैब आज़मानी चाहिए.

Google App Engine के ऐप्लिकेशन को आसानी से बनाया, मैनेज किया, और स्केल किया जा सकता है. ऐसा, ट्रैफ़िक और डेटा स्टोरेज की ज़रूरतों में बदलाव होने पर किया जा सकता है. App Engine के साथ, आपको सर्वर मैनेज करने की ज़रूरत नहीं होती. आपको बस अपना ऐप्लिकेशन अपलोड करना है और वह इस्तेमाल के लिए तैयार हो जाएगा.

App Engine ऐप्लिकेशन, आने वाले ट्रैफ़िक के आधार पर अपने-आप स्केल हो जाते हैं. App Engine में, लोड बैलेंसिंग, माइक्रोसेवाएं, अनुमति, SQL और NoSQL डेटाबेस, Memcache, ट्रैफ़िक स्प्लिटिंग, लॉगिंग, खोज, वर्शनिंग, रोल आउट और रोल बैक, और सुरक्षा स्कैनिंग की सुविधाएं पहले से मौजूद होती हैं. इन सभी को अपनी ज़रूरत के हिसाब से बदला जा सकता है.

App Engine के एनवायरमेंट, स्टैंडर्ड एनवायरमेंट और फ़्लेक्सिबल एनवायरमेंट, कई प्रोग्रामिंग भाषाओं के साथ काम करते हैं. इनमें C#, Java, Python, PHP, Node.js, Go वगैरह शामिल हैं. इन दोनों एनवायरमेंट से, उपयोगकर्ताओं को यह तय करने की पूरी आज़ादी मिलती है कि उनका ऐप्लिकेशन कैसे काम करेगा. ऐसा इसलिए, क्योंकि हर एनवायरमेंट की अपनी कुछ खासियत होती हैं. ज़्यादा जानकारी के लिए, App Engine एनवायरमेंट चुनना लेख पढ़ें.

आपको क्या सीखने को मिलेगा

  • किसी सामान्य ASP.NET Core ऐप्लिकेशन को Docker कंटेनर के तौर पर पैकेज करने का तरीका.
  • App Engine पर, ASP.NET Core के किसी सामान्य ऐप्लिकेशन को डिप्लॉय करने का तरीका.

आपको किन चीज़ों की ज़रूरत होगी

  • Google Cloud Platform प्रोजेक्ट
  • कोई ब्राउज़र, जैसे कि Chrome या Firefox

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

Google Cloud Platform इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?

शुरुआती सामान्य एडवांस

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक कैरेक्टर स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे किसी भी समय अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है. इसलिए, अगर आपको यह पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट करें. इसके अलावा, अपने हिसाब से कोई आईडी बनाकर देखें कि वह उपलब्ध है या नहीं. इसके बाद, प्रोजेक्ट बनाने के बाद इसे "फ़्रीज़" कर दिया जाता है.
  • तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. संसाधन बंद करने के लिए, कोडलैब के आखिर में दिए गए "बंद करें" निर्देशों का पालन करें, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 4292cbf4971c9786.png पर क्लिक करें.

bce75f34b2c53987.png

अगर आपने पहले कभी Cloud Shell का इस्तेमाल नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

70f315d7b402b476.png

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

fbe3a0674c982259.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.

  1. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Cloud Shell में ASP.NET Core ऐप्लिकेशन बनाना

Cloud Shell प्रॉम्प्ट में, इंस्टॉल किए गए .NET SDK की सूची बनाकर यह पुष्टि की जा सकती है कि dotnet कमांड-लाइन टूल पहले से इंस्टॉल है:

dotnet --list-sdks

इसके बाद, netcoreapp3.1 के टारगेट फ़्रेमवर्क के साथ एक नया ASP.NET Core वेब ऐप्लिकेशन बनाएं:

dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1

इससे एक प्रोजेक्ट बन जाएगा और उसकी डिपेंडेंसी वापस आ जाएंगी. आपको नीचे दिए गए मैसेज जैसा कोई मैसेज दिखेगा.

Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.

Restore succeeded.

4. ASP.NET Core ऐप्लिकेशन चलाना

हमारा ऐप्लिकेशन लॉन्च होने के लिए तैयार है. ऐप्लिकेशन फ़ोल्डर पर जाएं.

cd HelloWorldAspNetCore

आखिर में, ऐप्लिकेशन चलाएं.

dotnet run --urls=http://localhost:8080

ऐप्लिकेशन, पोर्ट 8080 पर सुनना शुरू कर देता है.

Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.

यह पुष्टि करने के लिए कि ऐप्लिकेशन चल रहा है, सबसे ऊपर दाईं ओर मौजूद वेब प्रीव्यू बटन पर क्लिक करें. इसके बाद, ‘पोर्ट 8080 पर झलक देखें’ को चुनें.

Capture.PNG

आपको डिफ़ॉल्ट ASP.NET Core वेबपेज दिखेगा:

f579a9baedc108a9.png

ऐप्लिकेशन के चालू होने की पुष्टि करने के बाद, ऐप्लिकेशन को बंद करने के लिए Ctrl+C दबाएं.

5. ASP.NET Core ऐप्लिकेशन पब्लिश करना

अब dotnet publish कमांड का इस्तेमाल करके, ऐप्लिकेशन को पब्लिश करें, ताकि आपको एक सेल्फ-कंटेन्ड डीएलएल मिल सके.

dotnet publish -c Release

publish चलाने पर, प्रोसेस के आखिर में कुछ ऐसे मैसेज दिखते हैं जिनमें DLL को पब्लिश किए जाने की पुष्टि की गई हो.

...
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
  HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/

6. App Engine फ़्लेक्सिबल के लिए app.yaml फ़ाइल बनाना

app.yaml फ़ाइल में बताया गया है कि ऐप्लिकेशन को App Engine पर कैसे डिप्लॉय किया जाए. इस मामले में, App Engine फ़्लेक्सिबल एनवायरमेंट का इस्तेमाल किया गया है.

सबसे पहले, publish फ़ोल्डर पर जाएं. यह bin/Release फ़ोल्डर में होना चाहिए, लेकिन इसका सटीक पाथ .NET के वर्शन पर निर्भर करता है:

cd bin/Release/netcoreapp3.1/publish/

publish फ़ोल्डर में app.yaml फ़ाइल बनाएं:

cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT

ध्यान दें कि app.yaml फ़ाइल में, एनवायरमेंट को flex और रनटाइम को aspnetcore के तौर पर तय किया गया है.

7. App Engine फ़्लेक्सिबल एनवायरमेंट में डिप्लॉय करना

अब gcloud का इस्तेमाल करके, App Engine flexible पर अपना ऐप्लिकेशन डिप्लॉय किया जा सकता है. publish डायरेक्ट्री में, यह कमांड चलाएं:

gcloud app deploy --version v0

डप्लॉयमेंट के दौरान, आपसे अपने ऐप्लिकेशन के लिए कोई क्षेत्र चुनने के लिए कहा जा सकता है. वह देश या इलाका चुनें जहां आपको अपना ऐप्लिकेशन चलाना है.

Please choose a region for your application. After choosing a region, 
you cannot change it. Which region would you like to choose?
 [1] europe-west   (supports standard and flexible)
 [2] us-central    (supports standard and flexible)
 [3] us-east1      (supports standard and flexible)
 [4] asia-northeast1 (supports standard and flexible)
 [5] cancel

इससे क्लाउड में आपके ऐप्लिकेशन के लिए एक इमेज बन जाएगी. यह इमेज, Google Container Registry में सेव हो जाएगी और App Engine पर डिप्लॉय हो जाएगी. डप्लॉयमेंट के दौरान, कंटेनर इमेज को बनते हुए देखा जा सकता है:

Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild

आखिर में, आपको दिखेगा कि ऐप्लिकेशन को डिप्लॉय कर दिया गया है.

...
Deployed service [default] to [https://<project-id>.appspot.com]

ऐप्लिकेशन को डिप्लॉय करने के बाद,अपने वेब ब्राउज़र में http://<project-id>.appspot.com यूआरएल खोलकर इसे ऐक्सेस करें.

आपको नए टैब में डिफ़ॉल्ट ASP.NET Core वेबपेज दिखेगा.

f579a9baedc108a9.png

आपके पास क्लाउड में बनाई गई कंटेनर इमेज को देखने का विकल्प भी है. Cloud Console में, Container Registry > Images पर जाएं. इसके बाद, appengine फ़ोल्डर में आपको अपने ऐप्लिकेशन की इमेज दिखेगी.

de788f4949d0c5a.png

8. अपनी सेवा का नया वर्शन डिप्लॉय करना

किसी समय, प्रोडक्शन में डिप्लॉय किए गए ऐप्लिकेशन में गड़बड़ियां ठीक करने या अतिरिक्त सुविधाएं जोड़ने की ज़रूरत होगी. App Engine की मदद से, उपयोगकर्ताओं पर असर डाले बिना प्रोडक्शन में नया वर्शन डिप्लॉय किया जा सकता है.

सबसे पहले, ऐप्लिकेशन में बदलाव करते हैं. Cloud Shell से कोड एडिटर खोलें.

868c4f615e2331fe.png

HelloWorldAspNetCore के Views/Home फ़ोल्डर में मौजूद Index.cshtml पर जाएं और डिफ़ॉल्ट मैसेज को इससे बदलें:

Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!

बदलावों को सेव करें. इसके बाद, Cloud Shell पर वापस जाएं. HelloWorldAspNetCore, के अंदर, ऐप्लिकेशन को पब्लिश करें, ताकि आपको एक सेल्फ-कंटेन्ड डीएलएल मिल सके.

dotnet publish -c Release

पब्लिश डायरेक्ट्री पर जाएं.

cd bin/Release/netcoreapp3.1/publish/

अब अपने ऐप्लिकेशन का नया वर्शन (इस मामले में v1) डिप्लॉय किया जा सकता है.

gcloud app deploy --version v1

इसे डिप्लॉय करने के बाद, Google Cloud Console के App Engine वर्शन सेक्शन में जाकर, अपने ऐप्लिकेशन का नया वर्शन देखा जा सकता है. यह नया वर्शन, नए मैसेज के साथ पूरा ट्रैफ़िक मैनेज करता है.

8cc0cc992b4e07ed.png

9. डैशबोर्ड और ट्रैफ़िक स्प्लिट करना

App Engine में, डैशबोर्ड सेक्शन में जाकर, अपने ऐप्लिकेशन के लिए कई डैशबोर्ड देखे जा सकते हैं. जैसे, लेटेन्सी, सीपीयू वगैरह. इन्हें खुद एक्सप्लोर करें.

5c879431935b080d.png

'वर्शन' सेक्शन में, आपको अपने ऐप्लिकेशन के डिप्लॉय किए गए वर्शन दिखेंगे. साथ ही, 'ट्रैफ़िक स्प्लिटिंग' सेक्शन में, अलग-अलग वर्शन के बीच ट्रैफ़िक को बांटा जा सकता है. आइए, ट्रैफ़िक को दो वर्शन के बीच बांटते हैं:

176a2e22e755b6d3.png

10. बधाई हो!

Cleanup

अब ऐप्लिकेशन को बंद करने का समय आ गया है, ताकि लागत को कम किया जा सके और क्लाउड का बेहतर तरीके से इस्तेमाल किया जा सके.

App Engine के वर्शन सेक्शन पर जाएं.

7e9b3b4406e785b9.png

वर्शन चुनें और उसे रोकें.

7f80d9ff2c959e0.png

वर्शन बंद होने के बाद, बैकअप लेने वाले इंस्टेंस मिटा दिए जाएंगे. इसके बाद, आपको इंस्टेंस की संख्या शून्य दिखेगी.

29f3cb5c71225b2d.png

हमने क्या-क्या बताया

ये रहा! आपने ASP.NET Core ऐप्लिकेशन बनाया है. साथ ही, उसे Docker कंटेनर के तौर पर पैकेज किया है और Google App Engine Flexible पर डिप्लॉय किया है.

  • किसी सामान्य ASP.NET Core ऐप्लिकेशन को Docker कंटेनर के तौर पर पैकेज करने का तरीका.
  • App Engine पर, ASP.NET Core के किसी सामान्य ऐप्लिकेशन को डिप्लॉय करने का तरीका.

अगले चरण

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.