Heroku با ارائه یک هدف مشخص تقریباً هر راه حل میزبانی ابری را در تقابل قرار می دهد: استقرار برنامه ها از هر نوع را تا حد ممکن آسان کنید. استقرار در VPS به دانش سرورهای وب و پیکربندی ها نیاز دارد. استقرار در کانتینرها به دانش Docker یا Kubernetes نیاز دارد. Deploy بر روی هروکو تقریباً به هیچ دانش قبلی از هیچ چیز احتیاج ندارد.

Heroku برای ساخت MVP ها  یا تولیدکنندگانی که می خواهند با دانش یک زبان خاص به توسعه برنامه های وب بپردازند عالی است. حتی توسعه دهندگانی که دانش پیشرفته ای در مورد چگونگی استقرار برنامه های تولیدی دارند ، ممکن است بخواهند از Heroku برای استقرار سریع داخلی یا به عنوان بستری برای “ترسیم” نمونه اولیه سریع استفاده کنند.

در این کاوش ، ما از Heroku برای استقرار برنامه Python با استفاده از فریمورک Flask استفاده خواهیم کرد.

چرا Heroku ؟

ارائه زیرساخت های Heroku از این جهت منحصر به فرد است که Heroku جنبه DevOps را برای توسعه وب کاملاً مبهم می کند. این بدان معناست که پیکربندی وب سرورها ، مدیریت بسته های لینوکس و تهیه گواهینامه های SSL به طور کامل توسط Heroku انجام می شود.

بیایید خدمات آسان استفاده از Heroku را تجملاتی بدانیم که در وقت ما صرفه جویی می کند. آنها جایگزینی برای درک این مفاهیم نیستند.

Pipelines

جدا از نگهداری VPS ،  هروکو با تعریف Pipelines ، فرآیند انتقال برنامه از طریق محیط های توسعه و تولید را مبهم می کند. درست است ، CI / CD مستقیماً در رابط کاربری Heroku تعبیه شده است.

Add-ons

اعتیاد آورترین جنبه هروکو احتمالاً مارکت Elements است. این مکانی برای خرید ویترین پلاگین های تنظیم آن و فراموش کردن آن برای برنامه شماست که ادغام با اکثر آنها بسیار آسان است.

بیشتر موارد الحاقی تحت چند دسته اصلی قرار می گیرند: فروشندگان پایگاه داده ، تجزیه و تحلیل ها و Redis ، به نام چند مورد (جالب اینجاست که استفاده از addon پایه Redis در Heroku رایگان است ، در حالی که نمونه معادل 5 دلار از شما هزینه دارد) همان ارائه دهنده ای که مستقیماً از آنها استفاده کرده اید. افزونه ها پس از یک کلیک “مستقر می شوند” و فرآیند پیکربندی متعاقب آن از فروشنده به فروشنده دیگر متفاوت است.

ساخت پروژه

وارد رابط کاربری Heroku شوید و یک برنامه در یک Dyno تازه ایجاد کنید. Dyno صرفاً یک کلمه فانتزی ، کاملاً برند برای “کانتینر” است. در مرحله بعدی ، از شما خواسته می شود Heroku CLI را به صورت محلی بر روی سیستم عامل مورد نظر خود دانلود کنید که سریع و بدون درد است.

یک فولدرخالی ایجاد کنید و دستور زیر را تایپ کنید تا از نام کاربر ی و پسورد حساب Heroku درخواست شود:

 

 

$ heroku login

Enter your Heroku credentials.

Email: python@example.com

Password:

در این مرحله ، Heroku قبلاً با جادویی یک git repository برای برنامه شما ایجاد کرده است که از آن توسعه داد.

$ git clone https://github.com/heroku/example-flask-project.git
$ cd example-flask-project

$ heroku create
Creating example-flask-project in organization heroku … done, stack is cedar-14
http://example-flask-project.herokuapp.com/ | https://git.heroku.com/example-flask-project.git
Git remote heroku added

در صورت انتخاب ، می توانید Heroku CLI را پیکربندی کنید تا نام کاربری Github خود را با یک پیکربندی heroku تشخیص دهد: GITHUB_USERNAME = نام خود را دریافت کنید. با استفاده از این پیکربندی شده ، Heroku به شما امکان می دهد به سادگی در repo شخصی Github خود مستقر شوید و تغییرات موجود در Dyno خود را انجام دهید.

ساختار فایل به این شکل است:

example-flask-project
├── app.py
├── Procfile
├── Pipfile
├── Pipfile.lock
├── runtime.txt
├── requirements.txt
├── Pipfile.lock
└── setup.py

 

