ديف أوبس

استضافة مواقع آمنة بـ Nginx و PHP-FPM

كيفية استضافة مجموعة مواقع بشكل آمن باستخدام Nginx و PHP-FPM على أوبنتو 14.04

تعتبر عملية استضافة المواقع بشكل آمن وفعّال واحدة من أهم المواضيع التي يجب على مسؤولي الخوادم والمطورين معرفتها. عندما يتعلق الأمر بأوبنتو 14.04، فإن استخدام الأدوات الشائعة مثل Nginx و PHP-FPM يعد أحد الحلول المثالية للاستضافة. يتضمن هذا المقال شرحاً مفصلاً حول كيفية إعداد بيئة استضافة متعددة المواقع باستخدام Nginx و PHP-FPM على أوبنتو 14.04 مع التأكيد على أفضل الممارسات من أجل ضمان الأمان.

المتطلبات الأساسية

قبل البدء في تثبيت وإعداد Nginx و PHP-FPM على أوبنتو 14.04، يجب التأكد من أنك تمتلك بعض الأدوات الأساسية، مثل:

  1. أوبنتو 14.04 مثبتة وتعمل بشكل صحيح.

  2. وصول إلى الخادم كـ root أو مستخدم مع صلاحيات sudo.

  3. معرفة بأساسيات Linux وأوامر الطرفية.

  4. تثبيت البرامج الضرورية مثل Git و vim و curl.

1. تثبيت Nginx على أوبنتو 14.04

في البداية، يجب تثبيت Nginx على الخادم. Nginx هو خادم ويب عالي الأداء يستخدم كموازن تحميل وأيضًا كخادم بروكسي عكسي. لتنفيذ التثبيت:

تحديث النظام

قبل تثبيت أي برنامج، من الأفضل دائمًا تحديث قائمة الحزم الموجودة على الخادم:

bash
sudo apt-get update sudo apt-get upgrade

تثبيت Nginx

لتثبيت Nginx، قم بتشغيل الأمر التالي:

bash
sudo apt-get install nginx

بعد التثبيت، يمكن التأكد من أن الخدمة تعمل بشكل صحيح عبر الأمر التالي:

bash
sudo systemctl status nginx

إذا كنت تريد بدء الخدمة تلقائيًا مع تشغيل النظام:

bash
sudo systemctl enable nginx

فتح جدار الحماية (Firewall) لخدمة Nginx

للسماح بالوصول إلى الخادم عبر Nginx، تأكد من فتح المنافذ المناسبة في جدار الحماية باستخدام الأوامر التالية:

bash
sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS'

2. تثبيت PHP-FPM على أوبنتو 14.04

PHP-FPM هو تطبيق لمعالجة الطلبات الديناميكية في PHP. بعد تثبيت Nginx، الخطوة التالية هي تثبيت PHP و PHP-FPM. يمكن القيام بذلك عبر الأوامر التالية:

تثبيت PHP و PHP-FPM

bash
sudo apt-get install php5-fpm php5-mysql php5-cli php5-curl php5-json

لتأكد من أن PHP-FPM يعمل بشكل صحيح، يمكنك التحقق من حالة الخدمة:

bash
sudo systemctl status php5-fpm

تعديل إعدادات PHP-FPM

تأكد من إعداد PHP-FPM ليعمل مع Nginx بشكل صحيح. ابدأ بتعديل ملف الإعدادات:

bash
sudo vim /etc/php5/fpm/pool.d/www.conf

ابحث عن السطر الذي يحتوي على:

ini
listen = /var/run/php5-fpm.sock

وتأكد من أنه موجه إلى المسار الصحيح حيث سيتم الوصول إليه من قبل Nginx.

3. إعداد المواقع المتعددة على Nginx

من أهم الميزات التي يوفرها Nginx هي القدرة على استضافة أكثر من موقع باستخدام تكوينات مختلفة للمجالات (virtual hosts). دعونا نرى كيفية إعداد أكثر من موقع.

إنشاء ملفات المواقع

في Nginx، يتم تعريف كل موقع عبر ملف تكوين منفصل داخل مجلد /etc/nginx/sites-available/. سنبدأ بإنشاء ملف تكوين جديد لموقع الويب الأول. على سبيل المثال، إذا كان لدينا موقع يسمى example1.com، سنقوم بإنشاء ملف له:

