آموزش دیپلوی Flask روی Vultr

Image

مقدمه‌ای بر استقرار برنامه‌های فلسک در Vultr

فلسک (Flask) یک میکرو فریم‌ورک محبوب پایتون است که به دلیل سادگی و انعطاف‌پذیری بالا شهرت دارد. از سوی دیگر، Vultr یک ارائه‌دهنده خدمات ابری با کارایی بالا است. این راهنما به صورت گام به گام شما را در فرآیند استقرار یک برنامه فلسک بر روی سرور Vultr، از راه‌اندازی اولیه سرور گرفته تا ایمن‌سازی آن با Nginx و گواهی SSL، همراهی می‌کند.

پیش‌نیازهای لازم برای شروع

قبل از شروع، اطمینان حاصل کنید که موارد زیر را در اختیار دارید:

  • یک حساب کاربری فعال در Vultr.
  • یک نام دامنه ثبت‌شده که به آدرس IP سرور Vultr شما اشاره می‌کند.
  • یک برنامه ساده فلسک که آماده استقرار است.
  • آشنایی اولیه با دستورات خط فرمان لینوکس.

مرحله ۱: راه‌اندازی و پیکربندی سرور Vultr

ابتدا وارد حساب کاربری Vultr خود شوید و یک سرور جدید ایجاد کنید. نوع سرور (Cloud Compute گزینه خوبی برای شروع است)، موقعیت جغرافیایی و سیستم‌عامل را انتخاب نمایید. ما استفاده از Ubuntu 22.04 LTS را به دلیل پایداری و پشتیبانی طولانی‌مدت توصیه می‌کنیم. پس از فعال شدن سرور، آدرس IP و اطلاعات ورود را دریافت خواهید کرد. با استفاده از SSH به سرور خود متصل شوید:

ssh root@your_server_ip

مرحله ۲: آماده‌سازی محیط سرور

پس از اتصال، بسته‌های نرم‌افزاری سرور خود را به‌روزرسانی کنید:

sudo apt update && sudo apt upgrade -y

سپس، پایتون، pip و ماژول محیط مجازی (venv) را نصب کنید:

sudo apt install python3-pip python3-venv -y

برای مدیریت بهتر، یک دایرکتوری برای برنامه خود ایجاد کرده و یک محیط مجازی پایتون راه‌اندازی کنید تا وابستگی‌های پروژه ایزوله شوند.

mkdir ~/myproject
cd ~/myproject
python3 -m venv venv
source venv/bin/activate

مرحله ۳: استقرار برنامه فلسک و اجرای آن با Gunicorn

فایل‌های برنامه فلسک خود را به دایرکتوری `~/myproject` منتقل کنید. استفاده از Git برای این کار بسیار رایج است:

git clone https://github.com/yourusername/myproject.git .

سپس، بسته‌های پایتون مورد نیاز پروژه را با استفاده از فایل `requirements.txt` نصب کنید:

pip install -r requirements.txt

سرور توسعه داخلی فلسک برای محیط عملیاتی (production) مناسب نیست. به همین دلیل، از Gunicorn به عنوان یک سرور WSGI قدرتمند استفاده می‌کنیم. برای نصب آن، دستور زیر را اجرا کنید:

pip install gunicorn

برای تست، برنامه خود را با Gunicorn اجرا کنید (فرض بر این است که فایل اصلی `wsgi.py` و نمونه برنامه `app` نام دارد):

gunicorn --workers 3 --bind 0.0.0.0:8000 wsgi:app

این دستور برنامه شما را روی پورت ۸۰۰۰ اجرا می‌کند.

مرحله ۴: ایجاد یک سرویس Systemd برای مدیریت Gunicorn

برای اینکه برنامه شما به صورت خودکار پس از راه‌اندازی مجدد سرور اجرا شود و مدیریتی آسان داشته باشد، یک سرویس systemd برای آن ایجاد می‌کنیم. یک فایل سرویس جدید بسازید:

sudo nano /etc/systemd/system/myproject.service

محتوای زیر را در این فایل قرار دهید و مسیرها را مطابق با تنظیمات خود تغییر دهید:

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=youruser
Group=www-data
WorkingDirectory=/home/youruser/myproject
Environment="PATH=/home/youruser/myproject/venv/bin"
ExecStart=/home/youruser/myproject/venv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

اکنون سرویس را فعال و اجرا کنید:

sudo systemctl start myproject
sudo systemctl enable myproject

داشبورد Vultr برای ایجاد سرور جدید و انتخاب سیستم‌عامل اوبونتو

مرحله ۵: پیکربندی Nginx به عنوان پراکسی معکوس (Reverse Proxy)

Nginx به عنوان یک پراکسی معکوس عمل کرده و درخواست‌های ورودی را به Gunicorn هدایت می‌کند. این کار مزایای امنیتی و عملکردی فراوانی دارد. ابتدا Nginx را نصب کنید:

sudo apt install nginx -y

سپس یک فایل پیکربندی جدید برای سایت خود در Nginx ایجاد کنید:

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

این پیکربندی را اضافه کنید و `your_domain.com` را با دامنه خود جایگزین نمایید:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/youruser/myproject/myproject.sock;
    }
}

پیکربندی را فعال کرده و Nginx را مجدداً راه‌اندازی کنید:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo systemctl restart nginx

مرحله ۶: ایمن‌سازی با گواهی SSL از Let's Encrypt

در آخرین مرحله، سایت خود را با فعال‌سازی HTTPS ایمن می‌کنیم. برای این کار از Certbot و Let's Encrypt استفاده خواهیم کرد که گواهی‌های SSL رایگان ارائه می‌دهند. Certbot را نصب کنید:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

اکنون با استفاده از پلاگین Nginx، گواهی SSL را درخواست و نصب کنید:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot به صورت خودکار پیکربندی Nginx شما را برای پشتیبانی از HTTPS به‌روز می‌کند و فرآیند تمدید خودکار گواهی را نیز تنظیم می‌نماید.

پیکربندی Nginx به عنوان یک پراکسی معکوس برای برنامه فلسک

جمع‌بندی نهایی

تبریک می‌گوییم! شما با موفقیت یک برنامه پایتون مبتنی بر فلسک را بر روی سرور Vultr مستقر کردید. با استفاده از ترکیب قدرتمند Gunicorn، Nginx و Let's Encrypt، شما اکنون یک زیرساخت قوی، امن و آماده برای محیط عملیاتی در اختیار دارید.


Loading...