GNU/Linux >> Belajar Linux >  >> Panels >> Panels

Cara Deploy Aplikasi Flask dengan Nginx dan Gunicorn di Ubuntu 20.04

Flask adalah kerangka kerja web kecil, ringan, dan mikro yang ditulis dengan Python. Ini memungkinkan Anda untuk mengembangkan aplikasi web dengan mudah tanpa alat atau pustaka apa pun. Aplikasi web ini dapat berupa blog, halaman wiki, halaman web, aplikasi kalender berbasis web, atau situs web komersial. Sederhana, mudah digunakan, mudah dipelajari, dan ramah bagi pemula karena tidak memerlukan ketergantungan apa pun.

Dalam tutorial ini, kami akan menunjukkan cara men-deploy aplikasi Flask dengan Gunicorn dan Nginx di Ubuntu 20.04.

Prasyarat

  • VPS Ubuntu 20.04 dengan akses root diaktifkan, atau pengguna dengan hak sudo.

Masuk dan Perbarui Paket

Pertama, kita harus masuk ke server menggunakan SSH. Anda dapat melakukannya dengan memasukkan perintah ini:

ssh root@IP_Address -p Port_Number

Ingatlah untuk mengganti root dengan nama pengguna Anda jika Anda tidak menggunakan pengguna root. Ubah IP_Address dan Port_Number sesuai dengan alamat IP server Anda dan nomor port SSH.

Setelah Anda masuk, Anda harus memperbarui semua paket Anda ke versi terbaru yang tersedia.

apt-get update -y
apt-get upgrade -y

Setelah semua paket diperbarui, mulai ulang server Anda untuk menerapkan perubahan konfigurasi.

Instal Dependensi yang Diperlukan

Flask adalah aplikasi berbasis python. Jadi Python dan dependensi lain yang diperlukan harus diinstal di server Anda. Jika belum terinstal, Anda dapat menginstal semuanya dengan perintah berikut:

apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y

Setelah semua dependensi terinstal, instal paket lingkungan virtual Python menggunakan perintah berikut:

apt-get install python3-venv -y

Setelah terinstal, Anda dapat melanjutkan ke langkah berikutnya.

Instal Server Web Nginx

Dalam tutorial ini, kita akan menggunakan Nginx sebagai reverse proxy untuk aplikasi Flask. Jadi, Anda perlu menginstal paket server web Nginx ke server Anda. Anda dapat menginstalnya menggunakan perintah berikut:

apt-get install nginx -y

Setelah Nginx terinstal, mulai dan aktifkan layanan Nginx menggunakan perintah berikut:

systemctl start nginx
systemctl enable nginx

Membuat Lingkungan Virtual untuk Aplikasi Flask

Selanjutnya, Anda perlu membuat lingkungan virtual untuk aplikasi Flask.

Pertama, buat direktori proyek dengan perintah berikut:

mkdir ~/project

Selanjutnya, ubah direktori ke proyek Anda dan buat lingkungan virtual Python dengan perintah berikut:

cd ~/project
python3 -m venv venv

Selanjutnya, aktifkan lingkungan Anda dengan perintah berikut:

source venv/bin/activate

Selanjutnya install Gunicorn, Flask, dan komponen lainnya dengan perintah berikut:

pip install wheel
pip install gunicorn flask

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Buat Aplikasi Flask

Selanjutnya, Anda perlu membuat contoh aplikasi Flask untuk proyek Anda. Jalankan perintah berikut untuk membuatnya di dalam direktori proyek Anda:

nano ~/project/flaskapp.py

Tambahkan kode berikut:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcome to Flask Application!"
if __name__ == "__main__":
    app.run(host='0.0.0.0')

Simpan dan tutup file kemudian verifikasi aplikasi Anda dengan perintah berikut:

cd ~/project/
python3 flaskapp.py

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

 * Serving Flask app 'flaskapp' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)

Tekan CTRL+C untuk menutup aplikasi.

Buat Titik Masuk WSGI untuk Gunicorn

Selanjutnya, Anda perlu membuat titik masuk WSGI untuk melayani aplikasi Anda melalui Gunicorn.

Jalankan perintah berikut untuk membuatnya:

nano ~/project/wsgi.py

Tambahkan baris berikut:

from flaskapp import app
if __name__ == "__main__":
    app.run()

