دیپلوی پروژه پایتون روی DigitalOcean: راهنمای جامع
دیپلوی (Deployment) یک پروژه وب پایتون، گامی حیاتی برای در دسترس قرار دادن آن برای کاربران است. DigitalOcean به عنوان یک ارائه دهنده زیرساخت ابری محبوب، امکانات مناسبی برای میزبانی و دیپلوی پروژههای پایتون فراهم میکند. این مقاله به شما آموزش میدهد که چگونه یک پروژه پایتون (Flask یا Django) را روی DigitalOcean دیپلوی کنید. این راهنما برای توسعهدهندگان وب پایتون طراحی شده و فرض میکند شما با مفاهیم اولیه پایتون، Flask/Django و خط فرمان آشنایی دارید.
پیشنیازها
- یک حساب کاربری فعال در DigitalOcean
- یک پروژه پایتون (Flask یا Django) آماده برای دیپلوی
- دسترسی به ترمینال یا خط فرمان
- آشنایی با مفاهیم SSH
مراحل دیپلوی
۱. ایجاد Droplet
Droplet در DigitalOcean معادل یک ماشین مجازی است. برای شروع، یک Droplet جدید ایجاد کنید:
- وارد حساب کاربری DigitalOcean خود شوید.
- روی دکمه “Create” و سپس “Droplets” کلیک کنید.
- یک توزیع لینوکس انتخاب کنید (Ubuntu 22.04 LTS توصیه میشود).
- یک طرح (Plan) مناسب با منابع مورد نیاز پروژه خود انتخاب کنید. برای پروژههای کوچک، یک Droplet با 1GB RAM و 1 vCPU کافی است.
- موقعیت جغرافیایی (Region) را انتخاب کنید. نزدیکترین منطقه به کاربران خود را انتخاب کنید.
- یک کلید SSH اضافه کنید (توصیه میشود برای امنیت بیشتر).
- یک نام برای 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 استفاده میکنیم:
- Git را روی Droplet نصب کنید:
sudo apt install git -y - به دایرکتوری مورد نظر برای قرار دادن پروژه بروید:
cd /var/www/ - پروژه خود را از مخزن Git کلون کنید:
git clone your_repository_url
۶. ایجاد Virtual Environment
یک virtual environment برای پروژه خود ایجاد کنید:
- به دایرکتوری پروژه بروید:
cd your_project_directory - یک virtual environment ایجاد کنید:
virtualenv venv - 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 ایجاد کنید:
- یک فایل پیکربندی جدید در دایرکتوری
/etc/nginx/sites-available/ایجاد کنید (مثلاًyour_project). - محتوای زیر را در فایل پیکربندی قرار دهید (مقادیر را با توجه به پروژه خود تنظیم کنید):
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 پیکربندی کنید:
- یک فایل سرویس جدید در دایرکتوری
/etc/systemd/system/ایجاد کنید (مثلاًyour_project.service). - محتوای زیر را در فایل سرویس قرار دهید (مقادیر را با توجه به پروژه خود تنظیم کنید):
[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 دیپلوی کردید. این راهنما یک نقطه شروع خوب برای دیپلوی پروژههای پایتون شما است. با توجه به نیازهای خاص پروژه خود، ممکن است نیاز به تنظیمات بیشتری داشته باشید. به یاد داشته باشید که امنیت پروژه خود را جدی بگیرید و از بهترین شیوهها برای محافظت از آن استفاده کنید.

بدون دیدگاه