برنامه نویسی

NGINX به عنوان یک پروکسی معکوس – جنگو در تولید قسمت 6

پیشگفتار

اکنون که برنامه ما با Gunicorn به عنوان یک سرور برنامه اجرا می شود، فقط باید آن را از طریق nginx به اینترنت عمومی بیاوریم. nginx فایل های استاتیک ما را ارائه می دهد و هر چیز دیگری را به عنوان یک پروکسی معکوس به Gunicorn ارسال می کند. nginx توسط شرکت هایی مانند Netflix و Dropbox برای آنلاین نگه داشتن سایت ها با تعداد زیادی بازدید کننده استفاده می شود. ما همچنین رمزگذاری https خود را با certbot تنظیم خواهیم کرد.

راه اندازی nginx

ابتدا می توانید nginx را نصب کنید.

sudo apt install nginx
sudo service enable nginx
sudo service start nginx
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

cat /etc/nginx/nginx.conf
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تمام تنظیمات مهم وجود دارد. اکنون می توانید به دامنه خود بروید، اکنون باید توسط وب سایت استاندارد nginx مورد استقبال قرار بگیرید. هورا! سرور شما اکنون به طور رسمی در اینترنت باز قابل دسترسی است.

اختیاری – nginx config als softlink

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

cp /etc/nginx/nginx.conf srv/www/meine_app/produktion/nginx.conf
git commit -m "nginx.conf" && git push

rm /etc/nginx/nginx.conf
ln -s /srv/www/meine_app/produktion/nginx.conf /etc/nginx/nginx.conf

# Deine Datei kann nun in deiner repository geupdated werden:
ls -l /etc/nginx/nginx.conf
lrwxrwxrwx 1 root root 40 May 29 20:48 /etc/nginx/nginx.conf -> /srv/www/meine_app/produktion/nginx.conf
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی certbot

برای رمزگذاری برنامه وب خود با https، به گواهی نیاز دارید. می توانید یک گواهی رایگان از Let’s encrypt دریافت کنید. اما این گواهی پس از 12 ماه منقضی می شود و به همین دلیل از آن استفاده می کنیم certbot به طور خودکار گواهی را هر 12 ماه تمدید کنید.

در اینجا نحوه نصب certbot در Debian آورده شده است:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا certbot باید مال شما باشد nginx.conf سازگار شده اند. تغییرات را بررسی کنید git status یک

cd /srv/www/meine_app
git status
git add produktion/nginx.conf
git commit -m "certbot setup"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر از معماری متفاوتی استفاده می کنید، می توانید اطلاعات بیشتری را در اینجا در وب سایت certbot دریافت کنید.

تنظیمات بیشتر nginx.conf.

اما همه اینها هنوز کافی نیست. اکنون باید .conf خود را برای راه اندازی آماده کنید. سپس کل چیز چیزی شبیه به این است:

worker_processes 1;
user www-data;

# Hier sind deine error logs - für alle Zugriffe gibt es auch ein access.log am gleichen Ort:
error_log  /var/log/nginx/error.log info;
pid /var/run/nginx.pid;

# events kannst du so lassen:
events {
  worker_connections 1024; # increase if you have lots of clients
  accept_mutex off; # set to 'on' if nginx worker_processes > 1
}


# Mehrere Voreinstellungen für django:
http {
  include mime.types;
  # fallback in case we can't determine a type
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log combined;
  sendfile on;

  upstream app_server {
    # fail_timeout=0 means we always retry an upstream even if it failed
    # to return a good HTTP response

    # for UNIX domain socket setups
    server unix:/tmp/gunicorn.sock fail_timeout=0;
  }


# Das ist dein HTTP - Server:
  server {
    listen 80;

    server_name meine_domain.de;

    return 301 https://$server_name$request_uri;
  }

  # Das ist dein HTTPS - Server:
  server {

    listen 443 ssl;
    client_max_body_size 75M;

    server_name meine_domain.de;

    # Hier sind deine ssl - Zertifikate, die du dir mit certbot geholt hast:
    ssl_certificate     /etc/letsencrypt/live/meine_domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/meine_domain.de/privkey.pem;

    keepalive_timeout 5;

    # Hier sind deine Statischen Dateien. Sie werden in Produktion 
    # direkt von nginx gehosted. In deinen django settings 
    # musst du STATIC_ROOT = "/srv/www/static" hinzufügen
    location /static {
        alias /srv/www/static;
    }

    # Das hier ist deine Proxy - Server Weiterleitung. Dein lokaler 
    # Gunicorn wird so an das offene Internet weitergeleitet. 
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # Hier kanst du deine error - Seiten bereitstellen. Da diese 
    # Statisch sind, werden sie direkt von nginx bereitgestellt
    error_page 500 502 503 504 /500.html;
    location = /500.html {
      root /srv/www/meine_repository/meine_app/static;
    }

  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برنامه وب خود را با Gunicorn شروع کنید

اکنون فقط یک چیز از دست رفته است، برنامه خودتان!
مانند دفعه قبل، می توانید آن را با Gunicorn شروع کنید.

# Exportiere dein Produktions - env, damit deine Richtigen Einstellungen geladen werden.
export ENV_NAME=production

# Starte dein Gunicorn - Die Applikation befindet sich im venv in deiner Repository
# Deine .wsgi ist im Verzeichnis deiner App
# und mit -b kannst du deine lokale ip bestimmen - Diese leitest du an nginx weiter.
/srv/www/meine_repository/venv/bin/gunicorn /srv/www/meine_repository/meine_app/meine_app.wsgi -b 127.0.0.1:8000
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی جدید خود را بارگیری کنید:

sudo systemctl daemon-reload
sudo systemctl restart nginx.service
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید مرورگر خود را باز کنید و برنامه خود را در دامنه خود مشاهده کنید!

در قسمت بعدی فایل های .service شما را برای systemd می سازیم تا حتی بعد از a reboot همه برنامه های مهم شما در حال اجرا هستند.

PS: از کدنویسی لذت ببرید،
مال شما، روبن

وبلاگ من

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا