ratanon.com - infrastructure

NewApp In Nginx

สรุปการตั้งค่า Nginx เพื่อเพิ่ม App ใหม่ และขอใบรับรอง SSL สำหรับ มี gunicorn จะข้ามไปขั้นตอน add เพิ่มเลยนะ ...


ระบบมี gunicorn จะข้ามไปขั้นตอน add เพิ่มเลยนะ ...


สร้าง Flask App (ตัวอย่าง)

mkdir -p /home/m1n.app/python
cd /home/m1n.app/python


สร้างไฟล์ api.py

nano api.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
  return "API is running!"

if __name__ == '__main__':
  app.run()


สร้าง Systemd Service สำหรับ Gunicorn

sudo nano /etc/systemd/system/api.service
[Unit]
Description=API Flask App
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/m1n.app/python
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 0.0.0.0:5001 api:app
Restart=always

[Install]
WantedBy=multi-user.target


เริ่มต้นและเปิดใช้งาน Gunicorn

sudo systemctl start api
sudo systemctl enable api
sudo systemctl status api


ขอใบรับรอง SSL ด้วย Certbot

ติดตั้ง Certbot และปลั๊กอิน Cloudflare ถ้าเคยลงในเครื่องนี้แล้ว แก้ใน Resources User API Tokens เป็น All Zone แล้วใช้คำสั่ง ขอใบรับรอง SSL สำหรับโดเมน ได้เลย ข้าม 3 ข้อล่างไป

sudo apt-get install certbot python3-certbot-dns-cloudflare

สร้างไฟล์ Credentials สำหรับ Cloudflare

sudo nano /root/.cloudflare_credentials
dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN


ตั้งค่าการอนุญาต

sudo chmod 600 /root/.cloudflare_credentials


ขอใบรับรอง SSL สำหรับโดเมน

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.cloudflare_credentials -d api.m1n.app



ตั้งค่า Nginx เพื่อรองรับ API ใหม่ สร้างไฟล์การตั้งค่า Nginx

sudo nano /etc/nginx/sites-available/api

server {
  listen 8443 ssl;
  server_name api.m1n.app;

  ssl_certificate /etc/letsencrypt/live/api.m1n.app/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/api.m1n.app/privkey.pem;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5;

  location / {
    proxy_pass http://127.0.0.1:5001;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}


สร้าง symbolic link ไปยัง sites-enabled

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-enabled/



ทดสอบการตั้งค่าและรีโหลด Nginx

sudo nginx -t
sudo systemctl reload nginx


ตรวจสอบการทำงานของ Firewall และเปิดพอร์ตที่จำเป็น

ทดสอบการเข้าถึง API ใช้เบราว์เซอร์หรือ curl เพื่อตรวจสอบ:

curl https://api.m1n.app:8443/

จะเห็นข้อความ "API is running!"


ถ้ามี app อื่นก็ขยับ port 500x ไปเรื่อยๆ

0
10