دیپلوی پروژه پایتون روی DigitalOcean: راهنمای جامع
دیپلوی (Deployment) یک پروژه پایتون، گامی حیاتی برای در دسترس قرار دادن آن برای کاربران است. DigitalOcean به عنوان یک ارائهدهنده زیرساخت ابری، ابزارهای قدرتمندی را برای دیپلوی آسان و مقرونبهصرفه پروژههای پایتون فراهم میکند. این مقاله، یک راهنمای جامع برای دیپلوی یک پروژه پایتون روی DigitalOcean ارائه میدهد و بر جنبههای عملی و کاربردی تمرکز دارد. این آموزش در دسته ‘دیپلوی و DevOps با پایتون’ قرار میگیرد.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را در اختیار دارید:
- یک حساب کاربری فعال در DigitalOcean
- یک پروژه پایتون آماده برای دیپلوی (به عنوان مثال، یک برنامه Flask یا Django)
- دسترسی به ترمینال یا خط فرمان
- آشنایی اولیه با مفاهیم SSH
مرحله ۱: ایجاد Droplet در DigitalOcean
Droplet در DigitalOcean، یک ماشین مجازی (Virtual Machine) است که به عنوان سرور شما عمل میکند. برای ایجاد یک Droplet:
- وارد حساب کاربری DigitalOcean خود شوید.
- روی دکمه “Create” و سپس “Droplets” کلیک کنید.
- یک توزیع لینوکس مناسب انتخاب کنید (Ubuntu 22.04 LTS توصیه میشود).
- یک طرح (Plan) مناسب با منابع مورد نیاز پروژه خود انتخاب کنید.
- یک منطقه (Region) جغرافیایی نزدیک به کاربران خود انتخاب کنید.
- یک کلید SSH برای دسترسی امن به سرور خود اضافه کنید (توصیه میشود).
- یک نام (Hostname) برای Droplet خود انتخاب کنید.
- روی دکمه “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 ارائه میدهد. با توجه به پیچیدگیهای خاص پروژه خود، ممکن است نیاز به تنظیمات اضافی داشته باشید.

بدون دیدگاه