ديف أوبس

نشر تطبيق PHP باستخدام Ansible

نشر تطبيق PHP باستخدام Ansible – إعداد مفاتيح SSH والجدار الناري

تعتبر أتمتة النشر واحدة من أبرز الاتجاهات في تطوير البرمجيات الحديثة، حيث يتم استخدام أدوات متنوعة لزيادة الكفاءة وتقليل الأخطاء البشرية. من بين هذه الأدوات، يتمتع Ansible بشعبية كبيرة لسهولة استخدامه ومرونته في إدارة الخوادم وتهيئة الأنظمة. في هذا المقال، سنتناول كيفية نشر تطبيق PHP باستخدام Ansible، مع التركيز على إعداد مفاتيح SSH والجدار الناري لضمان عملية نشر آمنة وسلسة.

ما هو Ansible؟

Ansible هو أداة أتمتة مفتوحة المصدر تُستخدم في تكوين وإدارة الأنظمة عن بُعد، وتوزيع التطبيقات، وتنفيذ مهام متكررة. تعتمد Ansible على مبدأ “إدارة الحالة” (Declarative Management) حيث يُعرّف المستخدم كيفية تكوين النظام بدلاً من كتابة خطوات تنفيذية. يوفر Ansible العديد من المزايا منها البساطة، وقلة الحاجة إلى تثبيت أي برامج إضافية على الخوادم البعيدة.

خطوة 1: إعداد بيئة العمل

قبل البدء في استخدام Ansible لنشر تطبيق PHP، يجب التأكد من أن البيئة معدة بشكل صحيح. وتشمل هذه البيئة:

  1. خوادم الهدف (Target Servers): الخوادم التي سيتم نشر تطبيق PHP عليها.

  2. أنظمة تشغيل الخوادم: في هذا المقال، نفترض أن الخوادم تعمل على توزيعة لينكس مثل Ubuntu أو CentOS.

  3. Ansible: يجب تثبيت Ansible على الجهاز المحلي أو على جهاز يتحكم في الخوادم.

خطوة 2: إعداد مفاتيح SSH

مفاتيح SSH هي طريقة آمنة للوصول إلى الخوادم البعيدة دون الحاجة إلى استخدام كلمات المرور. لا يقتصر الأمر على تحسين الأمان فحسب، بل يساهم في أتمتة العمليات أيضًا، حيث يمكن لـ Ansible استخدام هذه المفاتيح للوصول إلى الخوادم دون الحاجة إلى تدخل يدوي.

2.1 إنشاء مفاتيح SSH

لإنشاء مفتاح SSH، يمكن للمستخدم استخدام الأمر التالي:

bash
ssh-keygen -t rsa -b 2048

سيطلب منك هذا الأمر تحديد موقع لحفظ المفتاح، ويفضل استخدام الموقع الافتراضي ~/.ssh/id_rsa. بعد إنشاء المفتاح، يجب عليك نسخ المفتاح العام (~/.ssh/id_rsa.pub) إلى الخوادم التي ستقوم بالاتصال بها باستخدام الأمر ssh-copy-id:

bash
ssh-copy-id user@server_ip

يتم استخدام هذا الأمر لنقل المفتاح العام إلى الخادم البعيد، مما يسمح لك بتسجيل الدخول إلى الخادم دون الحاجة إلى إدخال كلمة مرور.

2.2 التحقق من الاتصال

بمجرد نسخ المفتاح إلى الخادم، يمكن التحقق من الاتصال عبر SSH باستخدام الأمر التالي:

bash
ssh user@server_ip

إذا تم الاتصال بنجاح دون الحاجة إلى إدخال كلمة مرور، فهذا يعني أن المفاتيح تم إعدادها بشكل صحيح.

خطوة 3: إعداد الجدار الناري

من الضروري إعداد الجدار الناري (Firewall) لضمان أن الخادم آمن ضد الهجمات الخارجية. سيساعد الجدار الناري في تحديد السماح بالوصول فقط من المصادر الموثوقة.

3.1 تكوين الجدار الناري باستخدام ufw

