بعد تجربة طويلة مع valet-linux بنوعيه:

والمشاكل العديدة التي تسببها للشبكة في لينكس (أحيانًا ينقطع الإنترنت، وأحيانًا لا تستطيع تشغيل VPN)، وحتى بعد الحذف تبقى متعلقاتها في النظام، قررت أن أقوم بإعداد مشاريعي يدويًا باستخدام Nginx مع الدومين المحلي.

بالنسبة للشهادات، استخدمت مكتبة رائعة لتوليد شهادات HTTPS محلية: mkcert، وتعمل بدون مشاكل.

إذا كان المشروع يُستخدم بشكل متقطع، يمكن الاكتفاء بـ:

php artisan serve

لتشغيله مؤقتًا.

على لينكس، لم تحظَ Valet بالتجربة المثالية كما في macOS، ولم نحصل على Herd، لذا من الأفضل إعداد كل شيء يدويًا.


سنفترض أن مشروعك اسمه my-demo والمسار كالتالي:

~/Documents/htdocs/my-demo/

ويمكنك تعديل اسم المشروع والمسار بحسب ما لديك.


1. إعداد Nginx لتشغيل المشروع

إنشاء ملف إعداد Nginx

sudo nano /etc/nginx/sites-available/my-demo.test

ضع الإعداد التالي (متوافق مع Laravel):

server {
    listen 80;
    server_name my-demo.test;
    return 301 https://$host$request_uri;  # تحويل HTTP إلى HTTPS
}

server {
    listen 443 ssl;
    server_name my-demo.test;

    root /home/watheq/Documents/htdocs/my-demo/public;
    index index.php index.html;

    # شهادة SSL
    ssl_certificate     /etc/ssl/certs/my-demo.test.pem;
    ssl_certificate_key /etc/ssl/certs/my-demo.test-key.pem;

    # سجلات الوصول والأخطاء
    error_log /var/log/nginx/my-demo.error.log;
    access_log /var/log/nginx/my-demo.access.log;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

تفعيل الموقع

sudo ln -s /etc/nginx/sites-available/my-demo.test /etc/nginx/sites-enabled/

2. إضافة النطاق المحلي إلى hosts

sudo nano /etc/hosts

أضف السطر التالي:

127.0.0.1   my-demo.test

3. إعداد HTTPS محلي باستخدام mkcert

بعد تثبيت mkcert بحسب نظام التشغيل (التوثيق الرسمي).

الدخول لمجلد المشروع

cd ~/Documents/htdocs/my-demo

توليد الشهادة

mkcert my-demo.test

نقل الشهادة إلى مكان مخصص

sudo mv my-demo.test*.pem /etc/ssl/certs/

إعداد صلاحيات الشهادة

sudo chown root:root /etc/ssl/certs/my-demo.test*.pem
sudo chmod 600 /etc/ssl/certs/my-demo.test*.pem

هذا يجعل شهادة HTTPS موثوقة في متصفحك المحلي.


4. إعادة تحميل Nginx

sudo nginx -t
sudo systemctl reload nginx

5. اختبار المشروع

  • افتح المتصفح: https://my-demo.test

  • تحقق من عمل المشروع بدون مشاكل صلاحيات

  • تحقق من سجلات Nginx:

sudo tail -f /var/log/nginx/my-demo.error.log
sudo tail -f /var/log/nginx/my-demo.access.log

وبهذا الشكل، يمكنك إضافة أي مشروع Laravel أو PHP للتشغيل مباشرة باستخدام دومين محلي، مع HTTPS صالح ومجرب.

إذا كان عندكم أي نصائح أو أفكار لتحسين التجربة فسأكون سعيدًا بها في التعليقات.