Dalam artikel ini, kami akan menyediakan VPS untuk melayani aplikasi web Python dengan Gunicorn dan Nginx sebagai proksi terbalik. Kami menggunakan Nginx sebagai proksi terbalik dan bukannya berkhidmat dengan Gunicorn secara langsung untuk mengelakkan serangan DoS ke Gunicorn. Menggunakan Nginx juga menghasilkan prestasi yang lebih baik (dengan penyangga proksi), dan menghasilkan lebih banyak permintaan yang ditangani.
Bermula
Tutorial ini mengandaikan bahawa anda sudah mempunyai VM dengan Ubuntu 14.04 atau yang lebih baru dipasang, dikemas kini dan dilindungi.
- Contoh Nginx kami akan dijalankan pada port HTTP 80 (tetapi anda boleh menaik taraf ke HTTPS dengan mudah).
- Contoh aplikasi Python kami akan mendengar di port 8080. Port ini akan ditutup pada iptables untuk mengelakkan akses jauh.
- Tutorial ini harus dijalankan pada distro lain dengan sedikit perubahan.
Memasang pip
, virtualenv
:
apt-get install python-pip python-virtualenv
Tutup port 8080. Gunicorn hanya dapat dicapai oleh Nginx.
iptables -A INPUT -p tcp --destination-port 8080 -j DROP
Buat folder baru dan konfigurasikan aplikasi kami. Kami akan menggunakan kerangka Flask.
mkdir /var/www-folder/
cd /var/www-folder/
virtualenv exampleapp
source exampleapp/bin/activate
cd exampleapp
pip install gunicorn
pip install flask
Buat fail aplikasi.
nano myapplication.py
Tampalkan perkara berikut di dalam:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Vultr!'
Ini akan menghasilkan halaman mudah yang bertuliskan "Hello, Vultr!" semasa seseorang mengakses halaman. Sekarang, mulakan Gunicorn. Ganti x
dengan 2 kali bilangan teras CPU VM anda.
gunicorn -w x myapplication:app &
Pasang Nginx dan konfigurasikan proksi terbalik.
deactivate
apt-get install nginx
nano /etc/nginx/sites-enabled/default
Cari location / {
baris dan ganti kandungan di dalam kurungan dengan kandungan berikut.
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/;
Konfigurasi ini memerintahkan Nginx untuk meneruskan beberapa maklumat (protokol HTTP, alamat IP jarak jauh) bersama dengan permintaan sebenarnya ke pelayan Gunicorn. Muat semula Nginx.
service nginx reload
Pada ketika ini, aplikasi Gunicorn anda telah dikonfigurasi dengan betul. Anda boleh mengaksesnya menggunakan penyemak imbas web di http://your-vps-ip/
.