[et_pb_section bb_built=”1″][et_pb_row][et_pb_column type=”4_4″][et_pb_text _builder_version=”3.2.1″]
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 درخواست شود:
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_text_color=”#8300e9″ background_layout=”dark”]
$ heroku login
Enter your Heroku credentials.
Email: python@example.com
Password:
[/et_pb_text][et_pb_text _builder_version=”3.2.1″]
در این مرحله ، Heroku قبلاً با جادویی یک git repository برای برنامه شما ایجاد کرده است که از آن توسعه داد.
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_text_color=”#8300e9″ background_layout=”dark”]
$ 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
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″]
در صورت انتخاب ، می توانید 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 را اجرا کنید:
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_text_color=”#8300e9″ background_layout=”dark”]
$ pip install pipenv
pipenv shell
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″]
با فعال شدن Shell ، اکنون می توانیم وابستگی های خاص محیط خود را نصب کنیم. حداقل ، ما باید دو بسته نصب کنیم: Flask به عنوان فزیموک ما ، و Gunicorn برای اجرای پروسه برنامه .
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_text_color=”#8300e9″ background_layout=”dark”]
(my-project)$ pip3 install flask gunicorn
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_font=”Roboto||||||||” text_font_size=”16px” text_line_height=”1.8em” header_font=”Roboto|700|||||||” header_text_align=”center” header_font_size=”40px” header_line_height=”1.2em” header_3_font=”Roboto|700||on|||||” header_3_text_align=”center” header_3_text_color=”#ffffff” header_3_font_size=”24px” header_3_letter_spacing=”10px” header_3_line_height=”2em” text_orientation=”center” background_layout=”dark” text_font_size_last_edited=”off|desktop” header_font_size_phone=”32px” header_font_size_last_edited=”on|desktop” header_3_font_size_tablet=”16px” header_3_font_size_phone=”14px” header_3_font_size_last_edited=”on|phone” header_3_letter_spacing_tablet=”5px” header_3_letter_spacing_last_edited=”on|tablet” background_position=”top_left” background_repeat=”repeat” background_size=”initial”]
طراحی وب سایت | وب اپلیکیشن
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ text_font=”Roboto||||||||” text_font_size=”16px” text_line_height=”1.8em” header_font=”Roboto|700|||||||” header_text_align=”center” header_font_size=”40px” header_line_height=”1.2em” header_3_font=”Roboto|700||on|||||” header_3_text_align=”center” header_3_text_color=”#ffffff” header_3_font_size=”24px” header_3_letter_spacing=”10px” header_3_line_height=”2em” text_orientation=”center” background_layout=”dark” text_font_size_last_edited=”off|desktop” header_font_size_phone=”32px” header_font_size_last_edited=”on|desktop” header_3_font_size_tablet=”16px” header_3_font_size_phone=”14px” header_3_font_size_last_edited=”on|phone” header_3_letter_spacing_tablet=”5px” header_3_letter_spacing_last_edited=”on|tablet” background_position=”top_left” background_repeat=”repeat” background_size=”initial”]
طراحی وب سایت | وب اپلیکیشن
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″]
معرفی فایل های پروژه :
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
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″ header_2_text_color=”#8300e9″ header_3_text_color=”#3f3f3f”]
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
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″ header_2_text_color=”#8300e9″ header_3_text_color=”#3f3f3f”]
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
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″ header_2_text_color=”#8300e9″ header_3_text_color=”#3f3f3f”]
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’],
)
[/et_pb_text][et_pb_text _builder_version=”3.2.1″ background_layout=”dark” text_text_color=”#000000″ header_2_text_color=”#8300e9″ header_3_text_color=”#3f3f3f”]
استقرار
اجرای برنامه به صورت لوکال به سادگی دو کلمه است: 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
[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]