دیپلوی پروژه Flask روی Heroku: راهنمای جامع
Heroku یک پلتفرم ابری محبوب برای استقرار و مقیاسبندی برنامههای وب است. این پلتفرم به ویژه برای پروژههای پایتون، از جمله برنامههای Flask، بسیار مناسب است. این مقاله به شما نشان میدهد که چگونه یک پروژه Flask را به طور کامل روی Heroku دیپلوی کنید. این آموزش برای کسانی که با مفاهیم اولیه Flask و Git آشنا هستند، طراحی شده است.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
- یک حساب کاربری Heroku
- Heroku CLI (رابط خط فرمان Heroku) نصب شده
- Python و pip نصب شده
- Git نصب شده
- یک پروژه Flask آماده
مراحل دیپلوی
۱. آمادهسازی پروژه Flask
ابتدا باید پروژه Flask خود را برای دیپلوی روی Heroku آماده کنید. این شامل ایجاد فایلهای مورد نیاز و پیکربندی پروژه است.
الف. فایل requirements.txt
فایل requirements.txt لیستی از تمام وابستگیهای پروژه شما را مشخص میکند. Heroku از این فایل برای نصب وابستگیهای لازم در محیط استقرار استفاده میکند. برای ایجاد این فایل، از دستور زیر در ترمینال استفاده کنید:
pip freeze > requirements.txt
این دستور تمام بستههای نصب شده در محیط پایتون فعلی شما را لیست کرده و در فایل requirements.txt ذخیره میکند.
ب. فایل Procfile
فایل Procfile به Heroku میگوید که چگونه برنامه شما را اجرا کند. این فایل باید در ریشه پروژه شما قرار داشته باشد و حاوی دستور اجرای برنامه Flask شما باشد. به عنوان مثال:
web: gunicorn app:app
در این مثال، web نوع فرآیند را مشخص میکند (در این مورد، یک برنامه وب). gunicorn یک سرور WSGI پایتون است که برای استقرار برنامههای Flask در محیطهای تولیدی استفاده میشود. app:app به Gunicorn میگوید که فایل app.py را به عنوان نقطه ورود برنامه Flask استفاده کند و متغیر app را به عنوان شیء برنامه Flask در نظر بگیرد.
ج. فایل app.py (یا فایل اصلی برنامه Flask)
مطمئن شوید که فایل اصلی برنامه Flask شما (معمولاً app.py) به درستی پیکربندی شده است. به طور خاص، باید پورت مورد استفاده توسط Heroku را در نظر بگیرید. Heroku یک متغیر محیطی به نام PORT را تنظیم میکند که شماره پورتی را که برنامه شما باید به آن گوش دهد، مشخص میکند. کد شما باید این متغیر را خوانده و از آن استفاده کند. به عنوان مثال:
from flask import Flask
import os
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Heroku!"
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
در این کد، ابتدا متغیر محیطی PORT را خوانده و آن را به یک عدد صحیح تبدیل میکنیم. اگر متغیر PORT تنظیم نشده باشد، از پورت 5000 به عنوان مقدار پیشفرض استفاده میکنیم. سپس، برنامه Flask را با استفاده از پورت مشخص شده اجرا میکنیم.
۲. ایجاد مخزن Git و دیپلوی روی Heroku
اکنون که پروژه Flask شما آماده است، میتوانید آن را در یک مخزن Git قرار داده و روی Heroku دیپلوی کنید.
الف. ایجاد مخزن Git
اگر پروژه شما هنوز در یک مخزن Git نیست، باید یک مخزن ایجاد کنید. در ترمینال، به ریشه پروژه خود بروید و دستور زیر را اجرا کنید:
git init git add . git commit -m "Initial commit"
ب. ایجاد برنامه Heroku
با استفاده از Heroku CLI، یک برنامه Heroku جدید ایجاد کنید:
heroku create your-app-name
به جای your-app-name، یک نام منحصر به فرد برای برنامه خود انتخاب کنید. Heroku یک URL برای برنامه شما ایجاد میکند که میتوانید از آن برای دسترسی به برنامه خود استفاده کنید.
ج. دیپلوی پروژه
اکنون میتوانید پروژه خود را روی Heroku دیپلوی کنید. از دستور زیر استفاده کنید:
git push heroku master
این دستور کد شما را به مخزن Heroku ارسال میکند. Heroku به طور خودکار وابستگیهای شما را نصب میکند، برنامه شما را اجرا میکند و برنامه شما را در URL مشخص شده در دسترس قرار میدهد.
۳. پیکربندی متغیرهای محیطی
برخی از برنامهها نیاز به پیکربندی متغیرهای محیطی دارند، مانند کلیدهای API یا اطلاعات پایگاه داده. میتوانید متغیرهای محیطی را با استفاده از Heroku CLI تنظیم کنید:
heroku config:set VARIABLE_NAME=value
به جای VARIABLE_NAME و value، نام و مقدار متغیر محیطی خود را قرار دهید.
۴. مقیاسبندی برنامه
به طور پیشفرض، Heroku برنامه شما را روی یک dyno (یک کانتینر سبک وزن) اجرا میکند. برای مقیاسبندی برنامه خود، میتوانید تعداد dynoها را افزایش دهید:
heroku ps:scale web=2
این دستور تعداد dynoهای وب را به 2 افزایش میدهد.
۵. بررسی لاگها
برای عیبیابی مشکلات، میتوانید لاگهای برنامه خود را با استفاده از Heroku CLI بررسی کنید:
heroku logs --tail
این دستور لاگهای برنامه شما را به صورت زنده نمایش میدهد.
نکات تکمیلی
- استفاده از Gunicorn: Gunicorn یک سرور WSGI قوی و قابل اعتماد است که برای استقرار برنامههای Flask در محیطهای تولیدی توصیه میشود.
- مدیریت وابستگیها: اطمینان حاصل کنید که فایل
requirements.txtشما دقیق و بهروز است. - متغیرهای محیطی: از متغیرهای محیطی برای ذخیره اطلاعات حساس مانند کلیدهای API و اطلاعات پایگاه داده استفاده کنید.
- مقیاسپذیری: Heroku به شما امکان میدهد به راحتی برنامه خود را مقیاسبندی کنید تا با افزایش ترافیک سازگار شود.
- مانیتورینگ: از ابزارهای مانیتورینگ Heroku برای نظارت بر عملکرد برنامه خود استفاده کنید.
نتیجهگیری
دیپلوی یک پروژه Flask روی Heroku یک فرآیند نسبتاً ساده است. با دنبال کردن مراحل ذکر شده در این مقاله، میتوانید به راحتی برنامه Flask خود را در یک محیط ابری قابل اعتماد و مقیاسپذیر مستقر کنید. Heroku یک پلتفرم عالی برای توسعهدهندگان پایتون است که به دنبال یک راه حل آسان و مقرون به صرفه برای استقرار برنامههای وب خود هستند.

بدون دیدگاه