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

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

دیپلوی (Deployment) یک پروژه وب پایتون، گامی حیاتی برای در دسترس قرار دادن آن برای کاربران است. DigitalOcean به عنوان یک ارائه دهنده زیرساخت ابری محبوب، امکانات مناسبی برای میزبانی و دیپلوی پروژه‌های پایتون فراهم می‌کند. این مقاله به شما آموزش می‌دهد که چگونه یک پروژه پایتون (Flask یا Django) را روی DigitalOcean دیپلوی کنید. این راهنما برای توسعه‌دهندگان وب پایتون طراحی شده و فرض می‌کند شما با مفاهیم اولیه پایتون، Flask/Django و خط فرمان آشنایی دارید.

پیش‌نیازها

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

مراحل دیپلوی

۱. ایجاد Droplet

Droplet در DigitalOcean معادل یک ماشین مجازی است. برای شروع، یک Droplet جدید ایجاد کنید:

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

۲. اتصال به Droplet از طریق SSH

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

ssh root@your_droplet_ip

اگر از کلید SSH استفاده می‌کنید، ممکن است نیاز به تنظیم مجوزهای کلید SSH در Droplet داشته باشید.

۳. به‌روزرسانی سیستم

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

sudo apt update && sudo apt upgrade -y

۴. نصب Python و Pip

اگر Python از قبل نصب نیست، آن را نصب کنید:

sudo apt install python3 python3-pip -y

همچنین، virtualenv را برای مدیریت وابستگی‌های پروژه نصب کنید:

pip3 install virtualenv

۵. انتقال پروژه به Droplet

پروژه پایتون خود را به Droplet منتقل کنید. می‌توانید از روش‌های مختلفی مانند Git، SCP یا SFTP استفاده کنید. در اینجا از Git استفاده می‌کنیم:

  1. Git را روی Droplet نصب کنید: sudo apt install git -y
  2. به دایرکتوری مورد نظر برای قرار دادن پروژه بروید: cd /var/www/
  3. پروژه خود را از مخزن Git کلون کنید: git clone your_repository_url

۶. ایجاد Virtual Environment

یک virtual environment برای پروژه خود ایجاد کنید:

  1. به دایرکتوری پروژه بروید: cd your_project_directory
  2. یک virtual environment ایجاد کنید: virtualenv venv
  3. virtual environment را فعال کنید: source venv/bin/activate

۷. نصب وابستگی‌ها

وابستگی‌های پروژه خود را با استفاده از pip نصب کنید:

pip install -r requirements.txt

(فرض بر این است که شما یک فایل requirements.txt دارید که لیست وابستگی‌های پروژه را در خود جای داده است.)

۸. نصب Gunicorn

Gunicorn یک سرور WSGI است که برای اجرای برنامه‌های پایتون وب استفاده می‌شود. آن را نصب کنید:

pip install gunicorn

۹. تست اجرای پروژه با Gunicorn

پروژه خود را با Gunicorn تست کنید:

gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application

(به جای your_project.wsgi:application، مسیر صحیح فایل WSGI پروژه خود را قرار دهید.)

اگر پروژه شما با موفقیت اجرا شد، می‌توانید آن را در مرورگر خود با آدرس IP Droplet و پورت 8000 مشاهده کنید (مثلاً http://your_droplet_ip:8000).

۱۰. نصب Nginx

Nginx یک وب سرور معکوس (Reverse Proxy) است که ترافیک را به Gunicorn هدایت می‌کند. آن را نصب کنید:

sudo apt install nginx -y

۱۱. پیکربندی Nginx

یک فایل پیکربندی جدید برای پروژه خود در Nginx ایجاد کنید:

  1. یک فایل پیکربندی جدید در دایرکتوری /etc/nginx/sites-available/ ایجاد کنید (مثلاً your_project).
  2. محتوای زیر را در فایل پیکربندی قرار دهید (مقادیر را با توجه به پروژه خود تنظیم کنید):
server {
    listen 80;
    server_name your_domain.com; # یا آدرس IP Droplet

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

    location /static/ {
        alias /var/www/your_project_directory/static/;
    }
}

your_domain.com را با دامنه خود یا آدرس IP Droplet جایگزین کنید. /var/www/your_project_directory/static/ را با مسیر دایرکتوری static پروژه خود جایگزین کنید.

۱۲. فعال‌سازی فایل پیکربندی Nginx

فایل پیکربندی را فعال کنید:

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

۱۳. تست و راه‌اندازی مجدد Nginx

پیکربندی Nginx را تست کنید:

sudo nginx -t

اگر تست موفقیت‌آمیز بود، Nginx را راه‌اندازی مجدد کنید:

sudo systemctl restart nginx

۱۴. اجرای Gunicorn به عنوان یک سرویس Systemd

برای اینکه Gunicorn به طور خودکار پس از راه‌اندازی مجدد Droplet اجرا شود، آن را به عنوان یک سرویس Systemd پیکربندی کنید:

  1. یک فایل سرویس جدید در دایرکتوری /etc/systemd/system/ ایجاد کنید (مثلاً your_project.service).
  2. محتوای زیر را در فایل سرویس قرار دهید (مقادیر را با توجه به پروژه خود تنظیم کنید):
[Unit]
Description=Gunicorn instance for your_project
After=network.target

[Service]
User=your_user # نام کاربری خود را جایگزین کنید
Group=www-data
WorkingDirectory=/var/www/your_project_directory
ExecStart=/var/www/your_project_directory/venv/bin/gunicorn --workers 3 --bind unix:/var/www/your_project_directory/your_project.sock your_project.wsgi:application

[Install]
WantedBy=multi-user.target

your_user را با نام کاربری خود جایگزین کنید. your_project.sock را با یک نام فایل socket منحصر به فرد جایگزین کنید.

۱۵. فعال‌سازی و راه‌اندازی سرویس Systemd

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

sudo systemctl enable your_project.service

سرویس Systemd را راه‌اندازی کنید:

sudo systemctl start your_project.service

وضعیت سرویس را بررسی کنید:

sudo systemctl status your_project.service

۱۶. تنظیم Nginx برای استفاده از Socket Gunicorn

فایل پیکربندی Nginx را ویرایش کنید و proxy_pass را به socket Gunicorn تغییر دهید:

server {
    listen 80;
    server_name your_domain.com; # یا آدرس IP Droplet

    location / {
        proxy_pass http://unix:/var/www/your_project_directory/your_project.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /static/ {
        alias /var/www/your_project_directory/static/;
    }
}

Nginx را راه‌اندازی مجدد کنید:

sudo systemctl restart nginx

نتیجه‌گیری

با دنبال کردن این مراحل، شما با موفقیت یک پروژه پایتون (Flask یا Django) را روی DigitalOcean دیپلوی کردید. این راهنما یک نقطه شروع خوب برای دیپلوی پروژه‌های پایتون شما است. با توجه به نیازهای خاص پروژه خود، ممکن است نیاز به تنظیمات بیشتری داشته باشید. به یاد داشته باشید که امنیت پروژه خود را جدی بگیرید و از بهترین شیوه‌ها برای محافظت از آن استفاده کنید.

بدون دیدگاه

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

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