نشر تطبيق PHP المتقدم على VPS: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: من التطوير المحلي إلى الخادم الإنتاجي

\n

تطوير تطبيق PHP على جهاز محلي هو نصف المهمة فقط. تبدأ البراعة الحقيقية عندما يصل الكود إلى الخادم ويبدأ في خدمة المستخدمين الحقيقيين. النشر المتقدم لـ PHP على VPS ليس مجرد نسخ الملفات عبر FTP. إنها عملية شاملة تشمل إعداد البيئة والأمان والأتمتة والمراقبة.

\n

في هذه المقالة، سنشرح كيفية إعداد VPS لاستضافة احترافية لتطبيقات PHP باستخدام الأدوات الحديثة وممارسات DevOps. ستتعلم كيفية نشر تطبيق على مجموعة Nginx + PHP-FPM، وإعداد خط أنابيب CI/CD، وتحسين الأداء، وتطبيق المراقبة.

\n

من المفترض أن لديك معرفة أساسية بـ Linux و PHP وخوادم الويب. نحن ننتقل إلى المستوى المتقدم.

\n\n

1. إعداد VPS وتهيئة البيئة

\n

اختيار الخادم والإعداد الأولي

\n

للنشر المتقدم، اختر VPS بذاكرة RAM لا تقل عن 2 جيجابايت وقرص SSD. أنظمة التشغيل الموصى بها هي Ubuntu 22.04 LTS أو Debian 12. بعد الحصول على الوصول عبر SSH، قم بالإعداد الأساسي:

\n
    \n
  • تحديث الحزم: sudo apt update && sudo apt upgrade -y
  • \n
  • إنشاء مستخدم بصلاحيات sudo: sudo adduser deployer && sudo usermod -aG sudo deployer
  • \n
  • إعداد مفاتيح SSH (قم بتعطيل تسجيل الدخول بكلمة المرور)
  • \n
  • تثبيت fail2ban للحماية من هجمات القوة الغاشمة
  • \n
  • إعداد UFW (السماح بالمنافذ 22 و 80 و 443)
  • \n
\n\n

تثبيت مجموعة LEMP (Nginx + PHP-FPM + MySQL)

\n

نستخدم Nginx كخادم أمامي و PHP-FPM لمعالجة PHP. قم بتثبيت جميع المكونات بأمر واحد:

\n
sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip composer git -y
\n

تحقق من الإصدارات:

\n
php -v\nnginx -v\nmysql --version
\n\n

إعداد PHP-FPM للأداء العالي

\n

للنشر المتقدم، قم بتعديل تكوين PHP-FPM. قم بتحرير الملف /etc/php/8.3/fpm/pool.d/www.conf (قد يختلف الإصدار):

\n
pm = dynamic\npm.max_children = 50\npm.start_servers = 5\npm.min_spare_servers = 5\npm.max_spare_servers = 35\npm.max_requests = 500
\n

إعدادات php.ini الهامة للإنتاج:

\n
memory_limit = 256M\nupload_max_filesize = 64M\npost_max_size = 64M\nmax_execution_time = 300\ndate.timezone = Europe/Moscow
\n

أعد تشغيل PHP-FPM: sudo systemctl restart php8.3-fpm

\n\n

2. نشر التطبيق: من Git إلى الإنتاج

\n

الاستنساخ وإعداد الصلاحيات

\n

أنشئ دليلاً للمشروع واستنسخ المستودع:

\n
sudo mkdir -p /var/www/yourproject\nsudo chown -R deployer:deployer /var/www/yourproject\ncd /var/www/yourproject\ngit clone git@github.com:yourusername/yourproject.git .
\n

قم بإعداد صلاحيات الوصول:

\n
sudo chown -R www-data:www-data /var/www/yourproject/storage\nsudo chown -R www-data:www-data /var/www/yourproject/bootstrap/cache\nsudo chmod -R 775 /var/www/yourproject/storage\nsudo chmod -R 775 /var/www/yourproject/bootstrap/cache
\n\n

إعداد المضيف الافتراضي لـ Nginx

\n

أنشئ ملف تكوين لنطاقك:

\n
sudo nano /etc/nginx/sites-available/yourproject
\n

مثال على تكوين متقدم مع التخزين المؤقت والضغط:

\n
server {\n    listen 80;\n    server_name yourdomain.com www.yourdomain.com;\n    root /var/www/yourproject/public;\n\n    index index.php index.html;\n\n    charset utf-8;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n\n    location ~ /\                

المدونات

توصيات الكتب