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

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

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

ابدأ الدورة

مقدمة: لماذا 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 nginx


2.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 -y


2.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                

المدونات

توصيات الكتب