نشر تطبيق Node.js: دليل PM2 و Nginx
دليل شامل لنشر تطبيقات Node.js على VPS. تثبيت Node.js عبر nvm، مدير العمليات PM2، وكيل Nginx العكسي، شهادة SSL وإدارة متغيرات البيئة.
دليل شامل لنشر تطبيقات PHP على VPS. مقارنة LAMP و LEMP، إعداد Apache/Nginx + PHP-FPM + MySQL، تهيئة المضيف الافتراضي وإدارة إصدارات PHP.
PHP هو أحد ركائز تطوير الويب، ويشغّل ملايين المواقع حول العالم. يقارن هذا الدليل بين حزمتي LAMP (Linux + Apache + MySQL + PHP) و LEMP (Linux + Nginx + MySQL + PHP)، ويغطي خطوات التثبيت ونشر تطبيق PHP.
| الميزة | LAMP | LEMP |
|---|---|---|
| خادم الويب | Apache | Nginx |
| الأداء | متوسط-عالٍ | عالٍ |
| استخدام الذاكرة | أكثر | أقل |
| .htaccess | مدعوم | غير مدعوم |
| تكامل PHP | mod_php أو PHP-FPM | PHP-FPM (مطلوب) |
| الملفات الثابتة | جيد | ممتاز |
يوفر LEMP Stack أداءً أفضل لتطبيقات PHP مثل WordPress و Laravel. قد يُفضَّل LAMP للتطبيقات القديمة التي تتطلب .htaccess.
# تحديث قائمة الحزم
sudo apt update && sudo apt upgrade -y
# تثبيت Nginx
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
# تثبيت 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;
# إضافة مستودع 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
; حد الذاكرة
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
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
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
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 مؤقتاً لتنفيذ أسرع بكثير.
يُوصى بـ LEMP (Nginx + PHP-FPM) للمشاريع الجديدة؛ يستخدم ذاكرة أقل ويوفر أداءً أعلى. لكن LAMP (Apache) أسهل في الإعداد للتطبيقات القديمة أو WordPress التي تستخدم .htaccess.
PHP-FPM (FastCGI Process Manager) يشغّل PHP كعملية منفصلة مُدارة بشكل مستقل عن خادم الويب. مقارنةً بـ mod_php، يستخدم ذاكرة أقل ويوفر أداءً أفضل ويتيح استخدام إصدارات PHP مختلفة لمواقع مختلفة.
يمكن تثبيت إصدارات PHP متعددة عبر مستودع Ondrej PPA. يعمل خدمة PHP-FPM منفصلة لكل إصدار. في Nginx، يمكن تعيين إصدارات PHP مختلفة لمواقع مختلفة باستخدام مقابس PHP-FPM مختلفة.
فعّل OPcache (opcache.enable=1)، زد عدد عمال PHP-FPM، أضف رؤوس التخزين المؤقت للملفات الثابتة في Nginx. لـ Laravel/Symfony نفّذ 'php artisan config:cache' و 'php artisan route:cache'. حسّن إدارة الجلسات والتخزين المؤقت مع Redis.
دليل شامل لنشر تطبيقات Node.js على VPS. تثبيت Node.js عبر nvm، مدير العمليات PM2، وكيل Nginx العكسي، شهادة SSL وإدارة متغيرات البيئة.
دليل تثبيت وتحسين WordPress على VPS. إعداد LEMP Stack، إعدادات wp-config.php، صلاحيات الملفات، SSL، تحسين أداء OPcache وتعزيز الأمان.
دليل نشر تطبيقات Python/Django على VPS. إعداد virtualenv، إعدادات Django للإنتاج، خادم Gunicorn WSGI، وكيل Nginx العكسي، خدمة systemd وإدارة الملفات الثابتة.