عندما يجهز مشروع Laravel للإطلاق، يأتي السؤال الأهمّ: كيف تنقله من بيئة التطوير إلى خادم إنتاج حقيقي يخدم المستخدمين بثبات؟ الاستضافة المشتركة لا تكفي عادةً لتطبيقات Laravel، والحلّ الاحترافي هو خادم VPS تتحكّم به بالكامل. في هذا الدليل نشرح نشر Laravel على VPS خطوة بخطوة من الصفر إلى Production: تجهيز Ubuntu، وNginx، وPHP-FPM، وMySQL، وشهادة SSL، وصولاً إلى Supervisor للطوابير وCron للمجدول. وكل خطوة هنا مُختبَرة فعلياً على خادم من مرام.

محتويات الدليل
لماذا نشر Laravel على VPS؟
تطبيقات Laravel تحتاج بيئة مرنة: إصدار PHP محدّد وإضافاته، وComposer، وطوابير (Queues)، ومهام مجدولة (Scheduler)، وأحياناً Redis. الاستضافة المشتركة تقيّدك في كل هذا، بينما يمنحك VPS تحكّماً كاملاً: تختار الإصدارات، تضبط الأداء، وتشغّل العمليات الخلفية بحرية. لهذا فإن نشر Laravel على VPS هو الخيار الطبيعي لأي مشروع جدّي ينوي النموّ.
الستاك في لمحة
قبل الأوامر، إليك الستاك الذي سنبنيه: يصل طلب المستخدم عبر HTTPS إلى Nginx، الذي يمرّره إلى PHP-FPM ليشغّل تطبيق Laravel، الذي بدوره يتصل بـMySQL وRedis. وبالتوازي، يشغّل Supervisor عمّال الطوابير، ويشغّل Cron مجدول Laravel.

