از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
استقرار برنامه های جنگو در Heroku از GitHub
سرفصلهای مطلب
معرفی
هروکو محبوب است پلتفرم به عنوان یک سرویس (PaaS) که به توسعه دهندگان اجازه می دهد تا با استفاده از زیرساخت های مورد نیاز از نظر سخت افزار و نرم افزار، برنامه ها را اجرا و اجرا کنند.
این بدان معنی است که ما مجبور نیستیم روی سخت افزار و نرم افزار مورد نیاز برای نمایش برنامه های خود در معرض کاربران نهایی سرمایه گذاری کنیم و این آزادی به ما امکان می دهد تمرکز کنیم. روی منطق کسب و کار ما به جای استقرار.
در این پست، روش استقرار یک برنامه ساده جنگو را در خط لوله Heroku شرح خواهیم داد. این برنامه توسعه دهندگان پایتون موجود را هدف قرار می دهد و درک اولیه از راه اندازی و اجرای یک برنامه جنگو را فرض می کند.
پیش نیازها
برای این پست، ما نیاز داریم:
- یک لایه آزاد اکانت هیروکو،
- پایتون 3+ و Virtualenv نصب شده است
- Git نصب شده و یک حساب GitHub.
برنامه آزمایشی
بوت استرپ کردن برنامه جنگو
قبل از استقرار برنامه جنگو خود، باید آن را مطابق با الزامات Heroku آماده کنیم. ما با ایجاد یک محیط مجازی، فعال سازی آن و نصب بسته های مورد نیاز و در نهایت بوت استرپ یک برنامه ساده جنگو شروع می کنیم:
$ virtualenv --python=python3 env --no-site-packages
$ source env/bin/activate
$ pip install django gunicorn
$ django-admin startproject plaindjango
اگر همه چیز خوب پیش برود، باید فرود زیر را داشته باشیم page در حال اجرا روی سرور محلی ما:
در این مرحله، ساختار پوشه پروژه ما به صورت زیر است:
$ cd plaindjango && tree .
.
├── manage.py
└── plaindjango
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
1 directory, 6 files
قبل از اعزام به Heroku، باید تغییراتی ایجاد کنیم. ابتدا باید آن را تغییر دهیم ALLOWED_HOSTS
تنظیم در ما plaindjango/settings.py
به:
ALLOWED_HOSTS = ('*')
این تنظیم هاست یا دامنههایی را که برنامه جنگو ما میتواند ارائه کند، تعریف میکند. این یک اقدام امنیتی علیه است سربرگ HTTP host حملات، اما از آنجایی که پروژه ما یک پروژه نمایش ساده است، با افزودن به همه هاست ها اجازه می دهیم '*'
در لیست
تغییر بعدی که باید انجام دهیم این است که یک پوشه برای فایل های استاتیک خود از طریق تعیین کنیم STATIC_ROOT
تنظیمات:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
هنگامی که Heroku در حال استقرار برنامه ما است، دستور را اجرا می کند django-admin collectstatic
، که همه فایل های ثابت را در پوشه مشخص شده بسته بندی و ذخیره می کند. این پوشه در پروژه ما خواهد بود root فهرست راهنما.
آماده سازی برنامه برای استقرار
با آماده شدن برنامه جنگو، Heroku از ما می خواهد که فایل های زیر را در پروژه خود قرار دهیم root تا بتواند برای استقرار آماده شود:
runtime.txt
هدف این فایل تعیین نسخه پایتون است که برای اجرای پروژه ما استفاده می شود. در مورد ما، فایل فقط شامل موارد زیر خواهد بود:
python-3.7.6
Procfile
این فایل دستوراتی را که باید هنگام راه اندازی برنامه اجرا شوند را مشخص می کند.
در حین راه اندازی، نصب کردیم گونیکورن (“یونیکورن سبز”) که یک پایتون خالص است WSGI سرور (رابط دروازه وب سرور) برای یونیکس.
در حالی که جنگو با سرور WSGI خود ارسال می شود، نمایه ما به Heroku می گوید که از Gunicorn برای ارائه برنامه ما استفاده کند. محتویات این فایل به صورت زیر خواهد بود:
web: gunicorn plaindjango.wsgi:application --log-file -
این خط به هروکو می گوید که خط ما یک است web
process یا برنامه ای که با استفاده از آن شروع خواهد شد gunicorn
. Gunicorn
سپس از فایل WSGI پروژه خود برای راه اندازی سرور برنامه خود استفاده خواهد کرد.
requirements.txt
در نهایت، ما نیاز داریم requirements.txt
فایلی که الزامات برنامه جنگو ما را تعریف می کند. با اجرای دستور زیر می توانیم این را در محیط مجازی خود ایجاد کنیم:
$ pip freeze > requirements.txt
ساختار پوشه نهایی برنامه جنگو ما که حاوی فایل های اضافی است اکنون به صورت زیر خواهد بود:
$ tree .
.
├── Procfile
├── manage.py
├── plaindjango
│ ├── __init__.py
│ ├── wsgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── requirements.txt
└── runtime.txt
1 directory, 9 files
با وجود این فایل ها، برنامه ما برای Heroku آماده است.
استقرار به Heroku از طریق GitHub
در حالی که Heroku پلتفرم Git خود را ارائه می دهد که می توانیم برای استقرار خود از آن استفاده کنیم، اما به اندازه GitHub از ویژگی های غنی نیست. Heroku همچنین به ما اجازه می دهد تا کد خود را از GitHub بیرون بکشیم و آن را مستقر کنیم.
کد ما برای استقرار آماده است، بنابراین می توانیم ادامه دهیم و یک مخزن GitHub ایجاد کنید و کد ما را فشار دهید.
برای مرجع، اینجاست نمونه برنامه جنگو روی GitHub که آماده استقرار است روی هروکو.
با کار ما آماده است روی GitHub، اجازه دهید به Heroku برویم و با استفاده از دکمه “New” یک خط لوله جدید ایجاد کنیم روی سمت راست بالای داشبورد Heroku ما.
ما نام خط لوله و مخزن GitHub را برای اتصال به آن ارائه می کنیم:
آ خط لوله نشان دهنده گروهی از برنامه های Heroku است که از یک پایگاه کد مشترک استفاده می کنند. در یک خط لوله، ما می توانیم مراحل مختلفی را در یک گردش کار تحویل مداوم تعریف کنیم.
این بدان معناست که از طریق Heroku، میتوانیم کد خود را به طور همزمان در محیطهای تولید، مرحلهبندی و توسعه خود، همه از GitHub، مستقر کنیم.
هنگامی که از GitHub به عنوان منبع برنامه خود استفاده می کنیم، می توانیم خطوط لوله Heroku را برای استقرار کد از شاخه های مختلف در محیط های مختلف پیکربندی کنیم.
به عنوان مثال، کد در شاخه “master” ما در محیط تولید، شاخه “staging” به محیط مرحلهبندی ما و شاخه “dev” در محیط توسعه ما مستقر میشود.
این به ما میدهد که پروژه خود را در چندین مرحله مشاهده کنیم و تحویل ما را افزایش دهیم.
خطوط لوله Heroku دارای یک ویژگی به نام “بازبینی برنامه ها” هستند که به ما اجازه می دهد تا آن را مستقر کنیم درخواست های کششی به عنوان برنامه های کاربردی مستقل با فعال کردن این، میتوانیم کار را در درخواستهای کشش بدون نیاز به انجام تغییرات به صورت محلی و آزمایش آنها تأیید کنیم.
خط لوله هروکو
این نمای خط لوله اخیراً ایجاد شده ما برای برنامه ما است روی GitHub:
خط لوله به طور پیش فرض دارای دو مرحله و بخشی برای فعال کردن برنامه های بررسی است. از آنجایی که تمام کد ما در حال حاضر موجود است روی شاخه “master”، اجازه دهید پیش برویم و شعبه را با کلیک کردن مستقر کنیم روی “افزودن برنامه” در مرحله تولید:
Heroku به ما اجازه می دهد تا برنامه های موجود را به یک خط لوله اضافه کنیم یا یک برنامه جدید ایجاد کنیم. از آنجایی که این یک خط لوله جدید است، ما یک برنامه جدید به نام ایجاد خواهیم کرد plaindjango-production
که محیط تولید ما خواهد بود.
این نتیجه در:
برنامه تولید ما ایجاد شده است اما کد ما هنوز اجرا نمی شود. مرحله بعدی انتخاب شاخه ای است که کد از آن در محیط تولید ما مستقر می شود:
یک بار کلیک می کنیم روی “Deploy”، Heroku کد ما را از شاخه “master” می کشد و آن را مستقر می کند. ما می توانیم پیشرفت استقرار را با مشاهده گزارش ها مشاهده کنیم و پس از استقرار برنامه، پیوندی به برنامه در حال اجرا خود دریافت خواهیم کرد:
در انتهای گزارشها، پیوندی به برنامه در حال اجرا ما وجود دارد. هنگامی که به پیوند دسترسی پیدا می کنیم، با فرود جنگوی خود از ما استقبال می کنیم page:
ما با موفقیت برنامه جنگو تولیدی خود را از طریق GitHub در Heroku مستقر کردیم. برای ایجاد یک برنامه برای محیط استیجینگ ما، همان مراحلی را انجام می دهیم که برای محیط اصلی انجام می شود.
ما با ایجاد یک شاخه “استیجینگ” شروع خواهیم کرد روی GitHub از طریق terminal:
$ git checkout -b staging && git push origin staging
در نهایت یک اپلیکیشن به پروژه اضافه می شود و یک درخواست کشش از شاخه «staging» به شاخه «master» ایجاد می شود.
درخواست کشش قابل مشاهده است اینجا روی GitHub، و این نتیجه است روی خط لوله Heroku ما:
میبینیم که یک برنامه جدید برای درخواست کشش ما ایجاد شده است و وقتی آن را باز میکنیم، میتوانیم تغییراتی را که درخواست کشش به پروژه ما ایجاد میکند، ببینیم:
درخواست کشش ما با موفقیت اجرا شد و میتوانیم قبل از ادغام تغییرات در Master آن را بررسی کنیم. با فعال شدن استقرار خودکار، هروکو تغییرات ما را به محض ادغام درخواست کشش در شاخه اصلی اعمال می کند و تغییرات به طور خودکار اجرا می شوند.
نتیجه
برنامه جنگو ما با استفاده از خط لوله از GitHub در Heroku مستقر شده است. در حالی که این تنها راه برای استقرار یک برنامه جنگو در Heroku نیست، اما مناسب ترین راه برای یک پروژه مشترک است.
برنامه های کانتینری را می توان مستقر کرد روی Heroku با ساخت تصاویر Docker و انتشار آنها در Dockerhub یا خود Heroku container ثبت. اطلاعات بیشتر در مورد استقرار برنامههای Dockerized در Heroku را میتوانید در اینجا بیابید اسناد رسمی. Heroku همچنین یک پلتفرم Git را ارائه می دهد که می تواند برای استقرار برنامه ها در ارتباط با ابزار CLI خود استفاده شود.
Heroku با ادغام با git و عملکرد GitHub برای استقرار برنامه های کاربردی کانتینری، پلتفرمی توانمند برای رسیدگی به نیازهای توسعه شما است. پلت فرم نیز فراهم می کند افزونه ها از طریق یک بازار
این افزونهها خدمات یا بخشهایی از زیرساخت هستند که میتوان از آنها برای بهبود برنامههای ما استفاده کرد. چنین افزونههایی به ما اجازه میدهند تا برنامه خود را با پایگاههای داده و ذخیرهسازی دادهها از جمله PostgreSQL، MySQL و Redis یکپارچه کنیم.
با برنامه های جنگو چیزهای بیشتری می توان به دست آورد روی Heroku، و این پست به منظور ارائه یک نمای ساده در مورد روش استقرار یک برنامه جنگو در پلتفرم به روشی است که مطابق با گردش کار روزانه ما باشد.
پروژه جنگو آماده هیروکو را می توان پیدا کرد اینجا روی GitHub و همچنین درخواست کشش باز که نیز مستقر شد.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-18 09:02:05