Simpan dan tutup file kemudian verifikasi apakah Gunicorn dapat melayani aplikasi dengan benar menggunakan perintah di bawah ini:

cd ~/project/
gunicorn --bind 0.0.0.0:5000 wsgi:app

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0
[2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352)
[2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync
[2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354

Tekan CTRL+C untuk menghentikan aplikasi. Selanjutnya, nonaktifkan dari lingkungan virtual Python dengan perintah berikut:

deactivate

Buat File Layanan Systemd untuk Aplikasi Flask

Selanjutnya, Anda perlu membuat file unit systemd untuk aplikasi Flask. Anda dapat membuatnya dengan perintah berikut:

nano /etc/systemd/system/flask.service

Tambahkan baris berikut:

[Unit]
Description=Gunicorn instance to serve Flask
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/project
Environment="PATH=/root/project/venv/bin"
ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.target

Simpan dan tutup file, lalu atur kepemilikan dan izin yang tepat untuk proyek labu:

chown -R root:www-data /root/project
chmod -R 775 /root/project

Selanjutnya, muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, mulai layanan flask dan aktifkan untuk memulai pada sistem reboot:

systemctl start flask
systemctl enable flask

Selanjutnya, verifikasi status labu dengan perintah berikut:

systemctl status flask

Keluaran:

● flask.service - Gunicorn instance to serve Flask
     Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago
   Main PID: 9376 (gunicorn)
      Tasks: 2 (limit: 2353)
     Memory: 27.8M
     CGroup: /system.slice/flask.service
             ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
             └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app

Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask.
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376)
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync
Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393

Konfigurasi Nginx sebagai Proxy Terbalik untuk Aplikasi Flask

Selanjutnya, Anda perlu mengkonfigurasi Nginx sebagai proxy terbalik untuk melayani aplikasi Flask melalui port 80. Untuk melakukannya, buat file konfigurasi virtual host Nginx:

nano /etc/nginx/conf.d/flask.conf

Tambahkan baris berikut:

server {
    listen 80;
    server_name flask.example.com;
    location / {
        include proxy_params;
        proxy_pass  http://127.0.0.1:5000;
    }
}

Simpan dan tutup file kemudian verifikasi Nginx untuk kesalahan sintaks:

nginx -t

Anda akan melihat output berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Terakhir, restart layanan Nginx untuk menerapkan perubahan:

systemctl restart nginx

Akses Aplikasi Flask

Pada titik ini, aplikasi Flask Anda diinstal, dikonfigurasi, dan dihosting dengan proxy Nginx. Sekarang Anda dapat mengaksesnya menggunakan URL http://flask.example.com . Anda akan melihat halaman berikut:

Selamat! Anda telah berhasil men-deploy aplikasi Flask dengan Gunicorn dan Nginx di server Ubuntu 20.04.

Namun, jika Anda adalah salah satu pelanggan Managed Ubuntu Hosting kami, atau jika Anda menggunakan salah satu paket Managed VPS Hosting kami, Anda tidak perlu menginstal aplikasi Flask di Ubuntu 20.04 VPS Anda – cukup tanyakan kepada admin kami, duduk, dan santai. Admin kami akan segera menginstal aplikasi Flask di Ubuntu 20.04 (atau OS lain yang Anda miliki bersama kami) untuk Anda.

PS. Jika Anda menyukai posting ini tentang cara menginstal aplikasi Flask di VPS Ubuntu 20.04, silakan bagikan dengan teman-teman Anda di jejaring sosial menggunakan tombol di bawah ini, atau cukup tinggalkan komentar di bagian komentar. Terima kasih.


Panels
  1. Cara menyebarkan Aplikasi Node.js dengan pm2 dan Nginx di Ubuntu

  2. Cara Menginstal Nginx dengan Google PageSpeed ​​di Ubuntu 20.04

  3. Cara Mengatur Django dengan Postgres, Nginx dan Gunicorn di Ubuntu 20.04

  1. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  2. Cara Menyebarkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  3. Cara Menginstal Node.js dengan NVM dan Nginx di Ubuntu 22.04

  1. Cara Menginstal Django dengan PostgreSQL dan Nginx di Ubuntu 16.04

  2. Cara Menginstal GitBucket dengan Nginx di Ubuntu 18.04 LTS

  3. Cara menginstal PHP 7.4 Dengan Nginx di Ubuntu 20.04