1. ভূমিকা
শেষ আপডেট: 2024-11-01
কিভাবে আমরা Google ক্লাউডে একটি পুরানো পিএইচপি অ্যাপ্লিকেশন আধুনিকীকরণ করব?
(📽️ এই কোডল্যাবে 7 মিনিটের একটি পরিচিতিমূলক ভিডিও দেখুন )
আধুনিকীকরণ করা দরকার এমন অন-প্রিম চলমান লিগ্যাসি অ্যাপ্লিকেশনগুলি সাধারণ। এর অর্থ হল সেগুলিকে মাপযোগ্য, সুরক্ষিত এবং বিভিন্ন পরিবেশে স্থাপনযোগ্য করে তোলা।
এই কর্মশালায়, আপনি হবে:
- পিএইচপি অ্যাপ্লিকেশন কন্টেইনারাইজ করুন ।
- একটি পরিচালিত ডেটাবেস পরিষেবাতে ( ক্লাউড এসকিউএল ) সরান।
- ক্লাউড রানে স্থাপন করুন (এটি GKE/Kubernetes-এর শূন্য-অপস বিকল্প)।
- আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (আইএএম) এবং সিক্রেট ম্যানেজার দিয়ে অ্যাপ্লিকেশনটি সুরক্ষিত করুন ।
- ক্লাউড বিল্ডের মাধ্যমে একটি CI/CD পাইপলাইন সংজ্ঞায়িত করুন। ক্লাউড বিল্ড গিটহাব বা গিটল্যাবের মতো জনপ্রিয় গিট প্রোভাইডারগুলিতে হোস্ট করা আপনার গিট রেপোর সাথে সংযুক্ত হতে পারে এবং উদাহরণস্বরূপ, মূলে যেকোন ধাক্কায় ট্রিগার হতে পারে।
- ক্লাউড স্টোরেজে অ্যাপ্লিকেশনের ছবি হোস্ট করুন। এটি মাউন্ট করার মাধ্যমে অর্জন করা হয় এবং অ্যাপ পরিবর্তন করার জন্য কোন কোডের প্রয়োজন নেই।
- ক্লাউড ফাংশন (সার্ভারহীন) এর মাধ্যমে সাজানো Gemini এর মাধ্যমে Gen AI কার্যকারিতা প্রবর্তন করুন।
- SLO এর সাথে পরিচিত হন এবং আপনার সদ্য রিফ্রেশ করা অ্যাপ পরিচালনা করুন ।
এই পদক্ষেপগুলি অনুসরণ করে, আপনি ধীরে ধীরে আপনার পিএইচপি অ্যাপ্লিকেশনটিকে আধুনিকীকরণ করতে পারেন, এর পরিমাপযোগ্যতা, সুরক্ষা এবং স্থাপনার নমনীয়তা উন্নত করতে পারেন। অধিকন্তু, Google ক্লাউডে চলে যাওয়া আপনাকে এর শক্তিশালী পরিকাঠামো এবং পরিষেবাগুলিকে ক্লাউড-নেটিভ পরিবেশে আপনার অ্যাপ্লিকেশানটি মসৃণভাবে চলে তা নিশ্চিত করার অনুমতি দেয়৷
আমরা বিশ্বাস করি যে আপনি এই সহজ পদক্ষেপগুলি অনুসরণ করে যা শিখবেন তা আপনার নিজের অ্যাপ্লিকেশন এবং সংস্থার জন্য বিভিন্ন ভাষা/স্ট্যাক এবং বিভিন্ন ব্যবহারের ক্ষেত্রে প্রয়োগ করা যেতে পারে।
অ্যাপ সম্পর্কে
যে অ্যাপ্লিকেশনটি ( কোড , এমআইটি লাইসেন্সের অধীনে) আপনি কাঁটাচামচ করবেন সেটি মাইএসকিউএল প্রমাণীকরণ সহ একটি মৌলিক PHP 5.7 অ্যাপ্লিকেশন। অ্যাপটির মূল ধারণা হল এমন একটি প্ল্যাটফর্ম প্রদান করা যেখানে ব্যবহারকারীরা ফটো আপলোড করতে পারে এবং প্রশাসকদের অনুপযুক্ত ছবি ট্যাগ করার ক্ষমতা থাকে। অ্যাপ্লিকেশনটিতে দুটি টেবিল রয়েছে:
- ব্যবহারকারীরা অ্যাডমিনদের সাথে প্রি-কম্পাইল করা আসে। নতুন মানুষ নিবন্ধন করতে পারেন।
- ছবি কিছু নমুনা ইমেজ সঙ্গে আসে. লগ ইন করা ব্যবহারকারীরা নতুন ছবি আপলোড করতে পারেন। আমরা এখানে কিছু জাদু যোগ করব।
আপনার লক্ষ্য
Google ক্লাউডে রাখার জন্য আমরা পুরানো অ্যাপ্লিকেশনটিকে আধুনিকীকরণ করতে চাই৷ ক্লাউড এসকিউএল, ক্লাউড রান, ক্লাউড বিল্ড, সিক্রেট ম্যানেজার এবং আরও অনেক কিছু ব্যবহার করে আমরা এর সরঞ্জাম এবং পরিষেবাগুলিকে স্কেলেবিলিটি উন্নত করতে, সুরক্ষা বাড়াতে, স্বয়ংক্রিয় পরিকাঠামো পরিচালনা করতে এবং ইমেজ প্রসেসিং, মনিটরিং এবং ডেটা স্টোরেজের মতো উন্নত বৈশিষ্ট্যগুলিকে একীভূত করব৷
আরও গুরুত্বপূর্ণভাবে, আমরা এটি ধাপে ধাপে করতে চাই যাতে আপনি প্রতিটি পদক্ষেপের পিছনে চিন্তা প্রক্রিয়াটি কী তা শিখতে পারেন এবং সাধারণত প্রতিটি পদক্ষেপ পরবর্তীগুলির জন্য নতুন সম্ভাবনাগুলি আনলক করে (উদাহরণ: মডিউল 2 -> 3, এবং 6 -> 7 )
এখনো আশ্বস্ত না? ইউটিউবে এই ৭ মিনিটের ভিডিওটি দেখুন।
আপনি কি প্রয়োজন হবে
- একটি ব্রাউজার সহ একটি কম্পিউটার, ইন্টারনেটের সাথে সংযুক্ত।
- কিছু GCP ক্রেডিট । কিছু জন্য আপনার স্থানীয় Google অনুরাগীদের জিজ্ঞাসা করুন;)
-
gcloud
কমান্ড কাজ করছে। - আপনি কি স্থানীয়ভাবে কাজ করছেন? এটি এখানে ডাউনলোড করুন। আপনার কিছু সুন্দর এডিটরও লাগবে (যেমন vscode বা intellij)।
- " ক্লাউডে " সবকিছু করতে চান? আপনি তখন ক্লাউড শেল ব্যবহার করতে পারেন।
- Github ব্যবহারকারী। আপনার নিজের গিট রেপোর সাথে মূল কোড 🧑🏻💻 gdgpescara/app-mod-workshop ব্রাঞ্চ করতে আপনার এটি প্রয়োজন। এটি আপনার নিজস্ব CI/CD পাইপলাইন (স্বয়ংক্রিয় প্রতিশ্রুতি -> বিল্ড -> স্থাপন) থাকতে হবে
নমুনা সমাধান এখানে পাওয়া যাবে:
- লেখক রেপো: https://github.com/Friends-of-Ricc/app-mod-workshop
- মূল কর্মশালার রেপো,
.solutions/
ফোল্ডারের অধীনে, প্রতি অধ্যায়।
এই কর্মশালাটি আপনার স্থানীয় কম্পিউটার থেকে ব্যবহার করা যেতে পারে বা সম্পূর্ণরূপে একটি ব্রাউজারে করা যেতে পারে।
2. ক্রেডিট সেট আপ এবং ফর্ক
GCP ক্রেডিট রিডিম করুন এবং আপনার GCP পরিবেশ সেট আপ করুন [ঐচ্ছিক]
এই কর্মশালা চালানোর জন্য, আপনার কিছু ক্রেডিট সহ একটি বিলিং অ্যাকাউন্ট প্রয়োজন। আপনার যদি ইতিমধ্যেই আপনার নিজস্ব বিলিং থাকে, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন৷
আপনার GCP ক্রেডিট লিঙ্ক করতে একটি একেবারে নতুন Google Gmail অ্যাকাউন্ট (*) তৈরি করুন । আপনার প্রশিক্ষককে GCP ক্রেডিট রিডিম করতে বা এখানে ক্রেডিট ব্যবহার করতে লিঙ্কটি বলুন: bit.ly/PHP-Amarcord-credits ।
নতুন তৈরি অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং নির্দেশাবলী অনুসরণ করুন।
(
) কেন আমার একটি নতুন জিমেইল অ্যাকাউন্ট দরকার? *
আমরা দেখেছি যে লোকেদের কোডল্যাব ব্যর্থ হয়েছে কারণ তাদের অ্যাকাউন্ট (বিশেষ করে কাজ বা ছাত্রদের ইমেল) GCP-এর সাথে পূর্বের এক্সপোজার ছিল এবং তাদের এটি করার ক্ষমতা সীমাবদ্ধ করে সাংগঠনিক নীতি ছিল। আমরা হয় একটি নতুন জিমেইল অ্যাকাউন্ট তৈরি করার বা জিসিপি-তে কোনো পূর্বের এক্সপোজার ছাড়াই একটি বিদ্যমান GMail অ্যাকাউন্ট (gmail.com) ব্যবহার করার পরামর্শ দিই।
ক্রেডিট রিডিম করতে বোতামে ক্লিক করুন।
আপনার নাম এবং পদবি দিয়ে নিম্নলিখিত ফর্মটি পূরণ করুন এবং শর্তাবলীর সাথে সম্মত হন।
বিলিং অ্যাকাউন্ট এখানে উপস্থিত হওয়ার আগে আপনাকে কয়েক সেকেন্ড অপেক্ষা করতে হতে পারে: https://console.cloud.google.com/billing
একবার Google ক্লাউড কনসোল খুলুন এবং উপরের বাম ড্রপডাউন মেনুতে প্রজেক্ট সিলেক্টরে ক্লিক করে একটি নতুন প্রকল্প তৈরি করুন যেখানে "কোনও সংস্থা নেই" দেখানো হয়। নিচে দেখুন
নীচের স্ক্রিনশটে দেখানো হিসাবে আপনার কাছে না থাকলে একটি নতুন প্রকল্প তৈরি করুন৷ উপরের ডানদিকে একটি "নতুন প্রকল্প" বিকল্প রয়েছে।
নিম্নলিখিত হিসাবে নতুন প্রকল্পটি জিসিপি ট্রায়াল বিলিং অ্যাকাউন্টের সাথে লিঙ্ক করার বিষয়টি নিশ্চিত করুন।
আপনি Google ক্লাউড প্ল্যাটফর্ম ব্যবহার করার জন্য প্রস্তুত। আপনি যদি একজন শিক্ষানবিস হন বা আপনি কেবল একটি ক্লাউড পরিবেশে সবকিছু করতে চান তবে আপনি নীচে দেখানো হিসাবে উপরের বাম কোণে নিম্নলিখিত বোতামের মাধ্যমে ক্লাউড শেল এবং এর সম্পাদক অ্যাক্সেস করতে পারেন।
আপনার নতুন প্রকল্প উপরের বাম দিকে নির্বাচিত হয়েছে তা নিশ্চিত করুন:
নির্বাচিত নয় (খারাপ):
নির্বাচিত (ভাল):
Github থেকে অ্যাপটি ফোর্ক করুন
- ডেমো অ্যাপে যান: https://github.com/gdgpescara/app-mod-workshop
- 🍴 ফর্ক ক্লিক করুন।
- আপনার যদি গিথুব অ্যাকাউন্ট না থাকে তবে আপনাকে একটি নতুন তৈরি করতে হবে।
- আপনার ইচ্ছা মত জিনিস সম্পাদনা করুন.
- অ্যাপ কোড ব্যবহার করে ক্লোন করুন
-
git clone
https://github.com/
YOUR-GITHUB-USER/YOUR-REPO-NAME
- আপনার প্রিয় সম্পাদকের সাথে ক্লোন করা প্রকল্প ফোল্ডারটি খুলুন। আপনি যদি ক্লাউড শেল বেছে নেন তাহলে নিচের মতো " ওপেন এডিটর " এ ক্লিক করে এটি করতে পারেন।
নিচের চিত্রটি দেখায় Google ক্লাউড শেল এডিটরের সাথে আপনার যা দরকার তা আপনার কাছে রয়েছে
"ফোল্ডার খুলুন" এ ক্লিক করে এবং আপনার হোম ফোল্ডারে সম্ভবত app-mod-workshop
ফোল্ডারটি নির্বাচন করে এটি দৃশ্যমানভাবে অর্জন করা যেতে পারে।
3. মডিউল 1: একটি এসকিউএল ইনস্ট্যান্স তৈরি করুন
গুগল ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন
আমাদের PHP অ্যাপটি একটি MySQL ডাটাবেসের সাথে সংযুক্ত হবে এবং তাই আমাদের এটিকে Google ক্লাউডে প্রতিলিপি করতে হবে যাতে কোন ব্যথা ছাড়াই মাইগ্রেশন করা যায়। ক্লাউড এসকিউএল নিখুঁত মিল কারণ এটি আপনাকে ক্লাউডে সম্পূর্ণরূপে পরিচালিত MySQL ডাটাবেস চালানোর অনুমতি দেয়। এই পদক্ষেপগুলি অনুসরণ করতে হবে:
- ক্লাউড এসকিউএল পৃষ্ঠায় যান: https://console.cloud.google.com/sql/instances
- "উদাহরণ তৈরি করুন" ক্লিক করুন
- API সক্ষম করুন (যদি প্রয়োজন হয়)। এতে কয়েক সেকেন্ড সময় লাগতে পারে।
- MySQL নির্বাচন করুন।
- (আমরা আপনাকে সবচেয়ে সস্তা সংস্করণটি পেতে চেষ্টা করছি, তাই এটি দীর্ঘস্থায়ী হয়):
- সংস্করণ: এন্টারপ্রাইজ
- প্রিসেট: উন্নয়ন (আমরা স্যান্ডবক্স চেষ্টা করেছি এবং আমাদের জন্য কাজ করেনি)
- Mysql Ver: 5.7 (বাহ, অতীতের একটি বিস্ফোরণ!)
- ইনস্ট্যান্স আইডি:
appmod-phpapp
চয়ন করুন (যদি আপনি এটি পরিবর্তন করেন তবে সেই অনুযায়ী ভবিষ্যতের স্ক্রিপ্ট এবং সমাধানগুলি পরিবর্তন করতে ভুলবেন না)। - পাসওয়ার্ড: আপনি যা চান তবে এটি CLOUDSQL_INSTANCE_PASSWORD হিসাবে নোট করুন
- অঞ্চল: আপনি বাকী অ্যাপের জন্য যেভাবে বেছে নিয়েছেন একইভাবে রাখুন (যেমন, Milan =
europe-west8
) - জোনাল সুবিধা: একক অঞ্চল (আমরা ডেমোর জন্য অর্থ সঞ্চয় করছি)
ক্লাউড এসকিউএল ডাটাবেস স্থাপন করতে ইনস্ট্যান্স তৈরি করুন বোতামে ক্লিক করুন; ⌛ এটি সম্পূর্ণ হতে প্রায় 10 মিনিট সময় নেয়⌛ । ইতিমধ্যে ডকুমেন্টেশন পড়া চালিয়ে যান; আপনি পরবর্তী মডিউলটিও সমাধান করা শুরু করতে পারেন ("আপনার পিএইচপি অ্যাপ কন্টেইনারাইজ করুন") কারণ এটির প্রথম অংশে এই মডিউলটির উপর কোন নির্ভরতা নেই (যতক্ষণ না আপনি ডিবি সংযোগ ঠিক করেন)।
নোট এই উদাহরণের জন্য আপনাকে ~7$/দিন খরচ করতে হবে। কর্মশালার পরে এটি স্পিন অফ নিশ্চিত করুন.
ক্লাউড এসকিউএল-এ image_catalog DB এবং ব্যবহারকারী তৈরি করুন
অ্যাপ প্রকল্পটি একটি db/
ফোল্ডারের সাথে আসে যাতে দুটি sql ফাইল রয়েছে:
- 01_schema.sql : দুটি টেবিল তৈরি করতে এসকিউএল কোড ধারণ করে যাতে ব্যবহারকারী এবং চিত্রের ডেটা থাকে।
- 02_seed.sql : পূর্ববর্তী তৈরি টেবিলে বীজ ডেটার SQL কোড ধারণ করে।
image_catalog
ডাটাবেস তৈরি হয়ে গেলে এই ফাইলগুলি পরে ব্যবহার করা হবে। আপনি নিম্নলিখিত পদক্ষেপগুলি করে এটি করতে পারেন:
- আপনার উদাহরণ খুলুন এবং ডেটাবেস ট্যাবে ক্লিক করুন:
- "ডেটাবেস তৈরি করুন" ক্লিক করুন
- এটিকে
image_catalog
বলুন (পিএইচপি অ্যাপ কনফিগারেশনের মতো)।
তারপর আমরা ডাটাবেস ব্যবহারকারী তৈরি করি। এটি দিয়ে আমরা image_catalog ডাটাবেসে প্রমাণীকরণ করতে পারি।
- এখন Users ট্যাবে ক্লিক করুন
- "ব্যবহারকারী অ্যাকাউন্ট যোগ করুন" ক্লিক করুন।
- ব্যবহারকারী: আসুন একটি তৈরি করি:
- ব্যবহারকারীর নাম:
appmod-phpapp-user
- পাসওয়ার্ড: এমন কিছু চয়ন করুন যা আপনি মনে রাখতে পারেন বা "জেনারেট করুন" এ ক্লিক করুন
- " Allow any host (%) " রাখুন।
- ADD এ ক্লিক করুন।
সুপরিচিত আইপিগুলিতে ডিবি খুলুন।
মনে রাখবেন ক্লাউড এসকিউএল-এর সমস্ত ডিবি 'বিচ্ছিন্ন' জন্মেছে। অ্যাক্সেসযোগ্য হওয়ার জন্য আপনাকে স্পষ্টভাবে একটি নেটওয়ার্ক সেট আপ করতে হবে।
- আপনার উদাহরণে ক্লিক করুন
- মেনু "সংযোগ" খুলুন
- "নেটওয়ার্কিং" ট্যাবে ক্লিক করুন।
- "অনুমোদিত নেটওয়ার্ক" এর অধীনে ক্লিক করুন। এখন একটি নেটওয়ার্ক যোগ করুন (যেমন, একটি সাবনেট)।
- আপাতত, অ্যাপটিকে কাজ করতে দেওয়ার জন্য একটি দ্রুত তবে অনিরাপদ সেটিংস বেছে নেওয়া যাক - আপনি এটিকে পরে আপনার বিশ্বাসযোগ্য আইপিগুলিতে সীমাবদ্ধ রাখতে চাইতে পারেন:
- নাম: "পৃথিবীতে সবাই - নিরাপত্তাহীন"।
- নেটওয়ার্ক: "
0.0.0.0/0"
(দ্রষ্টব্য: এটি অনিরাপদ অংশ!) - সম্পন্ন ক্লিক করুন
- সংরক্ষণ ক্লিক করুন.
আপনি এই মত কিছু দেখতে হবে:
নোট O(ঘন্টা) এ কর্মশালা শেষ করার জন্য এই সমাধানটি একটি ভাল আপস। যাইহোক, প্রোডাকশনের জন্য আপনার সমাধান সুরক্ষিত করতে সহায়তা করতে নিরাপত্তা ডক দেখুন!
ডিবি সংযোগ পরীক্ষা করার সময়!
দেখা যাক আমাদের তৈরি করা image_catalog
ব্যবহারকারীর আগে কাজ করে কিনা।
উদাহরণের ভিতরে "ক্লাউড এসকিউএল স্টুডিও" অ্যাক্সেস করুন এবং নীচে দেখানো হিসাবে প্রমাণীকরণের জন্য ডেটাবেস, ব্যবহারকারী এবং পাসওয়ার্ড লিখুন:
এখন আপনি যেখানে আছেন আপনি SQL এডিটর খুলতে পারেন এবং পরবর্তী বিভাগে যেতে পারেন।
কোডবেস থেকে ডেটাবেস আমদানি করুন
তাদের ডেটা সহ image_catalog
টেবিল আমদানি করতে SQL সম্পাদক ব্যবহার করুন। রেপো ( 01_schema.sql এবং তারপর 02_seed.sql ) ফাইলগুলি থেকে SQL কোডটি অনুলিপি করুন এবং একটি ক্রমানুসারে একের পর এক চালান।
এর পরে আপনার image_catalog-এ দুটি টেবিল পাওয়া উচিত, যা ব্যবহারকারী এবং চিত্রগুলি নীচে দেখানো হয়েছে:
আপনি সম্পাদকে নিম্নলিখিতটি চালিয়ে এটি পরীক্ষা করতে পারেন: select * from images;
এছাড়াও ক্লাউড এসকিউএল ইন্সট্যান্সের সর্বজনীন আইপি ঠিকানাটি নোট করা নিশ্চিত করুন, আপনার এটি পরে প্রয়োজন হবে। আইপি পেতে, ওভারভিউ পৃষ্ঠার অধীনে ক্লাউড এসকিউএল ইনস্ট্যান্স প্রধান পৃষ্ঠায় যান। (ওভারভিউ > এই ইন্সট্যান্সের সাথে কানেক্ট করুন > পাবলিক আইপি অ্যাড্রেস)।
4. মডিউল 2: আপনার পিএইচপি অ্যাপ কন্টেইনারাইজ করুন
আমরা ক্লাউডের জন্য এই অ্যাপটি তৈরি করতে চাই।
এর অর্থ হল কোডটিকে এক ধরণের জিপ ফাইলে প্যাকেজ করা যাতে এটি ক্লাউডে চালানোর জন্য সমস্ত তথ্য রয়েছে।
এটি প্যাকেজ করার কয়েকটি উপায় রয়েছে:
- ডকার খুব জনপ্রিয়, কিন্তু সঠিকভাবে সেট আপ করা বেশ জটিল।
- প্যাক তৈরি করুন । কম জনপ্রিয়, কিন্তু কী তৈরি করতে হবে এবং কী চালাতে হবে তা 'স্বয়ংক্রিয় অনুমান' করতে থাকে। প্রায়ই এটা শুধু কাজ করে!
এই কর্মশালার প্রসঙ্গে, আমরা ধরে নেব যে আপনি ডকার ব্যবহার করেন।
আপনি যদি ক্লাউড শেল ব্যবহার করতে পছন্দ করেন তবে এটি পুনরায় খোলার সময় (ক্লাউড কনসোলের উপরের ডানদিকে ক্লিক করুন)।
এটি পৃষ্ঠার নীচে একটি সুবিধাজনক শেল খুলতে হবে, যেখানে সেট আপ ধাপে আপনার কোডটি ফর্ক করা উচিত ছিল।
ডকার
আপনি যদি নিয়ন্ত্রণ করতে চান তবে এটি আপনার জন্য সঠিক সমাধান। যখন আপনাকে নির্দিষ্ট লাইব্রেরি কনফিগার করতে হবে এবং নির্দিষ্ট অ-স্পষ্ট আচরণ (আপলোডগুলিতে একটি chmod, আপনার অ্যাপে একটি অ-মানক এক্সিকিউটেবল, ..) ইনজেক্ট করতে হবে তখন এটি বোঝা যায়।
যেহেতু আমরা শেষ পর্যন্ত আমাদের কন্টেইনারাইজড অ্যাপ্লিকেশনটিকে ক্লাউড রানে স্থাপন করতে চাই, নিম্নলিখিত ডকুমেন্টেশনটি পরীক্ষা করুন৷ আপনি কিভাবে এটি পিএইচপি 8 থেকে পিএইচপি 5.7 এ পোর্ট করবেন? হয়তো আপনি এটির জন্য মিথুন ব্যবহার করতে পারেন। বিকল্পভাবে, আপনি এই প্রাক-বেকড সংস্করণটি ব্যবহার করতে পারেন:
সর্বশেষ Dockerfile
সংস্করণ এখানে উপলব্ধ।
স্থানীয়ভাবে আমাদের অ্যাপ্লিকেশন পরীক্ষা করার জন্য, আমাদের config.php ফাইলটি এমনভাবে পরিবর্তন করতে হবে যে আমাদের PHP অ্যাপটি Google CloudSQL-এ উপলব্ধ MYSQL db-এর সাথে সংযুক্ত হবে। আপনি আগে কি সেট আপ করেছেন তার উপর ভিত্তি করে, শূন্যস্থান পূরণ করুন :
<?php
// Database configuration
$db_host = '____________';
$db_name = '____________';
$db_user = '____________';
$db_pass = '____________';
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Errore di connessione: " . $e->getMessage());
}
session_start();
?>
-
DB_HOST
হল Cloud SQL পাবলিক IP ঠিকানা, আপনি এটি SQL কনসোলে খুঁজে পেতে পারেন:
-
DB_NAME
অপরিবর্তিত থাকা উচিত:image_catalog
-
DB_USER
appmod-phpapp-user
হওয়া উচিত -
DB_PASS
এমন কিছু যা আপনি বেছে নিয়েছেন। এটিকে একক উদ্ধৃতিতে সেট আপ করুন এবং প্রয়োজন অনুসারে এস্কেপ করুন।
এছাড়াও, মিথুনের সাহায্যে কিছু 🇮🇹 ইতালীয় টুকরা ইংরেজিতে অনুবাদ করতে দ্বিধা বোধ করুন !
ঠিক আছে, এখন আপনার কাছে Dockerfile
আছে এবং আপনার ডিবিতে সংযোগ করার জন্য আপনার পিএইচপি অ্যাপ কনফিগার করেছেন, আসুন এটি চেষ্টা করে দেখি!
আপনার যদি এটি এখনও না থাকে তবে ডকার ইনস্টল করুন ( লিঙ্ক )। আপনি যদি ক্লাউড শেল ব্যবহার করেন তবে আপনার এটির প্রয়োজন নেই (এটি কতটা দুর্দান্ত?)
এখন উপযুক্ত ডকার বিল্ড এবং রান কমান্ড দিয়ে আপনার কনটেইনারাইজড পিএইচপি অ্যাপ তৈরি এবং চালানোর চেষ্টা করুন।
# Build command - don't forget the final . This works if Dockerfile is inside the code folder:
$ docker build -t my-php-app-docker .
# Local Run command: most likely ports will be 8080:8080
$ docker run -it -p <CONTAINER_PORT>:<LOCAL_MACHINE_PORT> my-php-app-docker
যদি সবকিছু কাজ করে তবে স্থানীয় হোস্টের সাথে সংযুক্ত হলে আপনি নিম্নলিখিত ওয়েব পৃষ্ঠাটি দেখতে সক্ষম হবেন! এখন আপনার অ্যাপটি পোর্ট 8080 এ চলছে, "ওয়েব প্রিভিউ" আইকনে ক্লিক করুন (চোখ সহ একটি ব্রাউজার) এবং তারপর পোর্ট 8080-এ প্রিভিউ করুন (বা অন্য কোনো পোর্টের জন্য "পোর্ট পরিবর্তন করুন")
আপনার ব্রাউজারে ফলাফল পরীক্ষা করা হচ্ছে
এখন আপনার অ্যাপ্লিকেশনটি এইরকম দেখতে হবে:
এবং যদি আপনি Admin/admin123 দিয়ে লগইন করেন তাহলে আপনাকে এরকম কিছু দেখতে হবে।
দারুণ!!! ইতালীয় টেক্সট ছাড়াও, এটি কাজ করছে! 🎉🎉🎉
যদি আপনার ডকারাইজেশন ভাল হয় কিন্তু ডিবি শংসাপত্রগুলি ভুল হয়, আপনি এইরকম কিছু পেতে পারেন:
আবার চেষ্টা করুন, আপনি কাছাকাছি!
আর্টিফ্যাক্ট রেজিস্ট্রিতে সংরক্ষণ করা [ঐচ্ছিক]
এখন পর্যন্ত, আপনার ক্লাউডে স্থাপন করার জন্য একটি কার্যকরী কন্টেইনারাইজড পিএইচপি অ্যাপ্লিকেশন প্রস্তুত থাকা উচিত। এর পরে, আমাদের ডকার ইমেজ সঞ্চয় করার জন্য এবং ক্লাউড রানের মতো Google ক্লাউড পরিষেবাগুলিতে স্থাপনার জন্য এটি অ্যাক্সেসযোগ্য করার জন্য আমাদের ক্লাউডে একটি জায়গার প্রয়োজন৷ এই স্টোরেজ সলিউশনটিকে আর্টিফ্যাক্ট রেজিস্ট্রি বলা হয়, ডকার কন্টেইনার ইমেজ, মাভেন প্যাকেজ, এনপিএম মডিউল এবং আরও অনেক কিছু সহ অ্যাপ্লিকেশন আর্টিফ্যাক্ট সংরক্ষণের জন্য ডিজাইন করা একটি সম্পূর্ণ-পরিচালিত Google ক্লাউড পরিষেবা।
আসুন উপযুক্ত বোতাম ব্যবহার করে Google ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি সংগ্রহস্থল তৈরি করি।
একটি বৈধ নাম, বিন্যাস এবং শিল্পকর্ম সংরক্ষণের জন্য উপযুক্ত অঞ্চল চয়ন করুন৷
আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্ট ট্যাগে ফিরে যান এবং অ্যাপ কন্টেইনার ইমেজটিকে এইমাত্র তৈরি করা আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরিতে পুশ করুন। এটি করতে নিম্নলিখিত কমান্ডগুলি সম্পূর্ণ করুন।
- ডকার ট্যাগ SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
- ডকার পুশ TARGET_IMAGE[:TAG]
ফলাফল নিম্নলিখিত স্ক্রিনশট মত হওয়া উচিত.
হুরে 🎉🎉🎉 আপনি পরবর্তী স্তরে যেতে পারেন। তার আগে, আপলোড/লগইন/লগআউট করার চেষ্টা করে এবং অ্যাপের শেষ পয়েন্টগুলির সাথে পরিচিত হওয়ার জন্য 2 মিনিট সময় ব্যয় করুন৷ পরে আপনার সেগুলি প্রয়োজন হবে৷
সম্ভাব্য ত্রুটি
আপনি যদি কন্টেইনারাইজেশন ত্রুটি পান, তাহলে মিথুন ব্যবহার করে ত্রুটিটি ব্যাখ্যা করতে এবং সংশোধন করার চেষ্টা করুন, প্রদান করে:
- আপনার বর্তমান ডকারফাইল
- ত্রুটি প্রাপ্ত
- [প্রয়োজন হলে] পিএইচপি কোডটি কার্যকর করা হচ্ছে।
আপলোড অনুমতি . এছাড়াও /upload.php
এন্ডপয়েন্ট চেষ্টা করুন এবং একটি ছবি আপলোড করার চেষ্টা করুন। আপনি নীচের একটি ত্রুটি পেতে পারে. যদি তাই হয়, Dockerfile
আপনার কিছু chmod/chown
ফিক্স আছে।
সতর্কতা : move_uploaded_file(uploads/image (3).png): স্ট্রীম খুলতে ব্যর্থ হয়েছে: লাইন 11- এ /var/www/html/upload.php- এ অনুমতি অস্বীকার করা হয়েছে
PDOException "ড্রাইভার খুঁজে পাওয়া যায়নি" (বা "ত্রুটি di connessione: ড্রাইভার খুঁজে পাওয়া যায়নি") । DB-তে সংযোগ করার জন্য আপনার ডকারফাইলে mysql ( pdo_mysql
) এর জন্য যথাযথ PDO লাইব্রেরি রয়েছে তা নিশ্চিত করুন। এখানে সমাধান থেকে অনুপ্রেরণা পান.
একটি ব্যাকএন্ডে আপনার অনুরোধ ফরোয়ার্ড করতে অক্ষম. পোর্ট 8080-এ একটি সার্ভারের সাথে সংযোগ করা যায়নি। এর মানে আপনি সম্ভবত ভুল পোর্টটি প্রকাশ করছেন। নিশ্চিত করুন যে আপনি সেই পোর্টটি প্রকাশ করছেন যেখান থেকে Apache/Nginx আসলে পরিবেশন করছে। এটা তুচ্ছ নয়। যদি সম্ভব হয়, সেই পোর্ট 8080 করার চেষ্টা করুন (ক্লাউড রান দিয়ে জীবনকে সহজ করে তোলে)। আপনি যদি পোর্ট 80 রাখতে চান (উদাহরণস্বরূপ, অ্যাপাচি এইভাবে চায়), এটি চালানোর জন্য একটি ভিন্ন কমান্ড ব্যবহার করুন:
$ docker run -it -p 8080:80 # force 80
# Use the PORT environment variable in Apache configuration files.
# https://cloud.google.com/run/docs/reference/container-contract#port
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
5. মডিউল 3: ক্লাউড রানে অ্যাপটি স্থাপন করুন
মেঘ দৌড়াবে কেন?
ন্যায্য প্রশ্ন! কয়েক বছর আগে, আপনি অবশ্যই Google অ্যাপ ইঞ্জিন বেছে নিতেন।
সহজ কথায়, আজকে, ক্লাউড রানের একটি নতুন প্রযুক্তির স্ট্যাক রয়েছে, আপনি এটি ব্যবহার না করলে এটি স্থাপন করা সহজ, সস্তা এবং 0-এ নেমে আসে৷ যেকোনো স্টেটলেস কন্টেইনার চালানোর নমনীয়তা এবং বিভিন্ন Google ক্লাউড পরিষেবার সাথে এর একীকরণের সাথে, এটি সর্বনিম্ন ওভারহেড এবং সর্বাধিক দক্ষতা সহ মাইক্রোসার্ভিস এবং আধুনিক অ্যাপ্লিকেশন স্থাপনের জন্য আদর্শ।
আরও বিশেষভাবে, ক্লাউড রান হল Google ক্লাউডের দ্বারা একটি সম্পূর্ণরূপে পরিচালিত প্ল্যাটফর্ম যা আপনাকে সার্ভারহীন পরিবেশে স্টেটলেস কন্টেইনারাইজড অ্যাপ্লিকেশন চালাতে সক্ষম করে। এটি স্বয়ংক্রিয়ভাবে সমস্ত অবকাঠামো পরিচালনা করে, আগত ট্র্যাফিক মেটাতে শূন্য থেকে স্কেলিং করে এবং নিষ্ক্রিয় অবস্থায় এটিকে সাশ্রয়ী এবং দক্ষ করে তোলে। ক্লাউড রান যেকোন ভাষা বা লাইব্রেরিকে সমর্থন করে যতক্ষণ না এটি একটি পাত্রে প্যাকেজ করা থাকে, যা বিকাশে দুর্দান্ত নমনীয়তার অনুমতি দেয়। এটি অন্যান্য Google ক্লাউড পরিষেবাগুলির সাথে ভালভাবে সংহত করে এবং সার্ভার পরিকাঠামো পরিচালনার প্রয়োজন ছাড়াই মাইক্রোসার্ভিস, API, ওয়েবসাইট এবং ইভেন্ট-চালিত অ্যাপ্লিকেশন তৈরির জন্য উপযুক্ত৷
পূর্বশর্ত
এই কাজটি সম্পন্ন করার জন্য আপনার স্থানীয় মেশিনে gcloud
ইনস্টল করা উচিত। না থাকলে এখানে নির্দেশাবলী দেখুন। পরিবর্তে আপনি যদি Google ক্লাউড শেলে থাকেন তবে কোন পদক্ষেপ নেওয়ার দরকার নেই।
স্থাপন করার আগে...
আপনি যদি আপনার স্থানীয় পরিবেশে কাজ করেন তবে নিম্নলিখিতগুলির সাথে Google ক্লাউডে প্রমাণীকরণ করুন৷
-
$ gcloud auth login –update-adc # not needed in Cloud Shell
এটি আপনার ব্রাউজারে একটি OAuth লগইন এর মাধ্যমে আপনাকে প্রমাণীকরণ করা উচিত। নিশ্চিত করুন যে আপনি একই ব্যবহারকারীর (যেমন vattelapesca@gmail.com) সাথে ক্রোমের মাধ্যমে লগইন করেছেন যিনি বিলিং সক্ষম করে Google ক্লাউডে লগ ইন করেছেন৷
নিম্নলিখিত কমান্ড দিয়ে ক্লাউড রান API সক্ষম করুন:
-
$ gcloud services enable run.googleapis.com cloudbuild.googleapis.com
এই মুহুর্তে সবকিছু ক্লাউড রানে স্থাপন করার জন্য প্রস্তুত।
gcloud এর মাধ্যমে ক্লাউড রানে আপনার অ্যাপ স্থাপন করুন
যে কমান্ডটি আপনাকে ক্লাউড রানে অ্যাপ স্থাপন করতে দেয় সেটি হল gcloud run deploy
। আপনার লক্ষ্য অর্জনের জন্য সেট করার জন্য বেশ কয়েকটি বিকল্প রয়েছে। বিকল্পগুলির ন্যূনতম সেট (যা আপনি কমান্ড লাইনের মাধ্যমে প্রদান করতে পারেন, বা টুলটি আপনাকে ইন্টারেক্টিভ প্রম্পটের সাথে জিজ্ঞাসা করবে) হল:
- আপনি আপনার অ্যাপের জন্য যে ক্লাউড রান সার্ভিসটি স্থাপন করতে চান তার নাম । একটি ক্লাউড রান পরিষেবা আপনাকে একটি URL ফিরিয়ে দেবে যা আপনার অ্যাপের একটি শেষ পয়েন্ট প্রদান করে৷
- Google ক্লাউড অঞ্চল যেখানে আপনার অ্যাপ চলবে। (
--region
REGION) - কন্টেইনার ইমেজ যা আপনার অ্যাপকে মোড়ানো।
- এনভায়রনমেন্ট ভেরিয়েবল যেগুলি আপনার অ্যাপের কার্যকর করার সময় ব্যবহার করতে হবে।
- মঞ্জুরি-অপ্রমাণিত পতাকা যা প্রত্যেককে আরও প্রমাণীকরণ ছাড়াই আপনার অ্যাপে অ্যাক্সেস করার অনুমতি দেয়।
আপনার কমান্ড লাইনে এই বিকল্পটি কীভাবে প্রয়োগ করবেন তা দেখতে ডকুমেন্টেশনের সাথে পরামর্শ করুন (বা সম্ভাব্য সমাধানের জন্য নীচে স্ক্রোল করুন)।
স্থাপনে কয়েক মিনিট সময় লাগবে। সবকিছু ঠিক থাকলে Google ক্লাউড কনসোলে আপনাকে এরকম কিছু দেখতে হবে।
ক্লাউড রান দ্বারা প্রদত্ত URL-এ ক্লিক করুন এবং আপনার অ্যাপ্লিকেশন পরীক্ষা করুন। একবার প্রমাণীকরণ হলে আপনাকে এরকম কিছু দেখতে হবে।
কোন আর্গুমেন্ট ছাড়াই "gcloud run deploy"
আপনি হয়তো লক্ষ্য করেছেন যে gcloud run deploy
আপনাকে সঠিক প্রশ্ন জিজ্ঞাসা করে এবং আপনার রেখে যাওয়া শূন্যস্থান পূরণ করে। এই আশ্চর্যজনক!
যাইহোক, কয়েকটি মডিউলে আমরা একটি ক্লাউড বিল্ড ট্রিগারে এই কমান্ডটি যোগ করতে যাচ্ছি যাতে আমরা ইন্টারেক্টিভ প্রশ্নগুলি বহন করতে পারি না। আমাদের কমান্ডের প্রতিটি বিকল্প পূরণ করতে হবে। সুতরাং আপনি সোনালী gcloud run deploy --option1 blah --foo bar --region your-fav-region
. আপনি এটা কিভাবে করবেন?
- gcloud প্রশ্ন করা বন্ধ না হওয়া পর্যন্ত 2-3-4 ধাপগুলি পুনরাবৃত্তি করুন:
- [LOOP]
gcloud run deploy
এখন পর্যন্ত পাওয়া অপশন সহ - [LOOP] সিস্টেম X বিকল্পের জন্য জিজ্ঞাসা করে
- [লুপ] সর্বজনীন ডক্সে অনুসন্ধান করুন কিভাবে CLI যোগ করার বিকল্প থেকে X সেট আপ করবেন
--my-option [my-value]
। - এখন ধাপ 2-এ ফিরে যান, যদি না gcloud আরও প্রশ্ন ছাড়াই সম্পূর্ণ না হয়।
- এই জিক্লাউড চালায় ব্লাহ ব্লাহ ব্লাহ শিলা! কমান্ডটি কোথাও সেভ করুন, ক্লাউড বিল্ড ধাপের জন্য পরে আপনার এটির প্রয়োজন হবে!
একটি সম্ভাব্য সমাধান এখানে . ডক্স এখানে আছে.
হুররে 🎉🎉🎉 আপনি আধুনিকীকরণের প্রথম ধাপে সফলভাবে Google ক্লাউডে আপনার অ্যাপ স্থাপন করেছেন।
6. মডিউল 4: সিক্রেট ম্যানেজারের সাথে পাসওয়ার্ড পরিষ্কার করুন
পূর্ববর্তী ধাপে আমরা ক্লাউড রানে আমাদের অ্যাপ সফলভাবে স্থাপন ও চালাতে সক্ষম হয়েছি। যাইহোক, আমরা এটি একটি নিরাপত্তা খারাপ অনুশীলনের সাথে করেছি: স্পষ্ট পাঠ্যে কিছু গোপনীয়তা সরবরাহ করা ।
প্রথম পুনরাবৃত্তি: ENV ব্যবহার করতে আপনার config.php আপডেট করুন
আপনি হয়তো লক্ষ্য করেছেন যে আমরা config.php ফাইলের কোডে সরাসরি ডিবি পাসওয়ার্ড দিয়েছি। পরীক্ষার উদ্দেশ্যে এবং অ্যাপ কাজ করে কিনা তা দেখার জন্য এটি ঠিক আছে। কিন্তু আপনি একটি উত্পাদন পরিবেশে কোড প্রতিশ্রুতি/ব্যবহার করতে পারবেন না। পাসওয়ার্ড (এবং অন্যান্য DB সংযোগ পরামিতি) গতিশীলভাবে পড়া উচিত এবং রানটাইমে অ্যাপে সরবরাহ করা উচিত। config.php ফাইলটি পরিবর্তন করুন যাতে এটি ENV ভেরিয়েবল থেকে db প্যারামিটার পড়তে পারে। যদি এটি ব্যর্থ হয় তবে আপনার ডিফল্ট মান সেট করার কথা বিবেচনা করা উচিত। আপনি ENV লোড করতে ব্যর্থ হলে এটি ভাল, তাই পৃষ্ঠার আউটপুট আপনাকে বলবে যে এটি ডিফল্ট মান ব্যবহার করছে কিনা। শূন্যস্থান পূরণ করুন এবং config.php-এ কোডটি প্রতিস্থাপন করুন।
<?php
// Database configuration with ENV variables. Set default values as well
$db_host = getenv('DB_HOST') ?: 'localhost';
$db_name = getenv('DB_NAME') ?: 'image_catalog';
$db_user = getenv('DB_USER') ?: 'appmod-phpapp-user';
$db_pass = getenv('DB_PASS') ?: 'wrong_password';
// Note getenv() is PHP 5.3 compatible
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Errore di connessione: " . $e->getMessage());
}
session_start();
?>
যেহেতু আপনার অ্যাপটি কনটেইনারাইজড, আপনাকে অ্যাপটিতে ENV ভেরিয়েবল সরবরাহ করার একটি উপায় প্রদান করতে হবে। এটি কয়েকটি উপায়ে করা যেতে পারে:
- বিল্ড টাইমে, ডকারফাইলে। সিনট্যাক্স ENV DB_VAR=ENV_VAR_VALUE ব্যবহার করে আপনার আগের ডকারফাইলে 4টি প্যারামিটার যোগ করুন। এটি ডিফল্ট মান সেট আপ করবে যা রানটাইমে ওভাররাইড করা যেতে পারে। উদাহরণস্বরূপ, 'DB_NAME' এবং 'DB_USER' এখানে সেট করা যেতে পারে এবং অন্য কোথাও না।
- রান টাইমে। আপনি CLI বা UI উভয় থেকে ক্লাউড রানের জন্য এই ভেরিয়েবলগুলি সেট আপ করতে পারেন ৷ এটি আপনার সমস্ত 4টি ভেরিয়েবল রাখার সঠিক জায়গা (যদি না আপনি ডকারফাইলে ডিফল্ট সেট রাখতে চান)।
লোকালহোস্টে, আপনি আপনার ENV ভেরিয়েবলগুলিকে একটি .env
ফাইলে রাখতে চাইতে পারেন ( সলিউশন ফোল্ডার চেক করুন)।
এছাড়াও নিশ্চিত করুন যে .env আপনার .gitignore
এ যোগ করা হয়েছে: আপনি আপনার গোপনীয়তা Github-এ ঠেলে দিতে চান না!
echo .env >> .gitignore
এর পরে, আপনি স্থানীয়ভাবে উদাহরণটি পরীক্ষা করতে পারেন:
docker run -it -p 8080:8080 --env-file .env my-php-app-docker
এখন আপনি নিম্নলিখিত অর্জন করেছেন:
- আপনার অ্যাপ আপনার ENV থেকে গতিশীলভাবে পরিবর্তনশীল পড়বে
- আপনি আপনার কোড থেকে ডিবি পাসওয়ার্ড মুছে ফেলায় নিরাপত্তার উন্নতি করেছেন)
আপনি এখন ক্লাউড রানে একটি নতুন সংশোধন স্থাপন করতে পারেন। আসুন UI-তে ঝাঁপিয়ে পড়ি এবং ম্যানুয়ালি পরিবেশের ভেরিয়েবল সেট করি:
- https://console.cloud.google.com/run- এ যান
- আপনার অ্যাপে ক্লিক করুন
- "সম্পাদনা করুন এবং একটি নতুন পুনর্বিবেচনা করুন" এ ক্লিক করুন
- প্রথম ট্যাবে "ধারক(গুলি)" নীচের ট্যাবে ক্লিক করুন "ভেরিয়েবল এবং সিক্রেটস"
- "+ ভেরিয়েবল যোগ করুন" ক্লিক করুন এবং সমস্ত প্রয়োজনীয় ভেরিয়েবল যোগ করুন। আপনি এই মত কিছু সঙ্গে শেষ করা উচিত:
এই নিখুঁত? না। আপনার পাস এখনও বেশিরভাগ অপারেটরের কাছে দৃশ্যমান। এটি Google ক্লাউড সিক্রেট ম্যানেজার দিয়ে প্রশমিত করা যেতে পারে।
দ্বিতীয় পুনরাবৃত্তি: সিক্রেট ম্যানেজার
আপনার পাসওয়ার্ড আপনার নিজের কোড থেকে অদৃশ্য হয়ে গেছে: বিজয়! কিন্তু অপেক্ষা করুন - আমরা কি এখনও নিরাপদ?
Google ক্লাউড কনসোলে যাদের অ্যাক্সেস আছে তাদের কাছে আপনার পাসওয়ার্ড এখনও দৃশ্যমান। আসলে, আপনি যদি ক্লাউড রান YAML ডিপ্লয়মেন্ট ফাইল অ্যাক্সেস করেন তবে আপনি এটি পুনরুদ্ধার করতে সক্ষম হবেন। অথবা আপনি যদি একটি নতুন ক্লাউড রান রিভিশন সম্পাদনা বা স্থাপন করার চেষ্টা করেন, পাসওয়ার্ডটি ভেরিয়েবল এবং সিক্রেটস বিভাগে দৃশ্যমান হবে যেমনটি নীচের স্ক্রিনশটগুলিতে দেখানো হয়েছে৷
Google ক্লাউড সিক্রেট ম্যানেজার হল API কী, পাসওয়ার্ড, সার্টিফিকেট এবং অন্যান্য গোপনীয়তার মতো সংবেদনশীল তথ্য পরিচালনা করার জন্য একটি সুরক্ষিত, কেন্দ্রীভূত পরিষেবা৷
এটি আপনাকে সূক্ষ্ম অনুমতি এবং শক্তিশালী এনক্রিপশন সহ গোপনীয়তা সংরক্ষণ, পরিচালনা এবং অ্যাক্সেস করতে সক্ষম করে। Google ক্লাউডের আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (IAM) এর সাথে একত্রিত, সিক্রেট ম্যানেজার আপনাকে ডেটা সুরক্ষা এবং নিয়ন্ত্রক সম্মতি নিশ্চিত করে নির্দিষ্ট গোপনীয়তাগুলি কে অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে দেয়৷
এটি স্বয়ংক্রিয় গোপন ঘূর্ণন এবং সংস্করণ সমর্থন করে, গোপন জীবনচক্র পরিচালনাকে সরল করে এবং Google ক্লাউড পরিষেবা জুড়ে অ্যাপ্লিকেশনগুলিতে সুরক্ষা বাড়ায়৷
সিক্রেট ম্যানেজার অ্যাক্সেস করতে হ্যামবার্গার মেনু থেকে নিরাপত্তা পরিষেবাগুলিতে নেভিগেট করুন এবং নীচের স্ক্রিনশটে দেখানো হিসাবে ডেটা সুরক্ষা বিভাগের অধীনে এটি খুঁজুন।
নিম্নলিখিত চিত্র অনুসারে আপনি সেখানে গেলে সিক্রেট ম্যানেজার এপিআই সক্ষম করুন।
- এখন " একটি গোপন তৈরি করুন " ক্লিক করুন: আসুন এটিকে যুক্তিসঙ্গতভাবে বলি:
- নাম:
php-amarcord-db-pass
- গোপন মান: ' আপনার ডিবি পাসওয়ার্ড ' ("আপলোড ফাইল" অংশ উপেক্ষা করুন)।
- এই গোপন লিঙ্কটি টীকা করুন,
projects/123456789012/secrets/php-amarcord-db-pass
এর মতো দেখতে হবে। এটি আপনার গোপনীয়তার অনন্য নির্দেশক (টেরাফর্ম, ক্লাউড রান এবং অন্যান্যদের জন্য)। নম্বরটি আপনার অনন্য প্রকল্প নম্বর।
টিপ : আপনার গোপনীয়তার জন্য একটি সামঞ্জস্যপূর্ণ নামকরণ পদ্ধতি ব্যবহার করার চেষ্টা করুন, বিশেষ করে বাম থেকে ডানে, উদাহরণস্বরূপ: cloud-devrel-phpamarcord-dbpass
- সংস্থা (কোম্পানির সাথে)
- দল (org এর মধ্যে)
- আবেদন (দলের মধ্যে)
- পরিবর্তনশীল নাম (অ্যাপের মধ্যে)
এটি আপনাকে একটি একক অ্যাপের জন্য আপনার সমস্ত গোপনীয়তা খুঁজে পেতে সহজ রেজেক্সের অনুমতি দেবে৷
একটি নতুন ক্লাউড রান রিভিশন তৈরি করুন
এখন যেহেতু আমাদের কাছে একটি নতুন সিক্রেট আছে, আমাদের DB_PASS ENV ভেরিয়েবল থেকে পরিত্রাণ পেতে হবে এবং এটিকে নতুন সিক্রেট দিয়ে প্রতিস্থাপন করতে হবে। তাই:
- Google ক্লাউড কনসোল ব্যবহার করে ক্লাউড রানে অ্যাক্সেস
- অ্যাপটি বেছে নিন।
- "সম্পাদনা করুন এবং একটি নতুন পুনর্বিবেচনা করুন" এ ক্লিক করুন
- "ভেরিয়েবল এবং সিক্রেটস" ট্যাব সনাক্ত করুন।
- DB_PASS ENV ভেরিয়েবল রিসেট করতে "+ রেফারেন্স একটি সিক্রেট" বোতামটি ব্যবহার করুন।
- উল্লেখিত গোপনীয়তার জন্য একই "DB_PASS" ব্যবহার করুন এবং সর্বশেষ সংস্করণ ব্যবহার করুন।
একবার সম্পন্ন হলে, আপনি নিম্নলিখিত ত্রুটি পেতে হবে
এটি কিভাবে ঠিক করতে হবে তা বের করার চেষ্টা করুন। এটি সমাধান করার জন্য আপনাকে IAM এবং অ্যাডমিন বিভাগে অ্যাক্সেস করতে হবে এবং অনুমোদনের অনুমতি পরিবর্তন করতে হবে। শুভ ডিবাগিং!
একবার আপনি এটি বের করে ফেললে, ক্লাউড রানে ফিরে যান এবং একটি নতুন পুনর্বিন্যাস পুনরায় স্থাপন করুন। ফলাফল নিম্নলিখিত চিত্র মত হওয়া উচিত:
টিপ : বিকাশকারী কনসোল (UI) অনুমতি সমস্যাগুলি নির্দেশ করার জন্য দুর্দান্ত৷ আপনার ক্লাউড সত্তার জন্য সমস্ত লিঙ্ক নেভিগেট করার জন্য সময় নিন!
7. মডিউল 5: ক্লাউড বিল্ডের সাথে আপনার CI/CD সেটআপ করুন
কেন একটি CI/CD পাইপলাইন?
এখন পর্যন্ত, আপনার কয়েকবার gcloud run deploy
টাইপ করা উচিত, সম্ভবত একই প্রশ্নের উত্তর বারবার দেওয়া।
জিক্লাউড রান ডিপ্লোয় সহ আপনার অ্যাপটি ম্যানুয়ালি স্থাপন করে ক্লান্ত? প্রতিবার যখন আপনি আপনার গিট রিপোজিটরিতে একটি নতুন পরিবর্তন ঠেলে আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে নিজেকে স্থাপন করতে পারে তবে এটি কি দুর্দান্ত হবে না?
একটি CI/CD পাইপলাইন ব্যবহার করতে, আপনার দুটি জিনিসের প্রয়োজন হবে:
- একটি ব্যক্তিগত গিট রিপোজিটরি : সৌভাগ্যবশত, আপনার ইতিমধ্যেই ওয়ার্কশপ রিপোজিটরিটি আপনার গিটহাব অ্যাকাউন্টে 2 ধাপে রাখা উচিত ছিল। যদি না হয়, ফিরে যান এবং সেই ধাপটি সম্পূর্ণ করুন। আপনার কাঁটাযুক্ত সংগ্রহস্থলটি এইরকম হওয়া উচিত:
https://github.com/<YOUR_GITHUB_USER>/app-mod-workshop
- ক্লাউড বিল্ড । এই আশ্চর্যজনক এবং সস্তা পরিষেবাটি আপনাকে প্রায় সবকিছুর জন্য বিল্ড অটোমেশন কনফিগার করতে দেয়: টেরাফর্ম, ডকারাইজড অ্যাপস, ..
এই বিভাগটি ক্লাউড বিল্ড সেট আপ করার উপর ফোকাস করবে।
ক্লাউড বিল্ড লিখুন!
আমরা এটি করতে ক্লাউড বিল্ড ব্যবহার করব:
- আপনার উত্স তৈরি করুন (ডকারফাইলের সাথে)। এটিকে একটি "বড় .zip ফাইল" হিসাবে ভাবুন যাতে এটি তৈরি এবং চালানোর জন্য আপনার যা দরকার তা রয়েছে (আপনার "বিল্ড আর্টিফ্যাক্ট")।
- এই আর্টিফ্যাক্টটিকে আর্টিফ্যাক্ট রেজিস্ট্রি (এআর) এ পুশ করুন।
- তারপর অ্যাপ "php-amarcord" এর জন্য AR থেকে ক্লাউড রানে একটি স্থাপনা ইস্যু করুন
- এটি বিদ্যমান অ্যাপের একটি নতুন সংস্করণ ("রিভিশন") তৈরি করবে (নতুন কোড সহ একটি স্তরের কথা ভাবুন) এবং পুশ সফল হলে ট্রাফিককে নতুন সংস্করণে ডাইভার্ট করতে আমরা এটি কনফিগার করব৷
এটি আমার php-amarcord
অ্যাপের জন্য কিছু বিল্ডের একটি উদাহরণ:
কিভাবে আমরা এই সব না?
- একটি নিখুঁত YAML ফাইল তৈরি করে:
cloudbuild.yaml
- একটি ক্লাউড বিল্ড ট্রিগার তৈরি করে।
- ক্লাউড বিল্ড UI এর মাধ্যমে আমাদের গিথুব রেপোতে সংযোগ করে।
ট্রিগার তৈরি করুন (এবং সংযোগ সংগ্রহস্থল)
- https://console.cloud.google.com/cloud-build/triggers- এ যান
- "ট্রিগার তৈরি করুন" এ ক্লিক করুন।
- কম্পাইল:
- নাম:
on-git-commit-build-php-app
মতো অর্থপূর্ণ কিছু - ইভেন্ট: শাখায় ধাক্কা
- উত্স: "নতুন সংগ্রহস্থল সংযুক্ত করুন"
- এটি ডানদিকে একটি উইন্ডো খুলবে: "সংযোগ সংগ্রহস্থল"
- উত্স প্রদানকারী: "Github" (প্রথম)
- "চালিয়ে যান"
- প্রমাণীকরণ ক্রস-প্রমাণিত করার জন্য গিথুবে একটি উইন্ডো খুলবে। প্রবাহ অনুসরণ করুন এবং ধৈর্য ধরুন। আপনার যদি অনেকগুলি রেপো থাকে তবে এটি আপনাকে কিছুটা সময় নিতে পারে।
- "রেপো নির্বাচন করুন" আপনার অ্যাকাউন্ট/রেপো নির্বাচন করুন এবং "আমি বুঝি..." অংশে টিক দিন।
- আপনি যদি ত্রুটি পেয়ে থাকেন: GitHub অ্যাপটি আপনার কোনো সংগ্রহস্থলে ইনস্টল করা নেই "Google ক্লাউড বিল্ড ইনস্টল করুন" এ ক্লিক করে এগিয়ে যান এবং নির্দেশাবলী অনুসরণ করুন।
সংযোগ ক্লিক করুন
- বিঙ্গো ! আপনার রেপো এখন সংযুক্ত।
- ট্রিগার অংশে ফিরে যান....
- কনফিগারেশন: অটোডিটেক্টেড (*)
- উন্নত: পরিষেবা অ্যাকাউন্ট "[PROJECT_NUMBER]- compute@developer.gserviceaccount.com " নির্বাচন করুন
- xxxxx আপনার প্রজেক্ট আইডি
- ডিফল্ট গণনা পরিষেবা অ্যাকাউন্ট একটি ল্যাব পদ্ধতির জন্য ন্যায্য - এটি উত্পাদনে ব্যবহার করবেন না! ( আরো জানুন )।
- বাকি সবকিছু যেমন আছে রেখে দিন।
- "তৈরি করুন" বোতামে ক্লিক করুন।
(*) এটি সবচেয়ে সহজ উপায় কারণ এটি Dockerfile বা cloudbuild.yaml পরীক্ষা করে। যাইহোক, cloudbuild.yaml
আপনাকে কোন ধাপে কি করতে হবে তা স্থির করার প্রকৃত ক্ষমতা দেয়।
আমার ক্ষমতা আছে!
এখন, আপনি ক্লাউড বিল্ড পরিষেবা অ্যাকাউন্ট না দিলে ট্রিগার কাজ করবে না (একটি পরিষেবা অ্যাকাউন্ট কী? একটি "রোবট" এর ইমেল যেটি একটি কাজের জন্য আপনার পক্ষে কাজ করে - এই ক্ষেত্রে ক্লাউডে জিনিস তৈরি করা!)
আপনার SA নির্মাণ এবং স্থাপনে ব্যর্থ হবে যদি না আপনি তাকে এটি করার ক্ষমতা দেন। ভাগ্যক্রমে এটা সহজ!
- "ক্লাউড বিল্ড"> " সেটিংস " এ যান।
- "[PROJECT_NUMBER] - compute@developer.gserviceaccount.com " পরিষেবা অ্যাকাউন্ট
- এই বাক্সগুলিতে টিক দিন:
- ক্লাউড রান
- সিক্রেট ম্যানেজার
- পরিষেবা অ্যাকাউন্ট
- ক্লাউড বিল্ড
- এছাড়াও "পছন্দের পরিষেবা অ্যাকাউন্ট হিসাবে সেট করুন" টিক দিন
ক্লাউড বিল্ড YAML কোথায়?
আমরা আপনাকে নিজের ক্লাউড বিল্ড ইয়ামল তৈরি করতে কিছুটা সময় ব্যয় করতে দৃ strongly ়ভাবে উত্সাহিত করি।
তবে, যদি আপনার কাছে সময় না থাকে বা আপনি সময় করতে চান না তবে আপনি এই সমাধান ফোল্ডারে কিছু অনুপ্রেরণা পেতে পারেন: .সোলিউশন
এখন আপনি গিটহাবের পরিবর্তনকে ধাক্কা দিতে পারেন এবং ক্লাউড বিল্ডকে তার অংশে পর্যবেক্ষণ করতে পারেন।
ক্লাউড বিল্ড সেট আপ করা জটিল হতে পারে। এর দ্বারা পিছনে কিছু প্রত্যাশা করুন:
- Https://console.cloud.google.com/cloud-build/builds;
- আপনার ত্রুটি সন্ধান করা।
- কোডটিতে ফিক্সিং, এবং পুনরায় ইস্যু গিট কমিট / গিট পুশ।
- কখনও কখনও ত্রুটি কোডে হয় না, তবে কিছু কনফিগারেশনে থাকে। সেক্ষেত্রে আপনি ইউআই (ক্লাউড বিল্ড> "ট্রিগার"> রান) থেকে একটি নতুন বিল্ড জারি করতে পারেন
মনে রাখবেন যে আপনি যদি এই সমাধানটি ব্যবহার করেন তবে এখনও কিছু কাজ করার আছে। উদাহরণস্বরূপ, আপনাকে সদ্য নির্মিত ডেভ/প্রোড এন্ডপয়েন্টগুলির জন্য এনভি ভেরিয়েবলগুলি সেট করতে হবে:
আপনি এটি দুটি উপায়ে করতে পারেন:
- ইউআই এর মাধ্যমে - আবার এনভ ভেরিয়েবলগুলি সেট করে
- আপনার জন্য "নিখুঁত" স্ক্রিপ্ট তৈরি করে সিএলআইয়ের মাধ্যমে। এখানে একটি উদাহরণ পাওয়া যাবে: GCloud- রান-মোতায়েন.শ । আপনাকে কয়েকটি জিনিস টুইট করতে হবে, উদাহরণস্বরূপ শেষ পয়েন্ট এবং প্রকল্প নম্বর; আপনি ক্লাউড ওভারভিউতে আপনার প্রকল্প নম্বরটি খুঁজে পেতে পারেন।
আমি কীভাবে গিথুবকে কোড করতে পারি?
গিটহাবকে git push
সর্বোত্তম উপায় শেখানোর জন্য এটি এই কর্মশালার সুযোগের বাইরে। তবে, যদি আপনার আটকে থাকে এবং আপনি ক্লাউড শেল থাকেন তবে দুটি উপায় রয়েছে:
- সিএলআই স্থানীয়ভাবে একটি এসএসএইচ কী যুক্ত করুন এবং git@github.com এর সাথে একটি রিমোট যুক্ত করুন: আপনার_ ব্যবহারকারী/অ্যাপ-মোড-ওয়ার্কশপ। Git (http এর পরিবর্তে)
- Vscode । আপনি যদি ক্লাউড শেল এডিটরটি ব্যবহার করেন তবে ওইউ উত্স নিয়ন্ত্রণ (সিটিআরএল-শিফ্ট-জি) ট্যাবটি ব্যবহার করতে পারে, "সিঙ্ক পরিবর্তনগুলি" এ ক্লিক করুন এবং নির্দেশাবলী অনুসরণ করুন। আপনার গিটহাব অ্যাকাউন্টটি ভিএসকোডে প্রমাণীকরণ করতে সক্ষম হওয়া উচিত এবং সেখান থেকে টান/ধাক্কা একটি বাতাসে পরিণত হয়।
অন্যান্য ফাইলগুলির মধ্যে git add clodubuild.yaml
মনে রাখবেন, বা এটি কার্যকর হবে না।
গভীর বনাম অগভীর "দেব/প্রোড প্যারিটি" [al চ্ছিক]
আপনি যদি এখান থেকে মডেল সংস্করণটি অনুলিপি করে থাকেন তবে আপনার কাছে দুটি অভিন্ন দেব এবং প্রোড সংস্করণ থাকবে। এটি দুর্দান্ত, এবং বারো-ফ্যাক্টর অ্যাপের বিধি 10 এর সাথে সামঞ্জস্যপূর্ণ।
যাইহোক, আমরা একই ডাটাবেসের দিকে নির্দেশ করে একটি অ্যাপ্লিকেশন রাখতে দুটি পৃথক ওয়েব এন্ডপয়েন্ট ব্যবহার করছি। এটি একটি কর্মশালার জন্য যথেষ্ট ভাল; যাইহোক, বাস্তব জীবনে, আপনি একটি সঠিক প্রোড পরিবেশ তৈরি করতে কিছুটা সময় ব্যয় করতে চান। এর অর্থ দুটি ডাটাবেস থাকা (একটি দেবের জন্য এবং একটি প্রোডের জন্য) থাকা এবং দুর্যোগ পুনরুদ্ধার / উচ্চ প্রাপ্যতার জন্য তাদের কোথায় থাকতে হবে তা বেছে নেওয়া। এটি এই কর্মশালার সুযোগের বাইরে চলে যায় তবে এটি চিন্তার জন্য কিছু খাবার।
আপনার যদি উত্পাদনের একটি "গভীর" সংস্করণ করার সময় থাকে তবে দয়া করে আপনার নকল করার জন্য প্রয়োজনীয় সমস্ত সংস্থান মনে রাখবেন, যেমন:
- ক্লাউড এসকিউএল ডাটাবেস (এবং সম্ভবত এসকিউএল উদাহরণ)।
- জিসিএস বালতি
- মেঘ ফাংশন।
- আপনি দেব (সস্তা, দ্রুত) এবং জেমিনি 1.5 প্রো (আরও শক্তিশালী) এর মডেল হিসাবে জেমিনি 1.5 ফ্ল্যাশ ব্যবহার করতে পারেন।
সাধারণভাবে, প্রতিবার আপনি যখন অ্যাপটি সম্পর্কে কিছু করেন, সমালোচনামূলকভাবে ভাবেন: উত্পাদনের কি একই মান থাকা উচিত বা না করা উচিত? এবং যদি তা না হয় তবে আপনার প্রচেষ্টাকে নকল করুন। এটি অবশ্যই টেরফর্মের সাথে অনেক সহজ, যেখানে আপনি আপনার পরিবেশকে ইনজেকশন করতে পারেন ( -ডেভ, -প্রড) আপনার সংস্থানগুলির প্রত্যয় হিসাবে।
8। মডিউল 6: গুগল ক্লাউড স্টোরেজে যান
স্টোরেজ
বর্তমানে অ্যাপটি একটি ডকার পাত্রে রাজ্যটি সংরক্ষণ করেছে। যদি মেশিনটি ভেঙে যায়, অ্যাপটি বিস্ফোরিত হয়, বা কেবল আপনি যদি নতুন পুনর্বিবেচনাটি চাপিয়ে দেন তবে একটি নতুন, খালি স্টোরেজ সহ একটি নতুন সংশোধন নির্ধারিত হবে: 🙈
আমরা কিভাবে এটা ঠিক করব? অনেকগুলি পন্থা রয়েছে।
- ডিবিতে চিত্রগুলি সংরক্ষণ করুন। আমি আমার আগের পিএইচপি অ্যাপ্লিকেশনটি দিয়ে শেষ করেছি। এটি সবচেয়ে সহজ সমাধান কারণ এটি এতে জটিলতা যুক্ত করে না। তবে এটি নিশ্চিতভাবে আপনার ডিবিতে বিলম্ব এবং লোড যুক্ত করে!
- আপনার ক্লাউড রান অ্যাপটিকে স্টোরেজ-বান্ধব সমাধানে স্থানান্তরিত করুন: জিসিই + অবিরাম ডিস্ক ? হয়তো GKE + স্টোরেজ ? দ্রষ্টব্য: আপনি যা নিয়ন্ত্রণে অর্জন করেন, আপনি তত্পরতা হারাবেন।
- জিসিএসে যান। গুগল ক্লাউড স্টোরেজ পুরো গুগল ক্লাউডের জন্য ক্লাস স্টোরেজে সেরা অফার করে এবং এটি সর্বাধিক ক্লাউড আইডিয়োম্যাটিক সমাধান। তবে এটি আমাদের পিএইচপি লাইব্রেরি সহ নোংরা হওয়ার জন্য প্রয়োজন। আমাদের কি জিসিএসের জন্য পিএইচপি 5.7 লাইব্রেরি রয়েছে?
PHP 5.7
এমনকিComposer
সমর্থন করে ( পিএইচপি 5.3.2 এর মতো মনে হয় প্রথম দিকের সংস্করণটি সুরকার দ্বারা সমর্থিত)? - হয়তো ডকার সিডিকার ব্যবহার করবেন?
- অথবা হতে পারে জিসিএস ক্লাউড রান ভলিউম মাউন্টগুলি ব্যবহার করুন। এটা আশ্চর্যজনক শোনাচ্ছে.
🤔 মাইগ্রেট স্টোরেজ (খোলা শেষ)
[উন্মুক্ত শেষ] এই অনুশীলনে, আমরা চাই যে আপনি আপনার চিত্রগুলি এমনভাবে সরানোর জন্য একটি সমাধান সন্ধান করুন যা কোনও উপায়ে অব্যাহত রয়েছে।
গ্রহণযোগ্যতা পরীক্ষা
আমি আপনাকে সমাধানটি বলতে চাই না, তবে আমি এটি ঘটুক:
- আপনি
newpic.jpg
আপলোড করেছেন। আপনি এটি অ্যাপে দেখুন। - আপনি অ্যাপটিকে একটি নতুন সংস্করণে আপগ্রেড করেছেন।
-
newpic.jpg
এখনও আছে, দৃশ্যমান।
💡 সম্ভাব্য সমাধান (জিসিএস ক্লাউড রান ভলিউম মাউন্টগুলি)
এটি একটি খুব মার্জিত সমাধান যা কোডটি মোটেও স্পর্শ না করার সময় আমাদের রাষ্ট্রীয় ফাইল আপলোডগুলি অর্জন করতে দেয় (কোনও চিত্রের বিবরণ দেখানো ছাড়াও, তবে এটি তুচ্ছ এবং কেবল চোখের সন্তুষ্টির জন্য)।
এটি আপনাকে ক্লাউড রান থেকে জিসিএসে একটি ফোল্ডার মাউন্ট করার অনুমতি দেবে, সুতরাং:
- জিসিএসে সমস্ত আপলোডগুলি আসলে আপনার অ্যাপ্লিকেশনটিতে দৃশ্যমান হবে।
- আপনার অ্যাপ্লিকেশনটিতে সমস্ত আপলোড আসলে জিসিএসে আপলোড করা হবে
- ম্যাজিক হবে জিসিএসে আপলোড করা টাইও অবজেক্টগুলি (অধ্যায় 7)।
নোট ফিউজ ফাইন প্রিন্ট পড়ুন দয়া করে। পারফরম্যান্স যদি সমস্যা হয় তবে এটি ঠিক নয়।
একটি জিসিএস বালতি তৈরি করুন
জিসিএস হ'ল গুগল ক্লাউডের ওমনি-উপস্থিত স্টোরেজ পরিষেবা। এটি যুদ্ধ-পরীক্ষিত, এবং প্রতিটি জিসিপি পরিষেবা স্টোরেজ প্রয়োজন দ্বারা ব্যবহৃত হয়।
নোট করুন যে ক্লাউড শেল রফতানি প্রকল্প_আইডি গুগল_ক্লাউড_প্রজেক্ট হিসাবে:
$ export PROJECT_ID=$GOOGLE_CLOUD_PROJECT
#!/bin/bash
set -euo pipefail
# Your Cloud Run Service Name, eg php-amarcord-dev
SERVICE_NAME='php-amarcord-dev'
BUCKET="${PROJECT_ID}-public-images"
GS_BUCKET="gs://${BUCKET}"
# Create bucket
gsutil mb -l "$GCP_REGION" -p "$PROJECT_ID" "$GS_BUCKET/"
# Copy original pictures there - better if you add an image of YOURS before.
gsutil cp ./uploads/*.png "$GS_BUCKET/"
/ আপলোড / ফোল্ডারে বালতি মাউন্ট করতে ক্লাউড রান কনফিগার করুন
এখন আসুন মার্জিত অংশে আসি। আমরা একটি ভলিউম php_uploads
তৈরি করি এবং MOUNT_PATH
একটি ফিউজ মাউন্ট করতে ক্লাউড রানকে নির্দেশ করি (এর মতো /var/www/html/uploads/
):
#!/bin/bash
set -euo pipefail
# .. keep variables from previous script..
# Uploads folder within your docker container.
# Tweak it for your app code.
MOUNT_PATH='/var/www/html/uploads/'
# Inject a volume mount to your GCS bucket in the right folder.
gcloud --project "$PROJECT_ID" beta run services update "$SERVICE_NAME" \
--region $GCP_REGION \
--execution-environment gen2 \
--add-volume=name=php_uploads,type=cloud-storage,bucket="$BUCKET" \
--add-volume-mount=volume=php_uploads,mount-path="$MOUNT_PATH"
এখন, আপনি ক্লাউড স্টোরেজকে নির্দেশ করতে চান এমন সমস্ত শেষের জন্য এই পদক্ষেপটি পুনরাবৃত্তি করুন।
আপনি ইউআই থেকে একই অর্জন করতে পারেন
- "ভলিউমস" ট্যাবের অধীনে, আপনার বালতিটির দিকে নির্দেশ করে একটি ভলিউম মাউন্টগুলি তৈরি করুন, "ক্লাউড স্টোরেজ বালতি" টাইপ করুন, উদাহরণস্বরূপ "পিএইচপি_উপলোডস" নামের সাথে।
- ধারক (গুলি) এর অধীনে> ভলিউম মাউন্টগুলি আপনার অ্যাপ্লিকেশন দ্বারা অনুরোধ করা ভলিউম পয়েন্টে সবেমাত্র তৈরি করা ভলিউম মাউন্ট করে। এটি ডকারফাইলের উপর নির্ভর করে তবে এটি
var/www/html/uploads/
এর মতো দেখতে পারে।
যে কোনও উপায়ে, যদি এটি কাজ করে তবে নতুন ক্লাউড রান সংশোধন সম্পাদনা করা আপনাকে এর মতো কিছু দেখাতে হবে:
এখন নতুন অ্যাপ্লিকেশনটি পরীক্ষা করুন /upload.php
শেষ পয়েন্টে একটি নতুন চিত্র আপলোড করছে।
চিত্রগুলি পিএইচপি -র একটি লাইন না লিখে জিসিএসে নির্বিঘ্নে প্রবাহিত হওয়া উচিত:
কি হয়েছে?
খুব যাদুকর কিছু ঘটেছে।
পুরানো কোড সহ একটি পুরানো অ্যাপ্লিকেশন এখনও তার কাজ করছে। একটি নতুন, আধুনিকীকরণের স্ট্যাক আমাদের অ্যাপ্লিকেশনটিতে সমস্ত চিত্র/ছবি স্বাচ্ছন্দ্যে একটি রাষ্ট্রীয় মেঘ বালতিতে বসে থাকতে দেয়। এখন আকাশ সীমা:
- প্রতিবার "বিপজ্জনক" বা "নগ্ন" সহ কোনও চিত্র আসবে এমন ইমেল প্রেরণ করতে চান? আপনি পিএইচপি কোড স্পর্শ না করে এটি করতে পারেন।
- প্রতিবার কোনও চিত্র এটি বর্ণনা করতে আসে এবং এর বিবরণ দিয়ে ডিবি আপলোড করার সময় একটি মিথুন মাল্টিমোডাল মডেল ব্যবহার করতে চান? আপনি পিএইচপি কোড স্পর্শ না করে এটি করতে পারেন। তুমি আমাকে বিশ্বাস করো না? অধ্যায় 7 এ পড়া চালিয়ে যান।
আমরা এখানে কেবল একটি বড় সুযোগটি আনলক করেছি।
9। মডিউল 7: গুগল জেমিনি দিয়ে আপনার অ্যাপ্লিকেশনটিকে ক্ষমতায়িত করুন
এখন আপনার কাছে ক্লাউডযুক্ত স্টোরেজ সহ একটি দুর্দান্ত আধুনিক, চকচকে নতুন পিএইচপি অ্যাপ্লিকেশন (2024 Fiat 126
মতো) রয়েছে।
আপনি এটা দিয়ে কি করতে পারেন?
পূর্বশর্ত
পূর্ববর্তী অধ্যায়ে, একটি মডেল সমাধান আমাদের চিত্রগুলি /uploads/
জিসিএসে মাউন্ট করার অনুমতি দেয়, ডি ফ্যাক্টো অ্যাপ্লিকেশন যুক্তিটিকে চিত্রের সঞ্চয় থেকে পৃথক করে।
এই অনুশীলনের জন্য আপনার প্রয়োজন:
- অধ্যায় 6 (স্টোরেজ) এ সফলভাবে অনুশীলন সম্পন্ন করেছেন।
- চিত্র আপলোডগুলির সাথে একটি জিসিএস বালতি রাখুন, যেখানে লোকেরা আপনার অ্যাপ্লিকেশনটিতে ছবি আপলোড করে এবং ছবিগুলি আপনার বালতিতে প্রবাহিত হয়।
একটি ক্লাউড ফাংশন সেট আপ করুন (পাইথনে)
আপনি কি কখনও ভেবে দেখেছেন যে কীভাবে কোনও ইভেন্ট-চালিত অ্যাপ্লিকেশন প্রয়োগ করবেন? এরকম কিছু:
- যখন <ইভেন্ট> ঘটে => একটি ইমেল প্রেরণ করুন
- যখন <ইভেন্ট> ঘটে => যদি <কন্ডিশন> সত্য হয় তবে ডাটাবেসটি আপডেট করুন।
ইভেন্ট কিছু হতে পারে, বিগকোয়ারিতে নতুন রেকর্ড থেকে পাওয়া যায়, জিসিএসের একটি ফোল্ডারে একটি নতুন অবজেক্ট পরিবর্তিত হয়েছে, বা একটি নতুন বার্তা পাব/সাবের একটি কাতারে অপেক্ষা করছে।
গুগল ক্লাউড এটি অর্জনের জন্য একাধিক দৃষ্টান্ত সমর্থন করে। সবচেয়ে উল্লেখযোগ্যভাবে:
- ঘটনাচক্রে । জিসিএস ইভেন্টগুলি কীভাবে গ্রহণ করবেন তা দেখুন। মেঘের মধ্যে যদি-তৎকালীন-ইলেসের উপর ভিত্তি করে ডিএজিএস এবং অর্কেস্ট্রেট ক্রিয়া তৈরি করতে দুর্দান্ত।
- ক্লাউড শিডিয়ুলার । উদাহরণস্বরূপ, মেঘে একটি মধ্যরাতের ক্রোন কাজের জন্য দুর্দান্ত।
- ক্লাউড ওয়ার্কফ্লো । একইভাবে ইভেন্ট আর্কে আপনাকে অনুমতি দেয়
- ক্লাউড রান ফাংশন (পরিচিতভাবে
lambdas
হিসাবে পরিচিত)। - Cloud Composer . মূলত অ্যাপাচি এয়ারফ্লো এর গুগল সংস্করণ, ড্যাগ এস এর জন্যও দুর্দান্ত।
এই অনুশীলনে, আমরা বেশ দর্শনীয় ফলাফল অর্জনের জন্য ক্লাউড ফাংশনে প্রবেশ করব। এবং আমরা আপনার জন্য al চ্ছিক অনুশীলন সরবরাহ করব।
নোট করুন যে নমুনা কোডটি .solutions/
অধীনে সরবরাহ করা হয়েছে
একটি ক্লাউড ফাংশন সেট আপ করুন (🐍 পাইথন)
আমরা একটি খুব উচ্চাভিলাষী জিসিএফ তৈরি করার চেষ্টা করছি।
- যখন জিসিএসে একটি নতুন চিত্র তৈরি করা হয় .. (সম্ভবত কেউ এটি অ্যাপটিতে আপলোড করেছেন - তবে কেবল তা নয়)
- .. এটি বর্ণনা করতে জেমিনিকে কল করুন এবং চিত্রটির একটি পাঠ্য বিবরণ পেতে .. (মাইমটি পরীক্ষা করে দেখতে ভাল লাগবে এবং এর চিত্রটি নিশ্চিত করুন এবং পিডিএফ, এমপি 3, বা পাঠ্য নয়)
- .. এবং এই বিবরণ দিয়ে ডিবি আপডেট করুন। (এটির জন্য
images
টেবিলে একটিdescription
কলাম যুক্ত করতে ডিবি প্যাচিংয়ের প্রয়োজন হতে পারে)।
চিত্রগুলিতে description
যুক্ত করতে ডিবি প্যাচ করুন
- ওপেন ক্লাউড এসকিউএল স্টুডিও:
- চিত্রগুলি ডিবির জন্য আপনার ব্যবহারকারী এবং পাসওয়ার্ড রাখুন
- এই এসকিউএল ইনজেক্ট করুন যা কোনও চিত্রের বর্ণনার জন্য একটি কলাম যুক্ত করে:
ALTER TABLE images ADD COLUMN description TEXT;
এবং বিঙ্গো! এটি কাজ করেছে কিনা তা পরীক্ষা করার জন্য এখনই চেষ্টা করুন:
SELECT * FROM images;
আপনার নতুন বিবরণ কলামটি দেখতে হবে:
জেমিনি এফ লিখুন (এক্স)
নোট এই ফাংশনটি আসলে জেমিনি কোড সহায়তা সহায়তা দিয়ে তৈরি করা হয়েছিল।
নোট এই ফাংশনটি তৈরি করা আপনি আইএএম অনুমতি ত্রুটির মধ্যে থাকতে পারেন। কিছু নীচে "সম্ভাব্য ত্রুটি" অনুচ্ছেদের অধীনে নথিভুক্ত করা হয়।
- APIs সক্রিয় করুন
- Https://console.cloud.google.com/functions/list এ যান
- "ফাংশন তৈরি করুন" ক্লিক করুন
- এপিআই উইজার্ড থেকে এপিআই সক্ষম করুন:
আপনি হয় ইউআই থেকে জিসিএফ বা কমান্ড লাইন থেকে তৈরি করতে পারেন। এখানে আমরা কমান্ড লাইন ব্যবহার করব।
একটি সম্ভাব্য কোডের অধীনে পাওয়া যাবে .solutions/
- আপনার কোড হোস্ট করার জন্য একটি ফোল্ডার তৈরি করুন, যেমন "জিসিএফ/"। ফোল্ডারটি প্রবেশ করান।
- একটি প্রয়োজনীয়তা তৈরি করুন
requirements.txt
ফাইল:
google-cloud-storage
google-cloud-aiplatform
pymysql
- একটি পাইথন ফাংশন তৈরি করুন। নমুনা কোড এখানে: জিসিএফ/মেইন.পি ।
#!/usr/bin/env python
"""Complete this"""
from google.cloud import storage
from google.cloud import aiplatform
import vertexai
from vertexai.generative_models import GenerativeModel, Part
import os
import pymysql
import pymysql.cursors
# Replace with your project ID
PROJECT_ID = "your-project-id"
GEMINI_MODEL = "gemini-1.5-pro-002"
DEFAULT_PROMPT = "Generate a caption for this image: "
def gemini_describe_image_from_gcs(gcs_url, image_prompt=DEFAULT_PROMPT):
pass
def update_db_with_description(image_filename, caption, db_user, db_pass, db_host, db_name):
pass
def generate_caption(event, context):
"""
Cloud Function triggered by a GCS event.
Args:
event (dict): The dictionary with data specific to this type of event.
context (google.cloud.functions.Context): The context parameter contains
event metadata such as event ID
and timestamp.
"""
pass
- ফাংশন ধাক্কা। আপনি এর অনুরূপ একটি স্ক্রিপ্ট ব্যবহার করতে পারেন: জিসিএফ/পুশ-টু- জিসিএফ.এসএইচ।
নোট 1 । সঠিক মানগুলির সাথে এনভসকে উত্স তৈরি করার বিষয়টি নিশ্চিত করুন, বা কেবল এগুলিতে যুক্ত করুন ( GS_BUCKET=blah
, ..):
নোট 2 । This will push all the local code ( .
) so make sure to surround your code in a specific folder and to use .gcloudignore
like a pro to avoid pushing huge libraries. ( উদাহরণ )।
#!/bin/bash
set -euo pipefail
# add your logic here, for instance:
source .env || exit 2
echo "Pushing ☁️ f(x)☁ to 🪣 $GS_BUCKET, along with DB config.. (DB_PASS=$DB_PASS)"
gcloud --project "$PROJECT_ID" functions deploy php_amarcord_generate_caption \
--runtime python310 \
--region "$GCP_REGION" \
--trigger-event google.cloud.storage.object.v1.finalized \
--trigger-resource "$BUCKET" \
--set-env-vars "DB_HOST=$DB_HOST,DB_NAME=$DB_NAME,DB_PASS=$DB_PASS,DB_USER=$DB_USER" \
--source . \
--entry-point generate_caption \
--gen2
দ্রষ্টব্য : এই উদাহরণে, generate_caption
আহ্বান করা পদ্ধতি হবে এবং ক্লাউড ফাংশনটি সমস্ত প্রাসঙ্গিক তথ্য (বালতির নাম, অবজেক্টের নাম, ..) সহ জিসিএস ইভেন্টটি এটিতে পাস করবে। সেই ইভেন্টটি পাইথন ডিক্টটি ডিবাগ করতে কিছুটা সময় নিন।
ফাংশন পরীক্ষা
ইউনিট পরীক্ষা
ফাংশনটিতে অনেক চলমান অংশ রয়েছে। You might want to be able to test all the single ones.
An example is in gcf/test.py .
Cloud Functions UI
Also take some time to explore your function on the UI. প্রতিটি ট্যাব অন্বেষণ করার মতো, বিশেষত Source
(আমার প্রিয়), Variables
, Trigger
এবং Logs
; You'll spend a lot of time in the Logs
to troubleshoots errors (also see possible errors on the bottom of this page). also make sure to check Permissions
.
E2E Test
Time to manually test the function!
- আপনার অ্যাপে যান এবং লগইন করুন
- একটি ছবি আপলোড করুন (খুব বড় নয়, আমরা বড় চিত্রগুলির সাথে সমস্যাগুলি দেখেছি)
- ইউআই পরীক্ষা করুন ছবিটি আপলোড করা হয়েছে।
- ক্লাউড এসকিউএল স্টুডিওতে পরীক্ষা করুন যে বিবরণটি আপডেট করা হয়েছে। লগইন করুন এবং এই ক্যোয়ারীটি চালান:
SELECT * FROM images
।
এবং এটা কাজ করে! আমরা সেই বিবরণটি দেখানোর জন্য ফ্রন্টেন্ড আপডেট করতেও চাই।
দেখানোর জন্য পিএইচপি আপডেট করুন [al চ্ছিক]
আমরা অ্যাপ্লিকেশন কাজ প্রমাণ করেছি। তবে এটি ভাল লাগবে যে ব্যবহারকারীরা সেই বিবরণটিও দেখতে পাবে।
We don't need to be PHP experts to add the description to the index.php
. এই কোডটি করা উচিত (হ্যাঁ, জেমিনি এটি আমার জন্যও লিখেছিলেন!):
<?php if (!empty($image['description'])): ?>
<p class="font-bold">Gemini Caption:</p>
<p class="italic"><?php echo $image['description']; ?></p>
<?php endif; ?>
আপনার নিজের স্বাদে এই কোডটি foreach
ভিতরে অবস্থান করুন।
পরবর্তী পদক্ষেপগুলিতে আমরা একটি সুন্দর ইউআই সংস্করণও দেখতে পাই, জেমিনি কোড অ্যাসিস্টকে ধন্যবাদ। একটি সুন্দর সংস্করণ এর মতো দেখতে পারে:
উপসংহার
আপনি জিসিএসে অবতরণকারী নতুন অবজেক্টগুলিতে একটি ক্লাউড ফাংশন পেয়েছিলেন যা কোনও মানুষের মতো চিত্রের সামগ্রীকে টীকা দিতে সক্ষম এবং স্বয়ংক্রিয়ভাবে ডিবি আপডেট করতে সক্ষম। বাহ!
এরপর কি? দুটি দুর্দান্ত কার্যকারিতা অর্জনের জন্য আপনি একই যুক্তি অনুসরণ করতে পারেন।
[al চ্ছিক] আরও ক্লাউড ফাংশন যুক্ত করুন [ওপেন শেষ]
বেশ কয়েকটি অতিরিক্ত বৈশিষ্ট্য মনে আসে।
📩 ইমেল ট্রিগার
একটি ইমেল ট্রিগার যা আপনাকে প্রতিবার কোনও ছবি পাঠানোর সময় আপনাকে একটি ইমেল প্রেরণ করে।
- খুব প্রায়ই? আরও একটি বাধা যুক্ত করুন: একটি বড় ছবি, বা এমন একটি ছবি যার মিথুন সামগ্রীতে "নগ্ন/নগ্নতা/হিংস্র" শব্দ রয়েছে।
- এর জন্য
EventArc
পরীক্ষা করার বিষয়টি বিবেচনা করুন।
🚫 অটো-আধুনিকীকরণ অনুপযুক্ত ছবি
বর্তমানে একজন মানব প্রশাসক "অনুপযুক্ত" এর জন্য চিত্রগুলি পতাকাঙ্কিত করছেন। জেমিনি ভারী উত্তোলন এবং স্থানটি সংযত করার বিষয়ে কীভাবে? অনুপযুক্ত ট্রিগার সামগ্রী ফ্ল্যাগ করতে একটি পরীক্ষা যুক্ত করুন এবং আমরা পূর্ববর্তী ফাংশনে যেমন শিখেছি তেমন ডিবি আপডেট করুন। এর অর্থ মূলত পূর্ববর্তী ফাংশনটি গ্রহণ করা, প্রম্পট পরিবর্তন করা এবং উত্তরের ভিত্তিতে ডিবি আপডেট করা।
সতর্কতা জেনারেটর এআই এর অপ্রত্যাশিত আউটপুট রয়েছে। জেমিনি থেকে "ক্রিয়েটিভ আউটপুট" "রেলের উপর" রাখা হয়েছে তা নিশ্চিত করুন। আপনি 0 থেকে 1, একটি জেএসএন, আত্মবিশ্বাসের স্কোরের মতো একটি ডিটারমিনিস্টিক উত্তর জিজ্ঞাসা করতে পারেন .. আপনি এটি বিভিন্ন উপায়ে অর্জন করতে পারেন, উদাহরণস্বরূপ: * পাইথন লাইব্রেরি pydantic
, langchain
ব্যবহার করে .. * জেমিনি কাঠামোগত আউটপুট ব্যবহার করুন।
টিপ আপনার একাধিক ফাংশন থাকতে পারে বা একটি একক প্রম্পট থাকতে পারে যা একটি জসন উত্তর প্রয়োগ করে (উপরে হাইলাইট হিসাবে "জেমিনি স্ট্রাকচার্ড আউটপুট" সহ গ্রেটা কাজ করে) যেমন:
এটি উত্পন্ন করার জন্য প্রম্পটটি কী হবে?
{
"description": "This is the picture of an arrosticino",
"suitable": TRUE
}
অন্তর্দৃষ্টি পেতে আপনি প্রম্পট অতিরিক্ত ক্ষেত্রগুলিতে যুক্ত করতে পারেন: এটি সম্পর্কে ভাল কিছু আছে? এটা সম্পর্কে খারাপ? আপনি কি জায়গাটি চিনতে পারেন? কিছু পাঠ্য আছে (ওসিআর কখনও সহজ ছিল না):
-
goods
: "এটি দেখতে ইউমি খাবারের মতো" -
bads
: "এটি অস্বাস্থ্যকর খাবারের মতো দেখাচ্ছে" -
OCR
: "দা কনসেয়ার প্রিফেরিবিলমেন্টে প্রাইমা ডেল 10 নভেম্ব্রে 2024" -
location
: "পেসকারা, লুঙ্গোমারে"
যদিও এন ফলাফলের জন্য এন ফাংশন থাকা সাধারণত ভাল, তবে এটি 10 টি কাজ করে এমন একটি করা অবিশ্বাস্যভাবে ফলপ্রসূ। Check this article by Riccardo to see how.
সম্ভাব্য ত্রুটি (বেশিরভাগ আইএএম / অনুমতি)
প্রথম আমি এই সমাধানটি বিকাশ করেছি আমি কিছু আইএএম অনুমতি সংক্রান্ত বিষয়ে এসেছি। আমি তাদের সহানুভূতির জন্য এবং কীভাবে তাদের ঠিক করা যায় সে সম্পর্কে কিছু ধারণা দেওয়ার জন্য এগুলি এখানে যুক্ত করব।
ত্রুটি: পরিষেবা অ্যাকাউন্টের জন্য পর্যাপ্ত অনুমতি নেই
- নোট করুন যে কোনও জিসিএফ ফাংশন মোতায়েন করার জন্য যা কোনও জিসিএস বালতি শোনায় আপনাকে চিত্রের মতো আপনি কাজের জন্য যে পরিষেবা অ্যাকাউন্টটি ব্যবহার করছেন সেটিতে যথাযথ অনুমতি সেট আপ করতে হবে:
আপনাকে ইভেন্ট্ক এপিআইগুলি সক্ষম করতে হতে পারে - এগুলি পুরোপুরি উপলব্ধ হওয়ার কয়েক মিনিট আগে কী।
ত্রুটি: অনুপস্থিত ক্লাউড রান ইনভোকার
- জিসিএফের অনুমতি দেওয়ার জন্য ইউআইয়ের আর একটি মন্তব্য হ'ল ( ক্লাউড রান ইনভোকারের ভূমিকা ):
এই ত্রুটিটি চিত্রটিতে কমান্ডটি চালানো ঠিক করা যেতে পারে, যা ফিক্স-পারমিশনস.এসএইচ এর অনুরূপ
এই সমস্যাটি এখানে বর্ণিত হয়েছে: https://cloud.google.com/functions/docs/securning/authenticating
ত্রুটি: মেমরির সীমা ছাড়িয়ে গেছে
আমি প্রথমবার এটি চালানোর সময়, আমার লগগুলি বলতে পারে: "'244 এমআইবি এর মেমরির সীমা 270 এমআইবি ব্যবহার করে ছাড়িয়ে গেছে। মেমরির সীমা বাড়ানোর বিষয়টি বিবেচনা করুন, দেখুন https://cloud.google.com/functions/docs/configuring/memory ' 'দেখুন' " আবার আপনার জিসিএফ -এ র্যাম যুক্ত করুন। এটি ইউআইতে করা খুব সহজ। এখানে একটি সম্ভাব্য বাম্প:
বিকল্পভাবে, আপনি এমইএম/সিপিইউ বাম্প করতে আপনার ক্লাউড রান ডিপ্লোয়মেন্ট স্ক্রিপ্টটিও ঠিক করতে পারেন। এটি কিছুটা বেশি সময় নেয়।
ত্রুটি: পাবসব প্রকাশিত
জিসিএফ ভি 1 এর সাথে একটি ট্রিগার তৈরি করা এই ত্রুটিটি একবার দিয়েছে:
আবার, আইএমে গিয়ে আপনার পরিষেবা অ্যাকাউন্টটি "পাব/সাব প্রকাশক" ভূমিকা দিয়ে এটি ঠিক করা সহজ।
ত্রুটি: ভার্টেক্স এআই ব্যবহার করা হয়নি
আপনি যদি এই ত্রুটিটি পান:
অনুমতি অস্বীকার: 403 ভার্টেক্স এআই এপিআই আপনার_প্রজেক্টের আগে প্রজেক্টে ব্যবহার করা হয়নি বা এটি অক্ষম করা হয়েছে। Https://console.developers.google.com/apis/api/aiplatform.googleapis.com/overyview?project=yor_project পরিদর্শন করে এটি সক্ষম করুন
আপনার কেবল ভার্টেক্স এআই এপিআই সক্ষম করতে হবে। সমস্ত প্রয়োজনীয় এপিআই সক্ষম করার সহজতম উপায় হ'ল:
- https://console.cloud.google.com/vertex-ai
- "সমস্ত প্রস্তাবিত এপিআই সক্ষম করুন" ক্লিক করুন।
ত্রুটি: ইভেন্টার্ক ট্রিগার পাওয়া যায় নি।
আপনি যদি এটি পান তবে দয়া করে ফাংশনটি পুনরায় নিয়োগ করুন।
ত্রুটি: 400 পরিষেবা এজেন্টদের বিধান করা হচ্ছে
400 পরিষেবা এজেন্টদের বিধান করা হচ্ছে ( https://cloud.google.com/vertex-ai/docs/general/access-control#service- এজেন্টস )। প্রদত্ত ক্লাউড স্টোরেজ ফাইলটি পড়তে পরিষেবা এজেন্টদের প্রয়োজন। সুতরাং দয়া করে কয়েক মিনিটের মধ্যে আবার চেষ্টা করুন।
যদি এটি হয় তবে কিছু সময় অপেক্ষা করুন বা কোনও গুগলারের কাছে জিজ্ঞাসা করুন।
10। মডিউল 8: প্রাপ্যতা স্লোস তৈরি করুন
অধ্যায়ে আমরা এটি অর্জন করার চেষ্টা করি:
- এসএলআই তৈরি করা
- এসএলআইগুলির উপর ভিত্তি করে এসএলও তৈরি করা
- স্লোসের উপর ভিত্তি করে সতর্কতা তৈরি করা
এটি লেখকের কাছে একটি খুব প্রিয় বিষয়, যেহেতু রিকার্ডো গুগল ক্লাউডের এসআরই / ডিভোপস অঞ্চলে কাজ করে।
(ওপেন-এন্ড) এই অ্যাপ্লিকেশনটির জন্য এসএলআই এবং স্লো তৈরি করুন
অ্যাপটি ডাউন থাকলে আপনি যদি বলতে না পারেন তবে কোনও অ্যাপ্লিকেশনটি কতটা ভাল?
একটি SLO কি?
ওহ আমার! গুগল উদ্ভাবিত স্লো! এটি সম্পর্কে আরও পড়তে আমি পরামর্শ দিতে পারি:
- এসআরই বুক - অধ্যায় 2 - স্লো বাস্তবায়ন । ( 👉 আরও srebeoks )
- আর্ট অফ স্লোস ( দুর্দান্ত ভিডিও )। কীভাবে আপনার পরিষেবার জন্য একটি নিখুঁত এসএলও তৈরি করা যায় সে সম্পর্কে আরও জানার জন্য এটি একটি দুর্দান্ত প্রশিক্ষণ।
- কর্সেরার উপর এসআরই কোর্স । আমি এটি অবদান!
পদক্ষেপ 1: প্রাপ্যতা এসএলআই/এসএলও তৈরি করুন
আসুন উপলভ্যতা এসএলও দিয়ে শুরু করা যাক, কারণ এটি আপনি পরিমাপ করতে চান সবচেয়ে সহজ এবং সম্ভবত সবচেয়ে গুরুত্বপূর্ণ জিনিস।
ভাগ্যক্রমে ক্লাউড রান ইস্তিওকে ধন্যবাদ, প্রাক বিল্ট এসএলও সমর্থন নিয়ে আসে।
আপনার অ্যাপ্লিকেশনটি ক্লাউড রান এলে, এটি অর্জন করা খুব সহজ, এটি আমার 30 সেকেন্ড সময় নেয়।
- আপনার ক্লাউড রান পৃষ্ঠায় যান।
- আপনার অ্যাপ্লিকেশন ক্লিক/নির্বাচন করুন।
-
SLOs
ট্যাব নির্বাচন করুন। - "+ স্লো তৈরি করুন" ক্লিক করুন।
- Availability , Request-based
- চালিয়ে যান
- ক্যালেন্ডার মাস / 99%।
- "এসএলও তৈরি করুন" ক্লিক করুন।
পদক্ষেপ 2: এই স্লোতে সতর্কতা সেট আপ করুন
আমি 2 সতর্কতা তৈরি করার পরামর্শ দিচ্ছি:
- ইমেলের মাধ্যমে আপনাকে সতর্ক করতে কম বার্নরেট ("স্লোবার্ন") সহ একটি (কম পিআরআই টিকিটের অনুকরণ করে)।
- আপনাকে এসএমএসের মাধ্যমে সতর্ক করতে একটি উচ্চ বার্ন্রেট ("ফাস্টবার্ন") সহ একটি (উচ্চ পিআরআই টিকিট / পেজার অনুকরণ করে)
আগে থেকে আপনার SLO tab
যান।
এটি দুবার করুন:
- "এসএলও সতর্কতা তৈরি করুন" ক্লিক করুন (ডানদিকে একটি প্লাস সহ 🔔 বোতামটি)
- চেহারা সময়কাল, বার্ন রেট থ্রেশহোল্ড:
- [দ্রুত]। প্রথম:
60
মিনিট /10
এক্স - [SLOW]. দ্বিতীয়:
720
মিনিট /2
এক্স - বিজ্ঞপ্তি চ্যানেল: বিজ্ঞপ্তি চ্যানেল পরিচালনা করুন ক্লিক করুন
- প্রথম, "ইমেল" -> নতুন যুক্ত করুন -> ..
- দ্বিতীয়ত, "এসএমএস" -> নতুন যুক্ত করুন -> ফোনে যাচাই করুন।
- টিপ: আমি নামগুলিতে ইমোজি ব্যবহার করতে পছন্দ করি! এটি ডেমোসের জন্য মজাদার।
- হয়ে গেলে, ডানদিকে বিগ এক্স ক্লিক করুন।
- প্রথমে ফোন নির্বাচন করুন (দ্রুত), পরবর্তী ইমেল করুন (ধীর)।
- কিছু নমুনা ডকুমেন্টেশন যুক্ত করুন:
-
[PHP Amarcord] Riccardo told me to type sudo reboot or to check documentation in http://example.com/playbooks/1.php but I guess he was joking
।
বিঙ্গো !
চূড়ান্ত ফলাফল
আপনার প্রাপ্যতার জন্য আপনার কাছে 1 টি ওয়ার্কিং স্লো + 2x সতর্কতা থাকলে এবং এটি আপনার ইমেল এবং আপনার ফোনে সতর্ক করে দেওয়ার পরে আমরা এই অনুশীলনটি সমাপ্ত বিবেচনা করতে পারি।
আপনি যদি চান তবে আপনি একটি বিলম্ব যোগ করতে পারেন (এবং আমি আপনাকে দৃ strongly ়ভাবে এটি করতে উত্সাহিত করি) বা আরও জটিল একটি। বিলম্বের জন্য, আপনি যুক্তিসঙ্গত বলে মনে করেন এমন একটি বিলম্ব চয়ন করুন; সন্দেহ হলে, 200 মিমি চয়ন করুন।
11। পরবর্তী পদক্ষেপ
আপনি সবকিছু শেষ করেছেন, কি অনুপস্থিত?
Some food for thought:
Play with Gemini
You can use Gemini in two flavours:
- Vertex AI. The "Enterprise way", intertwined with your GCP, which we've explored in chapter 7 (GCF+Gemini). All authentication magically works, and services beautifully interconnect.
- গুগল এআই। The "Consumer way". আপনি এখান থেকে একটি জেমিনি এপিআই কী পান এবং ছোট স্ক্রিপ্টগুলি তৈরি করা শুরু করেন যা আপনার ইতিমধ্যে যে কোনও কাজের চাপের সাথে আবদ্ধ হতে পারে (মালিকানাধীন কাজ, অন্যান্য মেঘ, লোকালহোস্ট, ..)। You just substitute your API key and the code starts magically to work.
We encourage you to try exploring the (2) with your own pet projects.
UI Lifting
I'm no good at UIs. তবে মিথুন! আপনি কেবল একটি একক পিএইচপি পৃষ্ঠা নিতে পারেন এবং এরকম কিছু বলতে পারেন:
I have a VERY old PHP application. I want to touch it as little as possible. Can you help me:
1. add some nice CSS to it, a single static include for tailwind or similar, whatever you prefer
2. Transform the image print with description into cards, which fit 4 per line in the canvas?
Here's the code:
-----------------------------------
[Paste your PHP page, for instance index.php - mind the token limit!]
আপনি সহজেই এটি 5 মিনিটেরও কম সময়ে পেতে পারেন, একটি মেঘ দূরে দূরে! :)
মিথুনির প্রতিক্রিয়া নিখুঁত ছিল (অর্থ, আমাকে কোনও জিনিস পরিবর্তন করতে হয়নি):
এবং এখানে লেখকের ব্যক্তিগত অ্যাপ্লিকেশনটিতে নতুন বিন্যাস:
দ্রষ্টব্য: কোডটি চিত্র হিসাবে আটকানো হয়েছে কারণ আমরা আপনাকে কোডটি নিতে উত্সাহিত করতে চাই না, তবে আপনার নিজস্ব সৃজনশীল ইউআই/ফ্রন্টেন্ড সীমাবদ্ধতার সাথে জেমিনি আপনার জন্য কোডটি লিখতে পেতে; আমাকে বিশ্বাস করুন, আপনি পরে খুব সামান্য পরিবর্তনগুলি রেখে গেছেন।
নিরাপত্তা
এই অ্যাপ্লিকেশনটিকে সঠিকভাবে সুরক্ষিত করা এই 4 ঘন্টা কর্মশালার জন্য একটি অ-লক্ষ্য, কারণ এটি এই কর্মশালাটি 1-2 ব্যবধানের ক্রম দ্বারা সম্পন্ন করার সময়কে বাড়িয়ে তুলবে।
তবে এই বিষয়টি অত্যন্ত গুরুত্বপূর্ণ! আমরা SECURITY
কিছু ধারণা সংগ্রহ করেছি।
12. অভিনন্দন!
অভিনন্দন 🎉🎉🎉, আপনি গুগল ক্লাউডের সাথে আপনার উত্তরাধিকার পিএইচপি অ্যাপ্লিকেশনটিকে সফলভাবে আধুনিক করেছেন।
এই কোডল্যাবের সংক্ষেপে আপনি শিখেছেন:
- গুগল ক্লাউড এসকিউএল -তে কীভাবে একটি ডাটাবেস স্থাপন করবেন এবং কীভাবে আপনার বিদ্যমান ডাটাবেসটি এতে স্থানান্তর করবেন।
- কীভাবে ডকার এবং বিল্ডপ্যাকগুলির সাথে আপনার পিএইচপি অ্যাপ্লিকেশনটি ধারক করবেন এবং এর চিত্রটি গুগল ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রিতে সংরক্ষণ করবেন
- ক্লাউড রান করতে এবং ক্লাউড এসকিউএল দিয়ে এটি চালানোর জন্য কীভাবে আপনার ধারকযুক্ত অ্যাপটি স্থাপন করবেন
- গুগল সিক্রেট ম্যানেজার ব্যবহার করে কীভাবে গোপনে সংবেদনশীল কনফিগারেশন প্যারামিটারগুলি (যেমন ডিবি পাসওয়ার্ড) ব্যবহার করবেন
- আপনার গিটহাব রেপোতে যে কোনও কোড পুশে স্বয়ংক্রিয়ভাবে আপনার পিএইচপি অ্যাপ্লিকেশনটি তৈরি এবং স্থাপন করতে গুগল ক্লাউড বিল্ডের সাথে আপনার সিআই/সিডি পাইপলাইন কীভাবে সেট আপ করবেন।
- আপনার অ্যাপ্লিকেশন সংস্থানগুলি "ক্লাউডাইফাই" করতে কীভাবে ক্লাউড স্টোরেজ ব্যবহার করবেন
- আপনার অ্যাপ্লিকেশন কোডটি স্পর্শ না করে গুগল ক্লাউডের শীর্ষে আশ্চর্যজনক ওয়ার্কফ্লোগুলি তৈরি করতে কীভাবে সার্ভারলেস প্রযুক্তিগুলি উত্তোলন করবেন।
- ফিটিং ব্যবহারের ক্ষেত্রে জেমিনি মাল্টিমোডাল ক্ষমতা ব্যবহার করুন।
- গুগল ক্লাউডের মধ্যে এসআরই নীতিগুলি প্রয়োগ করুন
গুগল ক্লাউডের সাথে অ্যাপ্লিকেশন আধুনিকীকরণের জন্য আপনার ভ্রমণের জন্য এটি দুর্দান্ত শুরু!
🔁 প্রতিক্রিয়া
আপনি যদি এই কর্মশালার সাথে আপনার অভিজ্ঞতা সম্পর্কে আমাদের বলতে চান তবে এই প্রতিক্রিয়া ফর্মটি ফাইল করার বিষয়টি বিবেচনা করুন।
আমরা আপনার প্রতিক্রিয়াটির পাশাপাশি কোডের টুকরোগুলির জন্য আপনাকে বিশেষভাবে গর্বিত করার জন্য স্বাগত জানাই।
🙏 ধন্যবাদ
লেখক লেখার ক্ষেত্রে সহায়তার জন্য এবং সমাধানটি পরীক্ষা করার জন্য মিরকো গিলিওলি এবং মরিজিও ইপসেলকে ডেটাটোনিক থেকে ধন্যবাদ জানাতে চাই।