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 Environment चुनना लेख पढ़ें.

आप इन चीज़ों के बारे में जानेंगे

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

आपको इनकी ज़रूरत होगी

  • 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 में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

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

Cloud Shell चालू करें

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

bce75f34b2c53987.png

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

70f315d7b402b476.png

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

fbe3a0674c982259.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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. Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
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 कोर वेबपेज दिखाई देगा:

f579a9baedc108a9.png

यह पुष्टि करने के बाद कि ऐप्लिकेशन चल रहा है, उसे शट डाउन करने के लिए Ctrl+C दबाएं.

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

अब dotnet publish निर्देश का इस्तेमाल करके, पूरी जानकारी वाला डीएलएल पाने के लिए ऐप्लिकेशन को पब्लिश करें.

dotnet publish -c Release

publish को चलाने पर, प्रोसेस के खत्म होने पर कुछ मैसेज दिखते हैं. ये मैसेज, पब्लिश हो चुके डीएलएल के साथ दिखते हैं.

...
  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. फ़्लेक्सिबल ऐप इंजन में डिप्लॉय करें

आप gcloud का इस्तेमाल करके अपने ऐप्लिकेशन को App Engine के हिसाब से डिप्लॉय करने के लिए तैयार हैं. 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 कोर वेबपेज दिखेगा.

f579a9baedc108a9.png

आपके लिए, क्लाउड में बनाई गई कंटेनर इमेज भी देखी जा सकती है. Cloud Console में, Container Registry पर जाएं > इमेज और फिर 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. बधाई हो!

क्लीअप

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

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

7e9b3b4406e785b9.png

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

7f80d9ff2c959e0.png

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

29f3cb5c71225b2d.png

इसमें हमने इन विषयों के बारे में बताया

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

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

अगले चरण

लाइसेंस

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