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

خطوات نشر Laravel على VPS من الصفر إلى Productionخارطة الطريق: ثماني خطوات من تجهيز Ubuntu إلى تشغيل المجدول والطوابير.

لماذا نشر Laravel على VPS؟

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

الستاك في لمحة

قبل الأوامر، إليك الستاك الذي سنبنيه: يصل طلب المستخدم عبر HTTPS إلى Nginx، الذي يمرّره إلى PHP-FPM ليشغّل تطبيق Laravel، الذي بدوره يتصل بـMySQL وRedis. وبالتوازي، يشغّل Supervisor عمّال الطوابير، ويشغّل Cron مجدول Laravel.

ستاك Laravel في الإنتاج: Nginx وPHP-FPM وMySQL وRedis وSupervisor وCronتدفّق الطلب من المستخدم إلى قاعدة البيانات، مع عمليات الخلفية (الطوابير والمجدول).

الخطوة 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:

تحقّق حقيقي: نشر Laravel على خادم مرام بنتيجة 308 طلب في الثانيةإثبات فعلي: Laravel 13 يعمل، الترحيلات نجحت، Supervisor يعمل، و308 طلب/ثانية بصفر فشل.

النتيجة: التطبيق يستجيب بـHTTP 200، الترحيلات تمّت، عامل الطوابير يعمل عبر Supervisor، والمجدول مُفعّل عبر Cron — وحقّق التطبيق 308 طلب في الثانية بصفر طلبات فاشلة لصفحة Laravel ديناميكية. مع إضافة كاش الصفحات لاحقاً يرتفع الرقم أضعافاً، لكن هذا يثبت أن نشر Laravel على VPS بهذه البنية يعطي أساساً متيناً وسريعاً.

⚠️ شفافية: الأرقام مقاسة على خادم مرام فعلي بأداة ab على صفحة Laravel الافتراضية. النتائج تتغيّر حسب الخطة والتطبيق والكود — اعتبرها إثباتاً أن البنية تعمل، لا رقماً ثابتاً.

الخلاصة

بهذا تكون قد أكملت نشر Laravel على VPS من الصفر إلى Production: خادم مؤمّن، PHP-FPM وNginx وMySQL، شهادة SSL، وطوابير ومجدول يعملان في الخلفية. هذه البنية القياسية تخدمك من أول مستخدم إلى آلاف المستخدمين، وأنت تتحكّم بكل تفصيلة فيها. ابدأ بها، وحسّنها تدريجياً (كاش، Redis، مراقبة) كلما نما تطبيقك. للمزيد راجع توثيق Laravel الرسمي للنشر.

من واقع مرام

نوفّر خوادم VPS جاهزة لبيئة Laravel: PHP-FPM حديث، NVMe سريع، ودعم عربي يساعدك في ضبط Nginx وSupervisor وSSL خطوة بخطوة. اختبرنا هذه الخطوات على خوادمنا فعلياً قبل أن نكتبها لك.

انشر تطبيق Laravel اليوم

خوادم VPS من مرام مهيّأة للمطوّرين — تحكّم كامل، أداء عالٍ، ودعم عربي يفهم Laravel.

احصل على VPS جاهز لـLaravel ←
نُشر هذا الشرح أصلاً في مدونة مرام هوست.
هل كانت المقالة مفيدة ؟ 0 أعضاء وجدوا هذه المقالة مفيدة (0 التصويتات)

Powered by WHMCompleteSolution