نشر تطبيق PHP: دليل LAMP و LEMP Stack
دليل شامل لنشر تطبيقات PHP على VPS. مقارنة LAMP و LEMP، إعداد Apache/Nginx + PHP-FPM + MySQL، تهيئة المضيف الافتراضي وإدارة إصدارات PHP.
جدول المحتويات
نشر تطبيق PHP: دليل LAMP و LEMP Stack
PHP هو أحد ركائز تطوير الويب، ويشغّل ملايين المواقع حول العالم. يقارن هذا الدليل بين حزمتي LAMP (Linux + Apache + MySQL + PHP) و LEMP (Linux + Nginx + MySQL + PHP)، ويغطي خطوات التثبيت ونشر تطبيق PHP.
مقارنة LAMP و LEMP
| الميزة | LAMP | LEMP |
|---|---|---|
| خادم الويب | Apache | Nginx |
| الأداء | متوسط-عالٍ | عالٍ |
| استخدام الذاكرة | أكثر | أقل |
| .htaccess | مدعوم | غير مدعوم |
| تكامل PHP | mod_php أو PHP-FPM | PHP-FPM (مطلوب) |
| الملفات الثابتة | جيد | ممتاز |
يوفر LEMP Stack أداءً أفضل لتطبيقات PHP مثل WordPress و Laravel. قد يُفضَّل LAMP للتطبيقات القديمة التي تتطلب .htaccess.
تثبيت LEMP Stack
1. تثبيت Nginx
# تحديث قائمة الحزم
sudo apt update && sudo apt upgrade -y
# تثبيت Nginx
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
2. تثبيت MySQL/MariaDB
# تثبيت MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
# إعداد الأمان
sudo mysql_secure_installation
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'كلمة-مرور-قوية';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3. تثبيت PHP و PHP-FPM
# إضافة مستودع PHP
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# تثبيت PHP 8.2 والإضافات الشائعة
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl \
php8.2-mbstring php8.2-zip php8.2-gd php8.2-bcmath php8.2-intl -y
sudo systemctl start php8.2-fpm
sudo systemctl enable php8.2-fpm
php --version
4. إعداد PHP
; حد الذاكرة
memory_limit = 256M
; الحجم الأقصى للرفع
upload_max_filesize = 64M
post_max_size = 64M
; الحد الأقصى لوقت التنفيذ
max_execution_time = 300
; عرض الأخطاء (معطّل في الإنتاج)
display_errors = Off
log_errors = On
; OPcache (للأداء)
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
إعداد المضيف الافتراضي Nginx (لـ PHP)
sudo mkdir -p /var/www/myapp/public
sudo chown -R www-data:www-data /var/www/myapp
sudo nano /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com www.example.com;
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;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
client_max_body_size 64M;
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
نشر التطبيق (مثال Laravel)
cd /var/www
git clone https://github.com/user/myapp.git
cd myapp
composer install --no-dev --optimize-autoloader
cp .env.example .env
php artisan key:generate
php artisan migrate --force
php artisan config:cache
php artisan route:cache
sudo chown -R www-data:www-data /var/www/myapp
sudo chmod -R 775 /var/www/myapp/storage
شهادة SSL
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run
على خوادم REXE، تأكد من فتح المنفذين 80 و 443 عبر Path Panel. أبقِ منفذ MySQL 3306 مغلقاً للخارج.
الخلاصة
تطبيق PHP الخاص بك يعمل الآن على LEMP أو LAMP Stack. يوفر مزيج Nginx + PHP-FPM أداءً عالياً، بينما يخزّن OPcache كود PHP مؤقتاً لتنفيذ أسرع بكثير.
مقالات ذات صلة
نشر تطبيق Node.js: دليل PM2 و Nginx
دليل شامل لنشر تطبيقات Node.js على VPS. تثبيت Node.js عبر nvm، مدير العمليات PM2، وكيل Nginx العكسي، شهادة SSL وإدارة متغيرات البيئة.
تثبيت WordPress وتحسينه: دليل VPS
دليل تثبيت وتحسين WordPress على VPS. إعداد LEMP Stack، إعدادات wp-config.php، صلاحيات الملفات، SSL، تحسين أداء OPcache وتعزيز الأمان.
نشر Python/Django: بيئة إنتاج مع Gunicorn و Nginx
دليل نشر تطبيقات Python/Django على VPS. إعداد virtualenv، إعدادات Django للإنتاج، خادم Gunicorn WSGI، وكيل Nginx العكسي، خدمة systemd وإدارة الملفات الثابتة.