Në këtë artikull, ne do të konfigurojmë një VPS për të shërbyer aplikacionet në internet Python me Gunicorn dhe Nginx si një përfaqësues të kundërt. Ne përdorim Nginx si një përfaqësues të kundërt në vend që të shërbejmë drejtpërdrejt me Gunicorn për të parandaluar sulmet DoS në Gunicorn. Përdorimi i Nginx rezulton gjithashtu në performancë më të mirë (me proxy buffering) dhe rezulton në trajtimin e më shumë kërkesave.
Duke filluar
Ky tutorial supozon se ju tashmë keni një VM me Ubuntu 14.04 ose më të ri të instaluar, përditësuar dhe të siguruar.
- Shembulli ynë Nginx do të funksionojë në portën HTTP 80 (por mund ta përmirësoni lehtësisht në HTTPS).
- Shembulli ynë i aplikacionit Python do të dëgjojë në portin 8080. Ky port do të mbyllet në iptables për të parandaluar aksesin në distancë.
- Ky tutorial duhet të ekzekutohet në shpërndarje të tjera me ndryshime minimale.
Install pip, virtualenv:
apt-get install python-pip python-virtualenv
Mbyll portin 8080. Gunicorn do të arrihet vetëm nga Nginx.
iptables -A INPUT -p tcp --destination-port 8080 -j DROP
Krijoni një dosje të re dhe konfiguroni aplikacionin tonë. Ne do të përdorim kornizën Flask.
mkdir /var/www-folder/
cd /var/www-folder/
virtualenv exampleapp
source exampleapp/bin/activate
cd exampleapp
pip install gunicorn
pip install flask
Krijo skedarin e aplikacionit.
nano myapplication.py
Ngjitni sa vijon brenda:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Vultr!'
Kjo do të prodhonte një faqe të thjeshtë duke thënë "Përshëndetje, Vultr!" kur dikush hyn në faqe. Tani, filloni Gunicorn. Zëvendësojeni xme dyfishin e numrit të bërthamave të CPU-së së VM-së tuaj.
gunicorn -w x myapplication:app &
Instaloni Nginx dhe konfiguroni përfaqësuesin e kundërt.
deactivate
apt-get install nginx
nano /etc/nginx/sites-enabled/default
Kërkoni për location / {rreshtin dhe zëvendësoni përmbajtjen brenda kllapave me përmbajtjen e mëposhtme.
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8000/;
Ky konfigurim udhëzon Nginx të përcjellë disa informacione (protokolli HTTP, adresa IP e largët) së bashku me kërkesën aktuale te serveri Gunicorn. Rifresko Nginx.
service nginx reload
Në këtë pikë, aplikacioni juaj Gunicorn është konfiguruar siç duhet. Mund ta përdorni duke përdorur një shfletues ueb në http://your-vps-ip/.