Procfile (بدون پسوند) و Requisations.txt. اینها پرونده های کوچکی هستند که مشخص می کنند از کدام زبان استفاده می کنیم و چگونه برنامه خود را راه اندازی کنیم ، اما ما بعدا به آن خواهیم رسید.

 

مدیریت package های پایتون

Heroku به طور چشمگیری از Pipenv  برای مدیریت و نصب وابستگی ها پشتیبانی می کند. هر بار که برنامه خود را نصب می کنید ، Heroku نسخه مشخص شده در Pipfile.lock را نصب می کند تا برنامه شما را از ابتدا بسازد. اگر در استفاده از Pipenv تازه کار هستید ، اصول اولیه این آموزش آن را مطالعه کنید. اگر هنوز از virtualenv استفاده می کنید ، نیازی نیست به تغییر Pipenv ، توجه کنید.

یک پوشه برای پروژه خود ایجاد کنید. در آن پوشه ، دستور Pipenv را اجرا کنید:

$ pip install pipenv
pipenv shell

با فعال شدن Shell ، اکنون می توانیم وابستگی های خاص محیط خود را نصب کنیم. حداقل ، ما باید دو بسته نصب کنیم: Flask به عنوان فزیموک ما ، و Gunicorn برای اجرای پروسه برنامه .

(my-project)$ pip3 install flask gunicorn

معرفی فایل های پروژه :

Procfile

 

Procfile یک پرونده منحصر به فرد برای Heroku است که اساساً یک دستور ساخت است. این یک خط خواهد بود تا به Gunicorn بگویید برنامه ما را از فایل app.py راه اندازی کند.

web: gunicorn app:app

 

web “نوع” فرآیند ما است. انواع دیگری وجود دارد ، مانند worker، urgentworker و clock ، اما در حال حاضر این مهم نیست.

app: app به معنای جستجوی ماژول “app” در پرونده app.py ما است. اگر می خواهید app.py را به. یک پوشه متفاوت در پایین خط ، این را می توان به صورت زیر تنظیم کرد:

 

web: gunicorn differentfolder app:app

 

Runtime

 

runtime.txt به هروکو زبان و همچنین نسخه مناسب آن اطلاع می دهد. Heroku فقط در هر لحظه از نسخه خاصی از Python پشتیبانی می کند (که در حال حاضر Python-3.7.1 است) ، اما تعیین نسخه بالاتر به عنوان آخرین نسخه پشتیبانی Heroku پیش فرض است.

Requirements.txt

 

حتی اگر Heroku از Pipfile شما برای ایجاد وابستگی استفاده می کند ، اما به دلایل متعدد ، همچنان Requirements.txt را حفظ کنید. به عنوان مثال ، اگر وابستگی ها را بدون حذف نصب از Pipfile حذف کنید ،Requirements.txt یک روش مفید برای شناسایی بسته های قدیمی در محیط شما است که می تواند حذف نصب شود.

(my-project)$ pip freeze > requirements.txt

pip freeze همه بسته ها و نسخه های آنها را در پرونده تعیین شده چاپ می کند:

asn1crypto==0.24.0my==2.3.2
Flask-Static-Compress==1.0.2
Flask-User==1.0.1.5
Flask-WTF==0.14.2
gunicorn==19.9.0
bcrypt==3.1.4
beautifulsoup4==4.6.0
blinker==1.4
cffi==1.11.5
click==6.7
cryptography==2.2.2
Flask==1.0.2
Flask-Assets==0.12
Flask-Login==0.4.1
Flask-Mail==0.9.1
flask-mongoengine==0.9.5
Flask-SQLAlche

Setup.py

از نظر فنی این پرونده مورد نیاز نیست ، اما بهترین روش کلی هنگام ایجاد پروژه است. اگر قصد دارید پروژه خود را به صورت یک بسته مستقل ارسال کنید ، Setup.py به کار می آید.

from setuptools import setup, find_packages

setup(
name=’my-project’,
version=’1.0′,
long_description=__doc__,
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=[‘Flask’],
)

 

استقرار

اجرای برنامه به صورت لوکال به سادگی دو کلمه است: heroku local. این نمونه ای از برنامه شما را در 0.0.0.0:5:5000 اجرا. میکند

اعزام به Heroku Dyno شما تقریباً مشابه استقرار در Github است در اینجا نحوه استقرار از طریق Heroku CLI را توضیح میدهم:

git add .
git commit -am ‘initial commit’
git push heroku master

اگر همه چیز خوب پیش رفت ، برنامه شما باید در URL ایجاد شده توسط Heroku که هنگام ایجاد پروژه خود ایجاد کرده اید ، زنده باشد. بروید و رابط کاربری Heroku را چک کنید تا ببینید اوضاع چگونه پیش رفته است.

منبع: Hackersandsclackers.com

devops flask Heroku python پایتون دواپس وب اپ