الخطوة 1-2: تجهيز الخادم وPHP
ابدأ بتحديث الخادم وتثبيت جدار ناري بسيط، ثم PHP-FPM 8.3 مع إضافات Laravel الأساسية وComposer:
# تحديث النظام وتأمينه
sudo apt update && sudo apt upgrade -y
sudo ufw allow OpenSSH && sudo ufw allow 'Nginx Full'
sudo ufw enable
# PHP-FPM 8.3 وإضافات Laravel + Composer
sudo apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-mbstring \
php8.3-xml php8.3-bcmath php8.3-curl php8.3-zip php8.3-intl composer nginx
تشمل الإضافات ما يحتاجه Laravel فعلياً: mbstring، xml، bcmath، curl، zip، وpdo_mysql للاتصال بقاعدة البيانات.
الخطوة 3: رفع مشروع Laravel
انقل مشروعك إلى الخادم (عبر Git أو مباشرةً)، ثبّت الاعتماديات لبيئة الإنتاج، وأنشئ مفتاح التطبيق:
cd /var/www
sudo git clone https://github.com/your/project.git laravel
cd laravel
# اعتماديات الإنتاج فقط + تحسين المُحمِّل التلقائي
sudo composer install --no-dev --optimize-autoloader
# ملف البيئة ومفتاح التطبيق
sudo cp .env.example .env
sudo php artisan key:generate
# صلاحيات المجلدات التي يكتب فيها Laravel
sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 775 storage bootstrap/cache
--no-dev في الإنتاج لتجنّب تثبيت حزم التطوير، و--optimize-autoloader لتسريع تحميل الأصناف. لا ترفع مجلد vendor ولا ملف .env إلى Git أبداً.الخطوة 4: MySQL والترحيلات
أنشئ قاعدة بيانات ومستخدماً خاصاً بها، ثم اضبط بيانات الاتصال في .env ونفّذ الترحيلات:
sudo mysql -e "CREATE DATABASE laravel;
CREATE USER 'lara'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';
GRANT ALL ON laravel.* TO 'lara'@'localhost'; FLUSH PRIVILEGES;"
# في ملف .env اضبط:
# DB_CONNECTION=mysql
# DB_DATABASE=laravel
# DB_USERNAME=lara
# DB_PASSWORD=STRONG_PASSWORD
php artisan migrate --force
راية --force ضرورية لتشغيل الترحيلات في بيئة الإنتاج دون سؤال تأكيدي.
الخطوة 5: إعداد Nginx
نقطة أساسية في نشر Laravel على VPS: يجب أن يشير جذر الويب إلى مجلد public لا إلى جذر المشروع (لأمان أعلى). أنشئ كتلة خادم Nginx:
server {
listen 80;
server_name example.com;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.(?!well-known).* { deny all; }
}
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
الخطوة 6: شهادة SSL
لا متجر ولا تطبيق جدّي بلا HTTPS. استخدم Let’s Encrypt المجاني عبر Certbot ليُصدر الشهادة ويضبط Nginx تلقائياً:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot يضيف التحويل من HTTP إلى HTTPS ويجدّد الشهادة تلقائياً. تأكّد فقط أن نطاقك يشير إلى عنوان الخادم قبل التشغيل.
الخطوة 7: Supervisor للطوابير
طوابير Laravel (Queues) تعالج المهام الثقيلة في الخلفية (إرسال بريد، معالجة صور…). ليبقى العامل يعمل دائماً ويُعاد تشغيله عند التعطّل، استخدم Supervisor:
sudo apt install -y supervisor
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl status
الخطوة 8: Cron للمجدول
مجدول Laravel (Scheduler) يُدار عبر مهمة Cron واحدة تعمل كل دقيقة، ومنها يتفرّع Laravel لتشغيل كل مهامك المجدولة داخل التطبيق:
sudo crontab -u www-data -e
# أضِف هذا السطر:
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
php artisan config:cache وroute:cache وview:cache — تسرّع التطبيق بتخزين الإعدادات والمسارات مسبقاً.نشر Laravel على VPS: التحقق والأداء
لم نكتب هذا الدليل نظرياً — نفّذنا كل خطوة فعلياً على خادم VPS من مرام (Ubuntu 24.04) وثبّتنا Laravel 13 كاملاً، ثم قِسنا الأداء بأداة ApacheBench:

النتيجة: التطبيق يستجيب بـHTTP 200، الترحيلات تمّت، عامل الطوابير يعمل عبر Supervisor، والمجدول مُفعّل عبر Cron — وحقّق التطبيق 308 طلب في الثانية بصفر طلبات فاشلة لصفحة Laravel ديناميكية. مع إضافة كاش الصفحات لاحقاً يرتفع الرقم أضعافاً، لكن هذا يثبت أن نشر Laravel على VPS بهذه البنية يعطي أساساً متيناً وسريعاً.
الخلاصة
بهذا تكون قد أكملت نشر Laravel على VPS من الصفر إلى Production: خادم مؤمّن، PHP-FPM وNginx وMySQL، شهادة SSL، وطوابير ومجدول يعملان في الخلفية. هذه البنية القياسية تخدمك من أول مستخدم إلى آلاف المستخدمين، وأنت تتحكّم بكل تفصيلة فيها. ابدأ بها، وحسّنها تدريجياً (كاش، Redis، مراقبة) كلما نما تطبيقك. للمزيد راجع توثيق Laravel الرسمي للنشر.
من واقع مرام
نوفّر خوادم VPS جاهزة لبيئة Laravel: PHP-FPM حديث، NVMe سريع، ودعم عربي يساعدك في ضبط Nginx وSupervisor وSSL خطوة بخطوة. اختبرنا هذه الخطوات على خوادمنا فعلياً قبل أن نكتبها لك.
انشر تطبيق Laravel اليوم
خوادم VPS من مرام مهيّأة للمطوّرين — تحكّم كامل، أداء عالٍ، ودعم عربي يفهم Laravel.
احصل على VPS جاهز لـLaravel ←
