مقدمة: لماذا VPS هو الخيار الأفضل لمشروع PHP؟
تطوير تطبيق ويب بلغة PHP هو نصف المهمة فقط. النصف الثاني، الذي لا يقل أهمية، هو النشر الصحيح. إذا كنت قد تجاوزت حدود الاستضافة المشتركة وترغب في السيطرة الكاملة على البيئة، فإن الخادم الافتراضي الخاص (VPS) هو الحل الأمثل. في هذه المقالة، سننتقل من شراء الخادم إلى تشغيل تطبيق PHP الخاص بك في وضع الإنتاج. ستتعلم كيفية إعداد مجموعة Nginx + PHP-FPM + MySQL، وتكوين النطاق، وشهادة SSL، وأتمتة تحديثات الكود.
الخطوة 1: الإعداد الأولي لـ VPS والاتصال
1.1 اختيار نظام التشغيل والدخول الأولي
نوصي باستخدام Ubuntu 22.04 LTS - نظام مستقر وبدعم طويل الأمد. بعد شراء VPS، ستحصل على عنوان IP وكلمة مرور الجذر (root).
نتصل عبر SSH:
ssh root@عنوان_IP_الخادم_خاصتك1.2 إنشاء مستخدم وإعداد الأمان
العمل كمستخدم root هو ممارسة سيئة. سننشئ مستخدمًا منفصلاً بصلاحيات sudo:
adduser deployerusermod -aG sudo deployerالآن سنقوم بإعداد مفاتيح SSH للدخول الآمن والمريح. على جهازك المحلي، قم بإنشاء مفتاح (إذا لم يكن موجودًا):
ssh-keygen -t rsa -b 4096انسخ المفتاح العام إلى الخادم:
ssh-copy-id deployer@عنوان_IP_الخادم_خاصتكبعد التحقق من الدخول باستخدام المفتاح، قم بتعطيل الدخول بكلمة المرور ووصول root:
sudo nano /etc/ssh/sshd_config# قم بتغيير:PermitRootLogin noPasswordAuthentication no# أعد تشغيل SSH:sudo systemctl restart sshdالخطوة 2: تثبيت وإعداد مجموعة LEMP (Nginx، PHP، MySQL)
2.1 تثبيت Nginx
نقوم بتحديث الحزم وتثبيت خادم الويب:
sudo apt update && sudo apt upgrade -ysudo apt install nginx -yنتحقق من الحالة:
sudo systemctl status nginx2.2 تثبيت PHP 8.x والإضافات الضرورية
سنضيف المستودع الذي يحتوي على الإصدار الحالي من PHP:
sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt updatesudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip -y2.3 تثبيت MySQL (MariaDB)
sudo apt install mariadb-server mariadb-client -ysudo mysql_secure_installationنقوم بإنشاء قاعدة بيانات ومستخدم لتطبيقك:
sudo mysql -u rootCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';FLUSH PRIVILEGES;EXIT;الخطوة 3: إعداد المضيف الافتراضي (Server Block) في Nginx
سنقوم بإنشاء ملف تكوين لنطاقنا (مثال: myapp.ru):
sudo nano /etc/nginx/sites-available/myappأدخل القالب التالي لـ PHP-FPM:
server { listen 80; server_name myapp.ru www.myapp.ru; root /var/www/myapp/public; index index.php index.html;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; }
location ~ /\\.ht { deny all; }}نقوم بتفعيل الموقع وإعادة تحميل Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t # التحقق من التكوينsudo systemctl reload nginxالخطوة 4: نشر كود التطبيق (Git + Composer)
4.1 استنساخ المستودع
نقوم بإنشاء دليل للمشروع واستنساخ الكود (مثال: من GitHub):
sudo mkdir -p /var/www/myappsudo chown -R deployer:depl