دليل تعليمي حول إنشاء التطبيقات على خدمات أمازون السحابية (AWS)
تُعدّ خدمات أمازون السحابية (AWS) إحدى أشهر منصات الحوسبة السحابية في العالم. مع AWS، يمكنك إنشاء التطبيقات وتشغيلها دون الحاجة إلى شراء خوادم فعلية، أو إعداد مساحة تخزين، أو صيانة بنية تحتية خاصة بك. ستُرشدك هذه المقالة إلى كيفية إنشاء تطبيق بسيط على AWS باستخدام أسلوب شائع: نشر تطبيق ويب باستخدام خدمات الحوسبة (EC2)، وقاعدة بيانات مُدارة (RDS) كخيار إضافي، بالإضافة إلى مساحة تخزين ونطاق إذا لزم الأمر. على الرغم من أن المثال التالي عام، إلا أنه يُمكن تطبيقه على أنواع عديدة من التطبيقات.
-
1. التحضير الأولي: الحسابات والمفاهيم الأساسية
قبل البدء، تأكد من امتلاكك حسابًا على AWS. تقدم العديد من خدمات AWS طبقة مجانية (مجانية ضمن حدود معينة) مثالية للتدريب.
بعض المفاهيم المهمة التي تحتاج إلى فهمها:
– المنطقة: موقع مركز بيانات AWS (مثال: Singapore/ap-southeast-1). اختر أقرب منطقة لتقليل زمن الاستجابة.
– إدارة الهوية والوصول (IAM): نظام لإدارة الوصول. أفضل الممارسات: تجنب استخدام حساب الجذر في العمل اليومي.
– VPC (السحابة الخاصة الافتراضية): شبكة افتراضية حيث تعمل خدماتك.
– مجموعة الأمان: "جدار الحماية" لتنظيم الوصول الوارد/الصادر من الخادم.
من خلال فهم هذه الأمور الأربعة، سيكون من الأسهل عليك بكثير التنقل في أساسيات AWS.
-
2. إنشاء مستخدمي IAM وحسابات آمنة
الأمن هو أولويتنا القصوى دائمًا. سجّل الدخول إلى وحدة تحكم AWS بصلاحيات المستخدم الجذر، ثم:
1. افتح خدمة إدارة الهوية والوصول (IAM).
2. قم بإنشاء مستخدم جديد (على سبيل المثال `admin-dev`) وحدد خيار "منح المستخدم حق الوصول إلى وحدة تحكم إدارة AWS".
3. منح الإذن: يمكنك استخدام AdministratorAccess للتدريب (على الرغم من أنه في المشاريع الحقيقية يجب أن يكون الأمر أكثر تقييدًا).
4. قم بتمكين المصادقة متعددة العوامل (MFA) لزيادة الأمان.
بعد الانتهاء، قم بتسجيل الخروج من حساب الجذر وقم بتسجيل الدخول باستخدام مستخدم IAM الذي تم إنشاؤه حديثًا.
-
3. تحديد بنية التطبيق
في هذا الدرس التعليمي، سنقوم ببناء بنية بسيطة:
– EC2: تشغيل تطبيقات الويب (مثل Node.js/Express أو Python Flask أو PHP).
– قاعدة بيانات RDS اختيارية: قاعدة بيانات MySQL/PostgreSQL مُدارة، بحيث يتم تخزين البيانات بشكل منظم.
– S3 (اختياري): يخزن الملفات الثابتة مثل الصور أو المستندات أو النسخ الاحتياطية.
– المسار 53 (اختياري): إدارة النطاقات.
– CloudWatch: مراقبة أساسية.
إذا كنت في بداية الطريق، فركز أولاً على EC2 لتشغيل تطبيقاتك.
-
4. إنشاء خادم EC2
أ) إنشاء مثيل
1. قم بتسجيل الدخول إلى خدمة EC2.
2. انقر فوق تشغيل المثيل.
3. حدد نظام التشغيل، على سبيل المثال Ubuntu Server 22.04 LTS.
4. حدد نوع المثيل: بالنسبة للطبقة المجانية، استخدم `t2.micro` أو `t3.micro` (رهناً بالتوافر).
5. أنشئ أو اختر زوج مفاتيح (مثلاً، `aws-key.pem`). احتفظ بملف `.pem` في مكان آمن لأنه سيُستخدم لبروتوكول SSH.
ب) تكوين الشبكة وجدار الحماية
– تأكد من أن المثيل موجود في شبكة VPC الافتراضية (للممارسة فقط).
– تعيين مجموعة الأمان:
- المنفذ 22 (SSH) فقط من عنوان IP الخاص بك (على سبيل المثال `My IP`)
– المنفذ 80 (HTTP) من `0.0.0.0/0` (عام)
- المنفذ 443 (HTTPS) من `0.0.0.0/0` إذا تم استخدام SSL لاحقًا
ملاحظة: فتح بروتوكول SSH للعامة أمر محفوف بالمخاطر. احرص دائمًا على تقييد عناوين IP.
انقر فوق "تشغيل" وانتظر حتى يتم تشغيل البرنامج.
-
5. تسجيل الدخول إلى الخادم عبر SSH
في نظام ويندوز، يمكنك استخدام WSL أو PuTTY. أما في نظامي macOS/Linux، فيمكنك القيام بذلك مباشرةً من سطر الأوامر.
1. تغيير مفتاح الإذن:
"" باش
chmod 400 aws-key.pem
"`
2. الاتصال بالخادم عبر SSH (باستخدام عنوان IPv4 العام من EC2):
"" باش
ssh -i aws-key.pem ubuntu@PUBLIC_IP
"`
إذا نجحت العملية، فأنت الآن على خادم AWS Ubuntu.
-
6. تثبيت خادم الويب ووقت تشغيل التطبيق
إليك مثال لتطبيق Node.js، حيث أنه يستخدم على نطاق واسع في الويب الحديث.
أ) تحديث وتثبيت التبعيات
"" باش
sudo apt update وsudo apt upgrade -y
sudo apt install -y curl git
"`
ب) تثبيت Node.js (إصدار LTS)
"" باش
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
عقدة -v
npm -v
"`
-
7. إنشاء تطبيق بسيط
أنشئ مجلدًا للمشروع:
"" باش
أنشئ مجلدًا باسم myapp ثم انتقل إليه.
npm الحرف الأول
تثبيت npm السريع
"`
أنشئ ملف `index.js`:
"`js
const express = require(“express”);
تطبيق const = express () ؛
app.get(“/”, (req, res) => {
res.send(“مرحباً! تطبيقك يعمل على AWS EC2.”);
})؛
app.listen(3000, () => console.log(“Server running on port 3000”));
"`
قم بتشغيل التطبيق:
"" باش
عقدة index.js
"`
حاول الوصول من خلال متصفح:
– `http://PUBLIC_IP:3000`
مع ذلك، فإن المنفذ 3000 غير مفتوح حاليًا في مجموعة الأمان. يمكنك:
1) افتح المنفذ 3000 في مجموعة الأمان، أو
2) استخدم خادم وكيل عكسي (موصى به أكثر) بحيث يظل التطبيق على المنفذ الداخلي ولكن يمكن الوصول إليه عبر المنفذ 80/443.
-
8. استخدام Nginx كخادم وكيل عكسي (الوصول عبر المنفذ 80)
تثبيت نجينكس:
"" باش
sudo apt install -y nginx
sudo systemctl تمكين nginx
sudo systemctl start nginx
"`
إعداد تكوين Nginx:
"" باش
sudo nano /etc/nginx/sites-available/myapp
"`
محتوى التكوين:
"`nginx
الخادم {
80 الاستماع.
اسم الخادم _؛
موقع / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1 ؛
proxy_set_header ترقية $ http_upgrade؛
ترقية اتصال proxy_set_header؛
proxy_set_header المضيف $ host؛
proxy_cache_bypass $http_upgrade;
}
}
"`
تفعيل الإعدادات:
"" باش
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
سودو systemctl إعادة تحميل nginx
"`
الوصول الآن:
– `http://PUBLIC_IP/`
يعمل التطبيق على المنفذ 3000 ولكن الجمهور يصل إليه عبر المنفذ 80.
-
9. تشغيل التطبيقات بشكل مستمر باستخدام PM2
لمنع تعطل التطبيق عند انقطاع اتصال SSH، استخدم PM2:
"" باش
sudo npm install -g pm2
pm2 start index.js –name myapp
حفظ pm2
بدء تشغيل pm2
"`
سيوفر الأمر `pm2 startup` تعليمات إضافية. شغّل الأمر المعروض لتشغيل التطبيق تلقائيًا عند إعادة تشغيل الخادم.
-
10. (اختياري) إضافة قاعدة بيانات باستخدام RDS
إذا كان تطبيقك يتطلب قاعدة بيانات، فإن RDS يجعل الأمر سهلاً لأن AWS تدير عمليات النسخ الاحتياطي والتحديث والتوسع.
خطوات مختصرة:
1. افتح خدمة RDS → أنشئ قاعدة بيانات.
2. اختر MySQL أو PostgreSQL (تتوفر قواعد الطبقة المجانية في بعض التكوينات).
3. قم بتعيين اسم المستخدم/كلمة المرور.
4. تأكد من أن مثيل RDS موجود في نفس VPC مثل EC2.
5. قم بتعيين مجموعة أمان RDS بحيث تقبل الاتصالات فقط من مجموعة أمان EC2 (وليس من العامة).
بمجرد أن تصبح قاعدة البيانات جاهزة للعمل، احصل على نقطة نهاية RDS وقم بالاتصال بها من تطبيقك باستخدام برنامج تشغيل قاعدة البيانات.
-
11. (اختياري) تفعيل بروتوكول HTTPS باستخدام شهادة SSL
في بيئة الإنتاج، يُعدّ استخدام بروتوكول HTTPS إلزاميًا. الطريقة النموذجية:
- استخدم نطاقًا (على سبيل المثال من Route 53 أو مسجل نطاقات آخر).
– قم بتثبيت SSL عبر Let's Encrypt (Certbot) على EC2.
باختصار:
"" باش
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
"`
اتبع المعالج لاختيار نطاق وتمكين إعادة التوجيه إلى HTTPS.
-
12. المراقبة والتكاليف
توفر AWS خدمة CloudWatch لعرض مقاييس مثل وحدة المعالجة المركزية والشبكة وسجلات محددة. كما يُنصح بمراقبة التكاليف لتجنب أي خسائر.
نصائح مهمة:
– تفعيل تنبيه الفواتير في CloudWatch (على سبيل المثال، التنبيه إذا تجاوزت الرسوم 5 دولارات).
– قم بإيقاف تشغيل الجهاز عند عدم استخدامه.
– قم بإزالة الموارد غير المستخدمة (موازنات التحميل، EBS، عناوين IP المرنة، اللقطات) لأنها قد لا تزال تتكبد تكاليف.
-
غطاء
تهانينا! لقد تعلمت أساسيات بناء تطبيق على AWS باستخدام EC2، وتشغيل تطبيق ويب ، وإعداد خادم وكيل عكسي Nginx، وجعله يعمل باستمرار باستخدام PM2. كما اكتسبت نظرة عامة على خدمات إضافية مثل RDS لقواعد البيانات، وS3 للتخزين، وشهادات HTTPS للأمان.
إذا كنت ترغب في الارتقاء بمستواك، فإن الخطوات التالية عادة ما تكون كالتالي:
– النشر الآلي باستخدام التكامل المستمر/التسليم المستمر (GitHub Actions + SSH، أو AWS CodeDeploy)،
– استخدام الحاويات مع Docker وأنظمة التنسيق مثل ECS أو EKS،
– استخدام بنية بدون خادم مع Lambda + بوابة API.
إذا رغبت، يُرجى تحديد نوع التطبيق الذي تقوم بإنشائه (Node.js، Laravel، Django، React، إلخ) والغرض منه (عرض توضيحي، إنتاجي، واسع النطاق). يمكنني تخصيص الدليل التعليمي بخطوات أكثر تحديدًا.