بعد تجربة طويلة مع 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.test3. إعداد 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 nginx5. اختبار المشروع
-
افتح المتصفح:
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 صالح ومجرب.
إذا كان عندكم أي نصائح أو أفكار لتحسين التجربة فسأكون سعيدًا بها في التعليقات.