دیپلوی پروژه پایتون روی DigitalOcean: راهنمای جامع

دیپلوی پروژه پایتون روی DigitalOcean: راهنمای جامع

دیپلوی (Deployment) یک پروژه پایتون، گامی حیاتی برای در دسترس قرار دادن آن برای کاربران است. DigitalOcean به عنوان یک ارائه‌دهنده زیرساخت ابری، ابزارهای قدرتمندی را برای دیپلوی آسان و مقرون‌به‌صرفه پروژه‌های پایتون فراهم می‌کند. این مقاله، یک راهنمای جامع برای دیپلوی یک پروژه پایتون روی DigitalOcean ارائه می‌دهد و بر جنبه‌های عملی و کاربردی تمرکز دارد. این آموزش در دسته ‘دیپلوی و DevOps با پایتون’ قرار می‌گیرد.

پیش‌نیازها

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

  • یک حساب کاربری فعال در DigitalOcean
  • یک پروژه پایتون آماده برای دیپلوی (به عنوان مثال، یک برنامه Flask یا Django)
  • دسترسی به ترمینال یا خط فرمان
  • آشنایی اولیه با مفاهیم SSH

مرحله ۱: ایجاد Droplet در DigitalOcean

Droplet در DigitalOcean، یک ماشین مجازی (Virtual Machine) است که به عنوان سرور شما عمل می‌کند. برای ایجاد یک Droplet:

  1. وارد حساب کاربری DigitalOcean خود شوید.
  2. روی دکمه “Create” و سپس “Droplets” کلیک کنید.
  3. یک توزیع لینوکس مناسب انتخاب کنید (Ubuntu 22.04 LTS توصیه می‌شود).
  4. یک طرح (Plan) مناسب با منابع مورد نیاز پروژه خود انتخاب کنید.
  5. یک منطقه (Region) جغرافیایی نزدیک به کاربران خود انتخاب کنید.
  6. یک کلید SSH برای دسترسی امن به سرور خود اضافه کنید (توصیه می‌شود).
  7. یک نام (Hostname) برای Droplet خود انتخاب کنید.
  8. روی دکمه “Create Droplet” کلیک کنید.

مرحله ۲: اتصال به Droplet از طریق SSH

پس از ایجاد Droplet، باید از طریق SSH به آن متصل شوید. دستور زیر را در ترمینال خود اجرا کنید (به جای your_droplet_ip، آدرس IP Droplet خود را وارد کنید):

ssh root@your_droplet_ip

اگر از کلید SSH استفاده می‌کنید، ممکن است نیاز به وارد کردن عبارت عبور (Passphrase) کلید خود داشته باشید.

مرحله ۳: نصب پیش‌نیازها

پس از اتصال به Droplet، باید پیش‌نیازهای لازم برای اجرای پروژه پایتون خود را نصب کنید. این شامل Python، pip، virtualenv و Gunicorn است.

sudo apt update
sudo apt install python3 python3-pip python3-venv
pip3 install gunicorn

مرحله ۴: انتقال پروژه پایتون به Droplet

اکنون باید پروژه پایتون خود را به Droplet منتقل کنید. چندین روش برای این کار وجود دارد، از جمله:

  • Git: اگر پروژه شما در یک مخزن Git قرار دارد، می‌توانید آن را با استفاده از دستور git clone به Droplet منتقل کنید.
  • SCP: می‌توانید از دستور scp برای کپی کردن فایل‌ها و پوشه‌ها از کامپیوتر خود به Droplet استفاده کنید.
  • SFTP: می‌توانید از یک کلاینت SFTP (مانند FileZilla) برای انتقال فایل‌ها به Droplet استفاده کنید.

به عنوان مثال، اگر از Git استفاده می‌کنید:

git clone your_repository_url

مرحله ۵: ایجاد و فعال‌سازی Virtual Environment

ایجاد یک virtual environment برای پروژه پایتون شما، به جداسازی وابستگی‌های پروژه از سایر پروژه‌ها کمک می‌کند. برای ایجاد و فعال‌سازی virtual environment:

python3 -m venv venv
source venv/bin/activate

مرحله ۶: نصب وابستگی‌های پروژه

پس از فعال‌سازی virtual environment، باید وابستگی‌های پروژه خود را با استفاده از pip نصب کنید. فایل requirements.txt را در پروژه خود قرار دهید و دستور زیر را اجرا کنید:

pip install -r requirements.txt

مرحله ۷: پیکربندی Gunicorn

Gunicorn یک سرور WSGI HTTP برای پایتون است که برای دیپلوی برنامه‌های پایتون در محیط‌های تولیدی استفاده می‌شود. برای پیکربندی Gunicorn، باید یک فایل پیکربندی ایجاد کنید. به عنوان مثال، برای یک برنامه Flask:

gunicorn --bind 0.0.0.0:8000 your_app:app

(به جای your_app:app، نام فایل و متغیر برنامه Flask خود را وارد کنید.)

مرحله ۸: پیکربندی Nginx به عنوان Reverse Proxy

Nginx یک سرور وب قدرتمند است که می‌تواند به عنوان یک reverse proxy برای Gunicorn عمل کند. این کار باعث افزایش امنیت و کارایی برنامه شما می‌شود. برای پیکربندی Nginx، یک فایل پیکربندی جدید در دایرکتوری /etc/nginx/sites-available/ ایجاد کنید. به عنوان مثال:

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

محتوای فایل پیکربندی را به صورت زیر تنظیم کنید (به جای your_domain.com، دامنه خود را وارد کنید):

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

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

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

مرحله ۹: مدیریت فرآیندها با Systemd

Systemd یک سیستم مدیریت سیستم و سرویس است که برای مدیریت فرآیندهای Gunicorn استفاده می‌شود. برای ایجاد یک فایل سرویس Systemd، یک فایل جدید در دایرکتوری /etc/systemd/system/ ایجاد کنید. به عنوان مثال:

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

محتوای فایل سرویس را به صورت زیر تنظیم کنید (به جای your_user، نام کاربری خود را وارد کنید):

[Unit]
Description=Gunicorn instance for your_app
After=network.target

[Service]
User=your_user
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/project/venv/bin/gunicorn --workers 3 --bind unix:/path/to/your/project/your_app.sock your_app:app

[Install]
WantedBy=multi-user.target

سپس، سرویس را فعال کنید و آن را راه‌اندازی کنید:

sudo systemctl start your_app
sudo systemctl enable your_app

مرحله ۱۰: تست و نظارت

پس از انجام مراحل فوق، پروژه پایتون شما باید روی DigitalOcean دیپلوی شده باشد. برای تست، به دامنه خود در مرورگر وب مراجعه کنید. همچنین، می‌توانید از ابزارهای نظارتی مانند Prometheus و Grafana برای نظارت بر عملکرد برنامه خود استفاده کنید.

نکات تکمیلی

  • امنیت: از یک فایروال برای محافظت از سرور خود در برابر حملات استفاده کنید.
  • پشتیبان‌گیری: به طور منظم از داده‌های خود پشتیبان‌گیری کنید.
  • به‌روزرسانی: سیستم عامل و وابستگی‌های خود را به‌روز نگه دارید.
  • مقیاس‌پذیری: برای مقیاس‌پذیری برنامه خود، از ابزارهایی مانند Load Balancers و Auto Scaling استفاده کنید.

این راهنما، یک نمای کلی از دیپلوی یک پروژه پایتون روی DigitalOcean ارائه می‌دهد. با توجه به پیچیدگی‌های خاص پروژه خود، ممکن است نیاز به تنظیمات اضافی داشته باشید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *