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

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

صورة-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 عبر مجموعات الأمان ذات الصلة.

صورة-002: قواعد الوارد (inbound) لـ SG-for-EC2-for-WELR
الخطوة 2: إنشاء EC2 Instance
إنشاء EC2 instance في AWS هو عملية بسيطة. سيُستخدم زر Connect (اتصال) في الزاوية العلوية اليمنى من الصورة أدناه للاتصال بـ EC2.

صورة-003: EC2-for-WELR
قم بتثبيت جميع المتطلبات على EC2-for-WELR.
أولاً، يجب عليك الاتصال بسطر أوامر EC2. هناك العديد من الطرق للقيام بهذه الخطوة ولكن أبسطها هو الاتصال مباشرة عبر وحدة تحكم AWS الويب.

صورة-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)

صورة-005: قواعد الوارد (inbound) لـ SG-for-ALB-for-WELR
الخطوة 4: إنشاء 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

الخطوة 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

يمكن استخدام عناوين 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.
استعرض خدمتنا