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: از کدنویسی لذت ببرید،
مال شما، روبن
وبلاگ من