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

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

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

ابدأ الدورة

مقدمة: لماذا VPS هو الحل المثالي لمشروع PHP

\n

تطوير تطبيق PHP هو نصف المهمة فقط. النصف الثاني، الذي لا يقل أهمية، هو النشر الصحيح على الخادم. يوفر الخادم الافتراضي الخاص (VPS) المرونة والتحكم والأداء غير المتاح عند استخدام الاستضافة المشتركة. تحصل على وصول root، وإمكانية ضبط البيئة بدقة، وعزل كامل للموارد.

\n

في هذا الدليل، سننتقل من شراء الخادم إلى تطبيق عملي باستخدام PHP 8.x و Nginx و MySQL و Git. جميع الخطوات موصوفة لنظام التشغيل Ubuntu 22.04 LTS - التوزيعة الأكثر شيوعًا لخوادم الويب.

\n\n

1. الإعداد الأولي لـ VPS والاتصال

\n\n

1.1. اختيار وشراء VPS

\n

لتطبيق PHP، الحد الأدنى من المتطلبات: 1 vCPU، 1 جيجابايت RAM، 20 جيجابايت SSD. نوصي بمزودين ذوي سمعة جيدة: DigitalOcean، Linode، Vultr أو المحليين Timeweb، Beget.

\n

بعد الشراء، ستحصل على عنوان IP وكلمة مرور root (أو مفتاح SSH).

\n\n

1.2. الاتصال عبر SSH وإنشاء مستخدم

\n

نتصل بالخادم (استبدل 192.168.1.1 بعنوان IP الخاص بك):

\n
ssh root@192.168.1.1
\n

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

\n
adduser deployer\nusermod -aG sudo deployer
\n

نضبط مفاتيح SSH للدخول الآمن:

\n
mkdir -p /home/deployer/.ssh\ncp ~/.ssh/authorized_keys /home/deployer/.ssh/\nchown -R deployer:deployer /home/deployer/.ssh\nchmod 700 /home/deployer/.ssh\nchmod 600 /home/deployer/.ssh/authorized_keys
\n

نعطل دخول root عبر كلمة المرور، نحرر /etc/ssh/sshd_config:

\n
PermitRootLogin prohibit-password\nPasswordAuthentication no
\n

نعيد تشغيل SSH: systemctl restart sshd

\n\n

1.3. الأمان الأساسي للخادم

\n
    \n
  • نحدث الحزم: apt update && apt upgrade -y
  • \n
  • نثبت fail2ban: apt install fail2ban -y
  • \n
  • نضبط UFW (جدار الحماية):
  • \n
\n
ufw allow OpenSSH\nufw allow 'Nginx Full'\nufw enable
\n\n

2. تثبيت وضبط مجموعة LEMP (Linux، Nginx، MySQL، PHP)

\n\n

2.1. تثبيت Nginx

\n
apt install nginx -y\nsystemctl enable nginx\nsystemctl start nginx
\n

تحقق من العمل بفتح عنوان IP الخاص بالخادم في المتصفح. يجب أن ترى صفحة الترحيب الخاصة بـ Nginx.

\n\n

2.2. تثبيت PHP 8.x و PHP-FPM

\n

نضيف المستودع للإصدار الحالي من PHP:

\n
apt install software-properties-common -y\nadd-apt-repository ppa:ondrej/php -y\napt update\napt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd -y
\n

نتحقق من حالة PHP-FPM:

\n
systemctl status php8.2-fpm
\n\n

2.3. تثبيت MySQL (MariaDB)

\n
apt install mariadb-server -y\nsystemctl enable mariadb\nsystemctl start mariadb
\n

نشغل سكريبت الأمان:

\n
mysql_secure_installation
\n

ننشئ قاعدة بيانات ومستخدمًا للتطبيق:

\n
mysql -u root -p\nCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';\nGRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;
\n\n

2.4. ضبط المضيف الافتراضي لـ Nginx

\n

ننشئ ملف تكوين لنطاقنا (مثل myapp.com):

\n
nano /etc/nginx/sites-available/myapp
\n

محتوى الملف:

\n
server {\n    listen 80;\n    server_name myapp.com www.myapp.com;\n    root /var/www/myapp/public;\n    index index.php index.html;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:                

المدونات

توصيات الكتب