في حال كانت الخوادم تستخدم أداة ufw (Uncomplicated Firewall)، يمكن فتح المنافذ المطلوبة لتطبيق PHP باستخدام الأوامر التالية:

  • فتح منفذ HTTP (80):

bash
sudo ufw allow 80/tcp
  • فتح منفذ HTTPS (443):

bash
sudo ufw allow 443/tcp
  • فتح منفذ SSH (22):

bash
sudo ufw allow 22/tcp
  • التحقق من حالة الجدار الناري:

bash
sudo ufw status

3.2 تكوين الجدار الناري باستخدام firewalld

إذا كانت الخوادم تستخدم أداة firewalld، يمكن فتح المنافذ باستخدام الأوامر التالية:

  • فتح منفذ HTTP (80):

bash
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  • فتح منفذ HTTPS (443):

bash
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
  • فتح منفذ SSH (22):

bash
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
  • إعادة تحميل الإعدادات لتفعيل التغييرات:

bash
sudo firewall-cmd --reload

خطوة 4: إعداد Ansible لنشر تطبيق PHP

الآن بعد أن قمنا بإعداد مفاتيح SSH والجدار الناري، يمكننا إعداد Ansible لنشر تطبيق PHP على الخوادم.

4.1 إنشاء ملف Ansible Inventories

ملف inventory في Ansible يحتوي على قائمة بالخوادم التي ستتم إدارة التطبيقات عليها. يمكن إنشاء ملف inventory يحتوي على عناوين IP الخاصة بالخوادم مثل:

ini
[web_servers] server1 ansible_host=192.168.1.10 ansible_user=user server2 ansible_host=192.168.1.11 ansible_user=user

4.2 كتابة ملف Playbook

الخطوة التالية هي إنشاء Playbook الذي سيحتوي على الأوامر التي يجب أن ينفذها Ansible. يتم كتابة Playbook باستخدام YAML (Yet Another Markup Language). إليك مثالًا على Playbook لنشر تطبيق PHP:

yaml
--- - name: نشر تطبيق PHP hosts: web_servers become: yes tasks: - name: تحديث الحزم apt: update_cache: yes upgrade: yes - name: تثبيت خادم الويب Apache apt: name: apache2 state: present - name: تثبيت PHP apt: name: php libapache2-mod-php state: present - name: رفع ملفات التطبيق copy: src: /local/path/to/your/php/app/ dest: /var/www/html/ owner: www-data group: www-data mode: '0755' - name: إعادة تشغيل خدمة Apache service: name: apache2 state: restarted

في هذا المثال:

  • يتم تحديث الحزم وتثبيت Apache وPHP على الخوادم.

  • يتم رفع ملفات تطبيق PHP من المسار المحلي إلى الخوادم.

  • أخيرًا، يتم إعادة تشغيل خدمة Apache لتطبيق التغييرات.

4.3 تشغيل Playbook

بعد إعداد Playbook، يمكن تشغيله باستخدام الأمر التالي:

bash
ansible-playbook -i inventory deploy_php_app.yml

سيقوم Ansible بتنفيذ الأوامر المذكورة في Playbook على الخوادم المحددة في ملف inventory.

خطوة 5: التحقق من النشر

بمجرد تنفيذ Playbook، يجب التحقق من أن التطبيق قد تم نشره بنجاح. يمكن الوصول إلى التطبيق عبر متصفح الويب باستخدام عنوان IP الخاص بالخادم:

cpp
http://192.168.1.10

إذا كانت عملية النشر ناجحة، يجب أن ترى تطبيق PHP يعمل على الخادم.

الخاتمة

استخدام Ansible لنشر تطبيق PHP يعد من الطرق الفعالة والآمنة لتنفيذ عمليات النشر عبر العديد من الخوادم. من خلال إعداد مفاتيح SSH، يمكنك ضمان أمان الاتصال بين الخوادم، بينما يساعد الجدار الناري في تأمين الخوادم ضد الهجمات الخارجية. باستخدام Ansible، يمكن أتمتة عملية نشر التطبيقات، مما يوفر الوقت ويقلل من الأخطاء البشرية.