مقدمة: من التطوير المحلي إلى الخادم الإنتاجي
\nتطوير تطبيق PHP على جهاز محلي هو نصف المهمة فقط. تبدأ البراعة الحقيقية عندما يصل الكود إلى الخادم ويبدأ في خدمة المستخدمين الحقيقيين. النشر المتقدم لـ PHP على VPS ليس مجرد نسخ الملفات عبر FTP. إنها عملية شاملة تشمل إعداد البيئة والأمان والأتمتة والمراقبة.
\nفي هذه المقالة، سنشرح كيفية إعداد VPS لاستضافة احترافية لتطبيقات PHP باستخدام الأدوات الحديثة وممارسات DevOps. ستتعلم كيفية نشر تطبيق على مجموعة Nginx + PHP-FPM، وإعداد خط أنابيب CI/CD، وتحسين الأداء، وتطبيق المراقبة.
\nمن المفترض أن لديك معرفة أساسية بـ Linux و PHP وخوادم الويب. نحن ننتقل إلى المستوى المتقدم.
\n\n1. إعداد 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
تثبيت مجموعة LEMP (Nginx + PHP-FPM + MySQL)
\nنستخدم Nginx كخادم أمامي و PHP-FPM لمعالجة PHP. قم بتثبيت جميع المكونات بأمر واحد:
\nsudo 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تحقق من الإصدارات:
\nphp -v\nnginx -v\nmysql --version\n\nإعداد PHP-FPM للأداء العالي
\nللنشر المتقدم، قم بتعديل تكوين PHP-FPM. قم بتحرير الملف /etc/php/8.3/fpm/pool.d/www.conf (قد يختلف الإصدار):
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 الهامة للإنتاج:
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
2. نشر التطبيق: من Git إلى الإنتاج
\nالاستنساخ وإعداد الصلاحيات
\nأنشئ دليلاً للمشروع واستنسخ المستودع:
\nsudo 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قم بإعداد صلاحيات الوصول:
\nsudo 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أنشئ ملف تكوين لنطاقك:
\nsudo nano /etc/nginx/sites-available/yourproject\nمثال على تكوين متقدم مع التخزين المؤقت والضغط:
\nserver {\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 ~ /\