كيفية استضافة مجموعة مواقع بشكل آمن باستخدام Nginx و PHP-FPM على أوبنتو 14.04
تعتبر عملية استضافة المواقع بشكل آمن وفعّال واحدة من أهم المواضيع التي يجب على مسؤولي الخوادم والمطورين معرفتها. عندما يتعلق الأمر بأوبنتو 14.04، فإن استخدام الأدوات الشائعة مثل Nginx و PHP-FPM يعد أحد الحلول المثالية للاستضافة. يتضمن هذا المقال شرحاً مفصلاً حول كيفية إعداد بيئة استضافة متعددة المواقع باستخدام Nginx و PHP-FPM على أوبنتو 14.04 مع التأكيد على أفضل الممارسات من أجل ضمان الأمان.
المتطلبات الأساسية
قبل البدء في تثبيت وإعداد Nginx و PHP-FPM على أوبنتو 14.04، يجب التأكد من أنك تمتلك بعض الأدوات الأساسية، مثل:
-
أوبنتو 14.04 مثبتة وتعمل بشكل صحيح.
-
وصول إلى الخادم كـ root أو مستخدم مع صلاحيات sudo.
-
معرفة بأساسيات Linux وأوامر الطرفية.
-
تثبيت البرامج الضرورية مثل Git و vim و curl.
1. تثبيت Nginx على أوبنتو 14.04
في البداية، يجب تثبيت Nginx على الخادم. Nginx هو خادم ويب عالي الأداء يستخدم كموازن تحميل وأيضًا كخادم بروكسي عكسي. لتنفيذ التثبيت:
تحديث النظام
قبل تثبيت أي برنامج، من الأفضل دائمًا تحديث قائمة الحزم الموجودة على الخادم:
bashsudo apt-get update sudo apt-get upgrade
تثبيت Nginx
لتثبيت Nginx، قم بتشغيل الأمر التالي:
bashsudo apt-get install nginx
بعد التثبيت، يمكن التأكد من أن الخدمة تعمل بشكل صحيح عبر الأمر التالي:
bashsudo systemctl status nginx
إذا كنت تريد بدء الخدمة تلقائيًا مع تشغيل النظام:
bashsudo systemctl enable nginx
فتح جدار الحماية (Firewall) لخدمة Nginx
للسماح بالوصول إلى الخادم عبر Nginx، تأكد من فتح المنافذ المناسبة في جدار الحماية باستخدام الأوامر التالية:
bashsudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
2. تثبيت PHP-FPM على أوبنتو 14.04
PHP-FPM هو تطبيق لمعالجة الطلبات الديناميكية في PHP. بعد تثبيت Nginx، الخطوة التالية هي تثبيت PHP و PHP-FPM. يمكن القيام بذلك عبر الأوامر التالية:
تثبيت PHP و PHP-FPM
bashsudo apt-get install php5-fpm php5-mysql php5-cli php5-curl php5-json
لتأكد من أن PHP-FPM يعمل بشكل صحيح، يمكنك التحقق من حالة الخدمة:
bashsudo systemctl status php5-fpm
تعديل إعدادات PHP-FPM
تأكد من إعداد PHP-FPM ليعمل مع Nginx بشكل صحيح. ابدأ بتعديل ملف الإعدادات:
bashsudo vim /etc/php5/fpm/pool.d/www.conf
ابحث عن السطر الذي يحتوي على:
inilisten = /var/run/php5-fpm.sock
وتأكد من أنه موجه إلى المسار الصحيح حيث سيتم الوصول إليه من قبل Nginx.
3. إعداد المواقع المتعددة على Nginx
من أهم الميزات التي يوفرها Nginx هي القدرة على استضافة أكثر من موقع باستخدام تكوينات مختلفة للمجالات (virtual hosts). دعونا نرى كيفية إعداد أكثر من موقع.
إنشاء ملفات المواقع
في Nginx، يتم تعريف كل موقع عبر ملف تكوين منفصل داخل مجلد /etc/nginx/sites-available/. سنبدأ بإنشاء ملف تكوين جديد لموقع الويب الأول. على سبيل المثال، إذا كان لدينا موقع يسمى example1.com، سنقوم بإنشاء ملف له:
bashsudo vim /etc/nginx/sites-available/example1.com
أضف التكوين التالي:
nginxserver {
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/ لتمكين الموقع:
bashsudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
إنشاء المجلدات اللازمة
الآن، يجب إنشاء المجلدات التي ستستضيف ملفات الموقع:
bashsudo mkdir -p /var/www/example1.com
ثم قم بتحميل أو إنشاء ملفات الموقع داخل هذا المجلد.
التحقق من التكوين وإعادة تحميل Nginx
قبل إعادة تحميل Nginx للتأكد من أن كل شيء يعمل بشكل صحيح، تحقق من صحة التكوين:
bashsudo nginx -t
إذا كانت هناك أي أخطاء، سيتم عرضها هنا. إذا كان كل شيء صحيحًا، أعد تحميل Nginx:
bashsudo systemctl reload nginx
4. تأمين الخادم باستخدام SSL
من الخطوات الأساسية لضمان أمان المواقع التي تستضيفها هو تأمينها باستخدام بروتوكول HTTPS. يمكن استخدام Let’s Encrypt للحصول على شهادة SSL مجانية.
تثبيت Certbot
Certbot هو أداة توفر طريقة سهلة للحصول على شهادات SSL مجانية من Let’s Encrypt. لتثبيته:
bashsudo apt-get install python-certbot-nginx
الحصول على شهادة SSL
لحصول على شهادة SSL للموقع، استخدم الأمر التالي:
bashsudo certbot --nginx -d example1.com -d www.example1.com
ستتم عملية التحقق من ملكية النطاق، وإذا تمت بنجاح، سيتم تثبيت الشهادة على الخادم بشكل تلقائي.
إعداد تجديد الشهادات
تقوم Let’s Encrypt بتقديم شهادات صالحة لمدة 90 يومًا فقط. لضمان تجديد الشهادات بشكل تلقائي، قم بإعداد cron job لتجديد الشهادات:
bashsudo crontab -e
ثم أضف السطر التالي:
bash0 3 * * * certbot renew --quiet
5. تحسين أداء Nginx و PHP-FPM
لتحقيق أقصى استفادة من Nginx و PHP-FPM في بيئة استضافة متعددة المواقع، يجب تحسين بعض الإعدادات.
تحسين إعدادات Nginx
-
تمكين ضغط الملفات: لضغط المحتوى المرسل للمستخدمين، يمكنك تمكين Gzip في Nginx.
nginxgzip on;
gzip_types text/plain application/xml text/css application/javascript text/javascript application/x-javascript;
-
تحديد حجم الذاكرة المخبأة (Cache): يساعد تكوين ذاكرة تخزين مؤقت في تحسين الأداء بشكل كبير.
nginxproxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m max_size=100m inactive=60m use_temp_path=off;
تحسين إعدادات PHP-FPM
-
زيادة الحد الأقصى لعدد العمليات: لتحسين الأداء، يمكنك تعديل قيمة
pm.max_childrenفي ملف إعدادات PHP-FPM.
inipm.max_children = 50
-
تمكين الخيوط (Threads): يمكنك تحسين أداء PHP-FPM باستخدام دعم الخيوط في البيئة عالية التحميل.
inipm = dynamic
6. مراقبة الأداء والتخزين
من الضروري مراقبة أداء الخادم والموارد لضمان استقرار المواقع. يمكن استخدام أدوات مثل htop و top لمراقبة استهلاك المعالج والذاكرة.
تسجيل الدخول إلى الخادم
استخدم أوامر مثل htop أو top لمعرفة العمليات الجارية واستهلاك الموارد:
bashtop
الخاتمة
باستخدام هذه الإعدادات، يمكنك استضافة مجموعة مواقع بشكل آمن وفعّال على أوبنتو 14.04 باستخدام Nginx و PHP-FPM. من خلال اتباع الممارسات الجيدة المتعلقة بالأمان والأداء، ستحصل على بيئة مستقرة وقوية لاستضافة المواقع.