bash
sudo vim /etc/nginx/sites-available/example1.com

أضف التكوين التالي:

nginx
server { listen 80; server_name example1.com www.example1.com; root /var/www/example1.com; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

إنشاء رابط رمزي (Symbolic Link)

بعد إنشاء ملف التكوين في sites-available/، يجب أن تنشئ رابطًا رمزيًا في مجلد sites-enabled/ لتمكين الموقع:

bash
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/

إنشاء المجلدات اللازمة

الآن، يجب إنشاء المجلدات التي ستستضيف ملفات الموقع:

bash
sudo mkdir -p /var/www/example1.com

ثم قم بتحميل أو إنشاء ملفات الموقع داخل هذا المجلد.

التحقق من التكوين وإعادة تحميل Nginx

قبل إعادة تحميل Nginx للتأكد من أن كل شيء يعمل بشكل صحيح، تحقق من صحة التكوين:

bash
sudo nginx -t

إذا كانت هناك أي أخطاء، سيتم عرضها هنا. إذا كان كل شيء صحيحًا، أعد تحميل Nginx:

bash
sudo systemctl reload nginx

4. تأمين الخادم باستخدام SSL

من الخطوات الأساسية لضمان أمان المواقع التي تستضيفها هو تأمينها باستخدام بروتوكول HTTPS. يمكن استخدام Let’s Encrypt للحصول على شهادة SSL مجانية.

تثبيت Certbot

Certbot هو أداة توفر طريقة سهلة للحصول على شهادات SSL مجانية من Let’s Encrypt. لتثبيته:

bash
sudo apt-get install python-certbot-nginx

الحصول على شهادة SSL

لحصول على شهادة SSL للموقع، استخدم الأمر التالي:

bash
sudo certbot --nginx -d example1.com -d www.example1.com

ستتم عملية التحقق من ملكية النطاق، وإذا تمت بنجاح، سيتم تثبيت الشهادة على الخادم بشكل تلقائي.

إعداد تجديد الشهادات

تقوم Let’s Encrypt بتقديم شهادات صالحة لمدة 90 يومًا فقط. لضمان تجديد الشهادات بشكل تلقائي، قم بإعداد cron job لتجديد الشهادات:

bash
sudo crontab -e

ثم أضف السطر التالي:

bash
0 3 * * * certbot renew --quiet

5. تحسين أداء Nginx و PHP-FPM

لتحقيق أقصى استفادة من Nginx و PHP-FPM في بيئة استضافة متعددة المواقع، يجب تحسين بعض الإعدادات.

تحسين إعدادات Nginx

  1. تمكين ضغط الملفات: لضغط المحتوى المرسل للمستخدمين، يمكنك تمكين Gzip في Nginx.

nginx
gzip on; gzip_types text/plain application/xml text/css application/javascript text/javascript application/x-javascript;
  1. تحديد حجم الذاكرة المخبأة (Cache): يساعد تكوين ذاكرة تخزين مؤقت في تحسين الأداء بشكل كبير.

nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m max_size=100m inactive=60m use_temp_path=off;

تحسين إعدادات PHP-FPM

  1. زيادة الحد الأقصى لعدد العمليات: لتحسين الأداء، يمكنك تعديل قيمة pm.max_children في ملف إعدادات PHP-FPM.

ini
pm.max_children = 50
  1. تمكين الخيوط (Threads): يمكنك تحسين أداء PHP-FPM باستخدام دعم الخيوط في البيئة عالية التحميل.

ini
pm = dynamic

6. مراقبة الأداء والتخزين

من الضروري مراقبة أداء الخادم والموارد لضمان استقرار المواقع. يمكن استخدام أدوات مثل htop و top لمراقبة استهلاك المعالج والذاكرة.

تسجيل الدخول إلى الخادم

استخدم أوامر مثل htop أو top لمعرفة العمليات الجارية واستهلاك الموارد:

bash
top

الخاتمة

باستخدام هذه الإعدادات، يمكنك استضافة مجموعة مواقع بشكل آمن وفعّال على أوبنتو 14.04 باستخدام Nginx و PHP-FPM. من خلال اتباع الممارسات الجيدة المتعلقة بالأمان والأداء، ستحصل على بيئة مستقرة وقوية لاستضافة المواقع.