مشکل در کار با uwsgi

سلام دوستان خسته نباشید بنده توی لود کردن فایل های استاتیک توی جنگو و داکر دچار مشکل شدم

بعضی جات نوشته بود این کد ها رو به ستینگ uwsgi اضافه کنم

static-map = /static=/path/to/static/files
static-expires = /* 7776000
offload-threads = %k

کسی میتونه این ها رو برام توضیح بده که کارشون چیه یا کلا در این رابطه یه راهمنای کنه
برای لود کردن فایل های استاتیک بین wusgi و nginx و django

و کلا یه مقایسه بین gunicorn , uwsgi

مساله اینه که بهتره اصلا این ریکوئستها از nginx اونطرفتر نره!
بهترین سرو کننده‌ی فایلهای استاتیک که من میشناسم همین nginx هست. خیلی هم سطح پایین کارمیکنه و البته با C نوشته شده. چه کاریه که بخوایم ریکوئستها الکی یک یا چند لایه بالاتر برن و برسن به پایتون؟

توی کانفیگهای nginx میتونید ست کنید که مثلا ریکوئستهای که به sitename.com/static میاد رو از دایرکتوری /home/username/projectname/static سرو کنه.

من الآن کانفیگ برای پایتون ندارم که همونو کپی کنم براتون ولی فکر میکنم این جواب بده:

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name domain.com;
  root        /home/spc/project;

  access_log /var/log/nginx/domain.com.access.log;
  error_log  /var/log/nginx/domain.com.error.log warn;

  location /static { # requests of site.com/static -> /home/spc/project/static
    try_files $uri $uri/ =404;
  }

  location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
  }
}
3 پسندیده

تقریبا برای همه پروژه ها همینو استفاده میکنم

##### #nginx

sudo nano /etc/nginx/sites-available/<projectname>

server {
    listen 80;
    server_name <projectdomain>.com www.<projectdomain>.com;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/<projectname>;
    }
    location /media/ {
        root /home/ubuntu/<projectname>;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

sudo ln -s /etc/nginx/sites-available/<projectname> /etc/nginx/sites-enabled

##### #nginx test

nginx -t
sudo systemctl restart nginx
sudo ufw delete allow 8000
sudo ufw allow 'Nginx Full'

2 پسندیده

فبلا این لینک رو یه جای دیگه هم گذاشته بودم. فکر کنم اینجا هم منتشر کنم خوب باشه.
یه سرویسه که به کانفیگ کردن nginx کمک میکنه. آپشنهایی داره که بعد از چندسال کار با nginx بلد نبودم!

4 پسندیده