الحوسبة السحابية
6 دقيقة للقراءة

استضافة تطبيق ويب على AWS EC2

دليل شامل لاستضافة تطبيق ويب على AWS EC2، وتثبيت Apache، وتكوين FTP، ودمج Load Balancer و Route53.

ن
نجم الدين دمير
21 يوليو 2023
جاري التحميل...

استضافة تطبيق ويب على AWS EC2

AWS EC2 Web Hosting
AWS EC2 Web Hosting
هناك العديد من الطرق لاستضافة تطبيق ويب في بيئة AWS. يمكن أن يكون تطبيق الويب الخاص بك موقعًا تقليديًا أو مشروع API. سيُشار إلى كلا النوعين من الآن فصاعدًا باسم "تطبيق الويب" (web app).

المقدمة

هناك العديد من الطرق لاستضافة تطبيق ويب في بيئة AWS. يمكن أن يكون تطبيق الويب الخاص بك موقعًا تقليديًا أو مشروع API. سيُشار إلى كلا النوعين من الآن فصاعدًا باسم "تطبيق الويب" (web app). فيما يلي بعض الطرق التي يمكننا تطبيقها لاستضافة تطبيق ويب على AWS:
  1. استضافة تطبيق ويب في حاوية S3
  2. استضافة تطبيق ويب في حاويات ECS أو EKS أو Fargate
  3. استضافة تطبيق ويب باستخدام Elastic Beanstalk
  4. استضافة تطبيق ويب مباشرة على EC2
[!NOTE] على الرغم من أن الخيارات 1 و 2 و 3 هي مناهج حديثة لاستضافة المحتوى على AWS، إلا أننا في هذا المقال نستهدف الأشخاص الذين عملوا كثيرًا على الأنظمة القديمة ويريدون الانتقال إلى بيئة AWS بعاداتهم القديمة!
هدفنا هو تقديم سريع لتدفق Route53 و Application Load Balancer و Security Groups وما إلى ذلك مع EC2.
في هذا المقال سنفحص الخيار الأخير. هناك العديد من أنظمة التشغيل التي يمكن استخدامها في EC2. سنستخدم Linux بأقل تكوين متاح ضمن "Free Tier" (الطبقة المجانية). لمزيد من المعلومات حول AWS Free Tier، انقر هنا.
يمكن استخدام Amazon EC2 مباشرة لاستضافة تطبيق ويب. في هذا المقال، يتم شرح جميع الخطوات المطلوبة لإنجاز مثل هذه المهمة خطوة بخطوة.

الخلفية

ماذا سنفعل؟

يمكن أن تكون البنية الأساسية كما هو موضح أدناه:
هندسة النظام
هندسة النظام
صورة-001: عرض النظام الرئيسي
لنفترض أن هدفك هو استضافة موقعك على جهاز AWS EC2. لتبسيط التطبيق، سيتم نشر صفحة HTML ثابتة على خادم Apache Web في AWS EC2. سنجعل الوصول إلى مجلد www الافتراضي لـ Apache ممكنًا عبر FTP. بالإضافة إلى هذه المتطلبات، سيتم توجيه اسم نطاق (domain) إلى تطبيق الويب هذا عبر AWS Route53.
لتصميم البنية الموضحة في صورة-001، سننشئ عناصر AWS بالترتيب وفقًا للأرقام داخل الدوائر الرمادية.
لنفترض أن اسم نطاقنا هو WELR.com ونريد استضافة عناصره التشغيلية على EC2.
جميع الخطوات لاستضافة محتوى WELR.com على AWS EC2 يمكن أن تكون كما يلي.

الخطوة 1: إنشاء مجموعة أمان في AWS

ستُستخدم مجموعة الأمان هذه لـ EC2. يمكن اعتبار مجموعة الأمان كجدار حماية للكائن المرتبط بها.
قم بتعيين جميع المنافذ الواردة (inbound) كما هو موضح أدناه:
  • 20-21 (FTP)
  • 1024-1048 (FTP)، اختياري
  • 22 (SSH)
  • 80 (HTTP)
  • 8080 (HTTP مخصص)، اختياري
  • 443 (HTTPS)
المستطيل الأحمر في الصورة أدناه مهم لإظهار التدفق من ALB إلى EC2 عبر مجموعات الأمان ذات الصلة.
قواعد Inbound
قواعد Inbound
صورة-002: قواعد الوارد (inbound) لـ SG-for-EC2-for-WELR

الخطوة 2: إنشاء EC2 Instance

إنشاء EC2 instance في AWS هو عملية بسيطة. سيُستخدم زر Connect (اتصال) في الزاوية العلوية اليمنى من الصورة أدناه للاتصال بـ EC2.
إنشاء EC2
إنشاء EC2
صورة-003: EC2-for-WELR
قم بتثبيت جميع المتطلبات على EC2-for-WELR.
أولاً، يجب عليك الاتصال بسطر أوامر EC2. هناك العديد من الطرق للقيام بهذه الخطوة ولكن أبسطها هو الاتصال مباشرة عبر وحدة تحكم AWS الويب.
اتصال EC2
اتصال EC2
صورة-004: الاتصال بـ EC2-for-WELR
بعد الضغط على زر Connect، ستتصل بسطر أوامر EC2 كـ ec2-user.

2.1- تثبيت Apache

