اذهب إلى المحتوى

السؤال

نشر (معدل)

مرحبا اقوم بإعداد مشروع جانغو يعمل على ngnix and gunicorn 

الموقع الاساسي يعمل بشكل رائع حيث ان ngnix يقدم الملفات الثابتة ل gunicorn بشكل ممتاز لكن عند فتح لوحة الادمن تظهر بدون تنسيقات حيث يفشل ngnix في العثور على الملفات الموجودة داخل مجلد staticfiles 

قمت بمحاولة حل المشكلة ولاحظت انه عند البحث داخل داخل شريط البحث عن staticfiles يجد ngnix الملفات لكن عند البحث عن static يظهر 404 

Screenshot2025-03-07003208.thumb.png.92c94d260761b04f88e3c850e8abfeb1.pngScreenshot2025-03-07003155.thumb.png.47ea22e064bf7866edcf45a6f7bee879.png

هذه هي اعدادات ngnix الموجودة داخل  /etc/nginx/sites-available/www.fikra-store.shop.conf 

    # إعدادات Static و Media
    location /static/ {
        alias /opt/Fikra-Project/staticfiles/;
    }

    location /media/ {
        alias /opt/Fikra-Project/media/;
    }

وهذا سجل الأخطاء الخاص ب ngnix 

2025/03/06 22:33:17 [error] 183536#183536: *24 openat() "/opt/Fikra-Project/static/jazzmin/js/main.js" failed (2: No such file or directory), client: 102.164.103.137, server: fikra-store.shop, request: "GET /static/jazzmin/js/main.js HTTP/1.1", host: "fikra-store.shop", referrer: "https://fikra-store.shop/admin/"
2025/03/06 22:33:36 [error] 183536#183536: *24 openat() "/opt/Fikra-Project/serviceworker.js" failed (2: No such file or directory), client: 102.164.103.137, server: fikra-store.shop, request: "GET /serviceworker.js HTTP/1.1", host: "fikra-store.shop", referrer: "https://fikra-store.shop/"
2025/03/06 22:34:22 [error] 183536#183536: *24 openat() "/opt/Fikra-Project/static/vendor/fontawesome-free/css/all.min.css" failed (2: No such file or directory), client: 102.164.103.137, server: fikra-store.shop, request: "GET /static/vendor/fontawesome-free/css/all.min.css HTTP/1.1", host: "fikra-store.shop"

وهذه اعدادات مشروع جانغو داخل settigns.py 

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

التنسيقات تظهر هنا بالموقع بشكل طبيعي⬇️

Screenshot 2025-03-07 003109.png

التنسيقات لا تظهر بلوحة الادارة ⬇️

Screenshot 2025-03-07 003056.png

تعديل:

عندما جربت نسخ مجلدات التنسيقات الخاصة ب لوحة الادارة من مجلد staticfiles الى مجلد static ظهرت التنسيقات ، حيث انه لسبب ما ngnix يبحث عن التنسيقات داخل مجلد static ولا يبحث عنها داخل مجلد staticfiles ارجو مساعدتي بمعرفة السبب من فضلكم.

 

تم التعديل في بواسطة محمود الساعور2
اضافة معلومات

Recommended Posts

  • 1
نشر

لنحاول التأكد من أن Nginx يستخدم location /static/ بشكل صحيح لجميع الطلبات التي تبدأ بـ /static/، وأن الـ location يتمتع بالأولوية على أي كتلة أخرى ربما تتعارض معه.

أولاً بتعديل ملف الإعدادات لاستخدام ^~ مع location /static/ لإعطائه الأولوية:

server {
    root /opt/Fikra-Project;

    location ^~ /static/ {
        alias /opt/Fikra-Project/staticfiles/;
    }

    location /media/ {
        alias /opt/Fikra-Project/media/;
    }

    # إعدادات Gunicorn
    location / {
        proxy_pass http://127.0.0.1:8000; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

حيث ^~ يخبر Nginx أنه إن تم العثور على تطابق مع /static/، فلا يتم التحقق من أي كتل location أخرى، واستخدام ذلك الـ location مباشرًة، ويجب أن يكون location ^~ /static/ يأتي قبل location / في ملف الإعدادات.

ثم تنفيذ أمر:

python manage.py collectstatic --noinput

بعد التعديل، تفقد صحة الإعدادات وأعد تحميل Nginx:

sudo nginx -t
sudo systemctl reload nginx

 

  • 0
نشر

إما أن collectstatic لم ينقل ملفات Jazzmin إلى staticfiles، أو أن Nginx يبحث في المسار الخاطئ بسبب خطأ في alias، غالبًا لم تقم بتشغيل الأمر python manage.py collectstatic بشكل صحيح بعد نشر مشروعك، وذلك لتجميع جميع الملفات الثابتة من تطبيقاتك المختلفة ومجلدات STATICFILES_DIRS في مجلد واحد محدد بواسطة STATIC_ROOT.

python manage.py collectstatic --noinput

ثم تحديث كتلة location /static/ في ملف الإعدادات كالتالي:

location /static/ {
    alias /opt/Fikra-Project/staticfiles/;
    autoindex off;
    expires max;
    access_log off;
    add_header Cache-Control "public";
}

بعد تشغيل الأمر تفقد هل يوجد مجلد jazzmin:

ls /opt/Fikra-Project/staticfiles/jazzmin/

إن لم تجده عليك إعادة تثبيت حزمة jazzmin وإضافة jazzmin إلى INSTALLED_APPS في settings.py.

ثم إعادة تحميل nginx:

sudo systemctl reload nginx

 

  • 0
نشر
بتاريخ On 7‏/3‏/2025 at 13:50 قال Mustafa Suleiman:

إما أن collectstatic لم ينقل ملفات Jazzmin إلى staticfiles، أو أن Nginx يبحث في المسار الخاطئ بسبب خطأ في alias، غالبًا لم تقم بتشغيل الأمر python manage.py collectstatic بشكل صحيح بعد نشر مشروعك، وذلك لتجميع جميع الملفات الثابتة من تطبيقاتك المختلفة ومجلدات STATICFILES_DIRS في مجلد واحد محدد بواسطة STATIC_ROOT.

python manage.py collectstatic --noinput

ثم تحديث كتلة location /static/ في ملف الإعدادات كالتالي:

location /static/ {
    alias /opt/Fikra-Project/staticfiles/;
    autoindex off;
    expires max;
    access_log off;
    add_header Cache-Control "public";
}

بعد تشغيل الأمر تفقد هل يوجد مجلد jazzmin:

ls /opt/Fikra-Project/staticfiles/jazzmin/

إن لم تجده عليك إعادة تثبيت حزمة jazzmin وإضافة jazzmin إلى INSTALLED_APPS في settings.py.

ثم إعادة تحميل nginx:

sudo systemctl reload nginx

 

اشكرك صديقي على المساعدة لكن المشكلة في الواقع ليست من امر collectstatic بل من ان ngnix لسبب ما وعلى الرغم من الاعدادات التي ارسلتها مسبقا  يبحث عن الملفات الثابتة في مجلدstatic بدلا من البحث داخل staticfiles حيث انه عندما جربت اخذ ملفات تنسيق لوحة الادارة الموجودة في staticfiles و وضعتها في داخل static ظهرت التنسيقات في حال كان لديك فكرة عن السبب ارجو منك مساعدتي .🤍

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...