مقدمة: كيف لا تضيع وسط الخيارات المتاحة؟
\nلقد قمت ببرمجة موقع PHP رائع. يعمل بشكل مثالي على جهازك المحلي، ويُبهر العيون ولا يتعطل. ولكن حان وقت الحقيقة — حان الوقت لعرض مشروعك على العالم. وهنا تبدأ المتعة الحقيقية: اختيار طريقة النشر. VPS؟ Docker؟ السحابة (Cloud)؟ أم كلها معًا؟ تتشتت الأفكار والوقت يضيق.
\nفي الحقيقة، كل من هذه الطرق هو أداة مختلفة في حقيبة المطور. المجرفة، الحفارة، والجرافة — كلها تحفر، لكن بسرعات وتكاليف متفاوتة. في هذا المقال، سنستعرض ثلاثة أساليب رئيسية لـ نشر تطبيقات PHP، وسنقدم أمثلة عملية على الكود، ونساعدك في اختيار ما يناسبك تمامًا. هيا بنا!
\n\n1. الطريقة الكلاسيكية: VPS (الخادم الخاص الافتراضي)
\nاستضافة PHP على VPS تشبه امتلاك شقة خاصة بك. لديك موارد مخصصة (معالج، ذاكرة عشوائية، قرص صلب)، وصول كامل كمدير (root)، وحرية كاملة في التصرف. أنت من يقرر ماذا تثبت: Apache أم Nginx، أي إصدار من PHP وأي الإضافات. هذا الخيار مثالي لمن يريد التحكم بكل التفاصيل ولا يخاف من سطر الأوامر.
\n\nمزايا وعيوب VPS
\n- \n
- المزايا: تحكم كامل، سعر ثابت ومتوقع (شهري)، يمكن تخصيصه لأي متطلبات. \n
- العيوب: أنت المسؤول عن الأمان والتحديثات والنسخ الاحتياطي. تحتاج إلى معرفة كيفية إعداد الخادم. \n
كيف تنشر PHP على VPS (خطوة بخطوة مع الكود)
\nلنفترض أن لديك خادمًا يعمل بنظام Ubuntu 22.04. إليك الحد الأدنى من الأوامر لتشغيل تطبيق PHP نموذجي (مثل Laravel أو Symfony).
\n\n# الاتصال بالخادم\nssh root@your-server-ip\n\n# تحديث الحزم\napt update && apt upgrade -y\n\n# تثبيت Nginx و PHP 8.2 و MySQL\napt install nginx php8.2-fpm php8.2-mysql php8.2-cli php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip mysql-server -y\n\n# إعداد Nginx لـ PHP\ncat > /etc/nginx/sites-available/your-site << 'EOF'\nserver {\n listen 80;\n server_name your-domain.com;\n root /var/www/your-site/public;\n\n index index.php;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n include snippets/fastcgi-php.conf;\n fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;\n }\n}\nEOF\n\n# تفعيل الموقع وإعادة تشغيل Nginx\nln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/\nsystemctl restart nginx\n\n# نسخ ملفات التطبيق (عبر Git أو SCP)\ncd /var/www\ngit clone https://github.com/your-repo/your-site.git\ncd your-site\ncomposer install --no-dev\nphp artisan key:generate # لتطبيقات Laravel\n\nتم! تطبيق PHP الخاص بك أصبح متاحًا الآن عبر عنوان IP. كل ما تبقى هو إضافة شهادة SSL (عبر Certbot) وإعداد قاعدة البيانات.
\n\n2. المعيار الحديث: Docker
\nإذا كان VPS هو شقة، فإن Docker مع PHP هو حاوية لنقل الأغراض. تقوم بتغليف التطبيق بأكمله (الكود، التبعيات، إعدادات الخادم) في صورة واحدة (image) وتشغيله في أي مكان. لا مزيد من مشاكل "كان يعمل على جهازي" — الحاوية تضمن بيئة متطابقة.
\n\nلماذا Docker رائع لـ PHP؟
\n- \n
- العزل: كل تطبيق يعيش في حاويته الخاصة. \n
- قابلية التكرار: تضبطه مرة واحدة وتستخدمه في كل مكان. \n
- قابلية التوسع: يمكنك بسهولة تشغيل 10 نسخ من التطبيق. \n
مثال: Docker-compose لـ PHP + Nginx + MySQL
\nلننشئ ملف docker-compose.yml في جذر المشروع:
version: '3.8'\n\nservices:\n app:\n image: php:8.2-fpm\n container_name: php_app\n working_dir: /var/www\n volumes:\n - ./:/var/www\n networks:\n - app-network\n\n web:\n image: nginx:alpine\n container_name: nginx_web\n ports:\n - "80:80"\n volumes:\n - ./:/var/www\n - ./nginx.conf:/etc/nginx/conf.d/default.conf\n depends_on:\n - app\n networks:\n -