TEXT
> sudo s
> yum update -
> yum install -y httpd.x86_6
> systemctl start httpd.servic
> systemctl enable httpd.service
ستكون جميع ملفات تطبيق الويب في مجلد الويب الافتراضي لـ Apache.
مجلد الويب الافتراضي لـ Apache هو دليل /var/www/html.

2.2 - تثبيت FTP

TEXT
> sudo su
> yum update -y
> yum install vsftpd
			
> sudo vi /etc/vsftpd/vsftpd.conf
يجب عليك إجراء بعض التغييرات الموضحة أدناه في ملف تكوين FTP.
يجب أن تكون جميع هذه الأسطر موجودة كما هو موضح في ملف التكوين. يجب أن تعرف كيفية استخدام محرر vi. إذا كنت ستستخدم محرر vi لأول مرة، انظر هنا.
TEXT
# قم بإزالة علامات # من جميع الأسطر التالية
anonymous_enable=NO
#
local_enable=YES
#
write_enable=YES
#
local_umask=022
#
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
chroot_local_user=YES
write_enable=YES
allow_writeable_chroot=YES
#
listen=NO
#
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=18.170.116.xxx
لإعادة تشغيل خدمة vsftpd، يمكن استخدام أحد ما يلي:
TEXT
> /etc/init.d/vsftpd restart
أو:
TEXT
> systemctl restart vsftpd
لإضافة مستخدم لـ FTP، قم بما يلي في سطر أوامر EC2:
TEXT
> adduser awsftpuse
> passwd awsftpuse
> usermod -a -G root awsftpuser
> usermod -d /var/www/html/ awsftpuse
> chown -R awsftpuser /var/www/htm
> systemctl restart vsftpd

2.3 - تثبيت عميل FTP

على سبيل المثال، عميل Filezilla على Windows.
بعد إنشاء جميع العناصر في AWS، حاول الاتصال باستخدام عميل FTP وتحميل ملف. يجب أن تكون قادرًا على تحميل ملف index.html إلى مجلد FTP الويب على EC2.

الخطوة 3: إنشاء مجموعة أمان لـ ALB

قم بتعيين جميع المنافذ الواردة (inbound) كما هو موضح أدناه:
  • 20-21 (FTP)
  • 1024-1048 (FTP)، اختياري
  • 22 (SSH)
  • 80 (HTTP)
  • 8080 (HTTP مخصص)، اختياري
  • 443 (HTTPS)
قواعد ALB Inbound
قواعد ALB Inbound
صورة-005: قواعد الوارد (inbound) لـ SG-for-ALB-for-WELR

الخطوة 4: إنشاء Target Group

Target Group
Target Group
صورة-006: Target Group TG-for-WELR

الخطوة 5: إنشاء Application Load Balancer

يجب أن يحتوي ALB هذا على مجموعة الهدف TG-for-WELR.
مجموعة الهدف (Target group) هي مجموعة من EC2. ومع ذلك، في الوقت الحالي تحتوي فقط على instance EC2-for-WELR.
بالإضافة إلى ذلك، يجب أن يحتوي ALB هذا على مجموعة الأمان SG-for-ALB-for-WELR.
صورة-007: Application Load Balancer ALB-for-WELR
إنشاء ALB
إنشاء ALB

الخطوة 6: الأذونات بين مجموعات الأمان

أضف قواعد واردة (inbound) إلى SG-for-EC2-for-WELR لقبول جميع طلبات TCP الواردة من SG-for-ALB-for-WELR.
التدفق بين مجموعات الأمان
التدفق بين مجموعات الأمان
صورة-008: السماح بالتدفق من ALB إلى EC2 عبر مجموعات الأمان

الخطوة 7: إنشاء Route53 Hosted Zone

يجب أن تحتوي على أربعة سجلات (record) كما يلي:
  • NS و SOA يتم إنشاؤهما تلقائيًا
  • أنشئ Record A. كما هو موضح في الصورة أدناه
  • أنشئ Record CNAME - لـ welr.com
صورة-009 - سجلات Route53
سجلات Route53
سجلات Route53
يمكن استخدام عناوين NS في واجهة إدارة اسم النطاق لتوجيه اسم النطاق إلى تطبيق الويب الذي تستضيفه في EC2 Apache.

الخلاصة

كما ذُكر في بداية هذا المقال، هناك العديد من الطرق لاستضافة تطبيق ويب في أي بيئة سحابية. لقد أجرينا بعض الاستعراضات على AWS EC2. كما رأينا، نفترض أننا نشرنا العناصر التشغيلية لتطبيق الويب يدويًا إلى Apache عبر FTP. ومع ذلك، يمكن أتمتة هذه العملية باستخدام أي أداة CI/CD مع أوامر FTP.
الهدف الرئيسي من هذا المقال هو إظهار كيفية استضافة تطبيق ويب في بيئة AWS على EC2 خلف Route53 وموازنات التحميل (Load Balancers).

ما تعلمناه:

  • إنشاء وتكوين EC2 instance
  • تثبيت خادم Apache web
  • تكوين FTP وإضافة مستخدم
  • إعدادات Security Group
  • إعداد Application Load Balancer
  • توجيه النطاق باستخدام Route53

☁️ خدمات الحوسبة السحابية

نقدم خدمات تصميم البنية التحتية والترحيل والإدارة والتحسين على منصات AWS و Azure و Google Cloud.

استعرض خدمتنا

📞 تواصل معنا

للحصول على معلومات مفصلة حول حلول AWS والحوسبة السحابية، تواصل مع فريقنا.

التواصل