از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استقرار یک برنامه جنگو در Heroku با Git CLI
سرفصلهای مطلب
معرفی
هیروکو یک پلتفرم ابری است که خدمات میزبانی را ارائه می دهد. این برنامه از چندین زبان برنامه نویسی از جمله PHP، Node.js و Python پشتیبانی می کند. این پلتفرم به عنوان یک سرویس (PaaS) است که به شما امکان می دهد برنامه های وب سایت را مدیریت کنید در حالی که از سرورها، شبکه ها، ذخیره سازی و سایر اجزای ابری شما مراقبت می کند.
در این مقاله نگاهی خواهیم داشت روش استقرار یک برنامه جنگو به هیروکو، استفاده کردن Git.
میتوانید همان مراحل را دنبال کنید و اگر برنامه را در GitHub میزبانی کنید، آن را اجرا کنید.
پیش نیازها
در زیر لیستی از کارهایی است که باید قبل از شروع استقرار انجام شود:
- Git
- اکانت Heroku و CLI
- برنامه جنگو
هیروکو رابط خط فرمان (CLI) ایجاد و مدیریت برنامه های Heroku خود را به طور مستقیم از طریق آسان می کند terminal. این یک بخش ضروری در استفاده از Heroku است.
برای نصب Heroku CLI (معروف به کمربند ابزار Heroku)، لطفا دستورالعمل ها را دنبال کنید روی را وب سایت رسمی.
مطمئن شوید که برنامه جنگو شما در حال اجرا است روی محیط مجازی که باید در طول استقرار فعال نگه دارید process.
یک اکانت هیروکو
پس از نصب همه این موارد، گام بعدی ایجاد یک حساب کاربری رایگان Heroku است اینجا، اگر قبلاً حساب کاربری ندارید.
پس از نوشتن موارد زیر در الف terminal:
$ heroku login
این terminal باید پیامی مانند:
heroku: Press any key to open up the browser to login or q to exit:
هر کلیدی را فشار دهید و با استفاده از مرورگر خود وارد شوید. این terminal سپس پیامی در امتداد خطوط زیر نمایش داده می شود:
Logged in as (email protected)
برنامه جنگو را برای Heroku پیکربندی کنید
اکنون که با پیش نیازها تمام شد، بیایید برنامه جنگو خود را برای Heroku آماده کنیم.
نمایه
آ نمایه یک فایل به نام است Procfile
بدون قرار دادن هیچ پسوند فایل در root از درخواست شما آن را فهرست می کند process انواع در یک برنامه و هر کدام process type اعلان فرمانی است که زمانی اجرا می شود container/dyno از آن process نوع شروع شده است.
قبل از ایجاد یک Procfile
، می خواهید نصب کنید django gunicorn
در فهرست پروژه شما:
$ pip install django gunicorn
در حالی که جنگو با سرور WSGI خودش، ما عرضه می شود Procfile
به Heroku می گوید که استفاده کند gunicorn
برای ارائه برنامه ما، که توسط Heroku نیز توصیه شده است.
حال، a ایجاد کنید Procfile
در پوشه والد و خط زیر را اضافه کنید:
web: gunicorn yourdjangoweb.wsgi --log-file -
جایگزین کردن yourdjangoweb
با نام واقعی پروژه شما
Runtime.txt
یک فایل متنی به نام ایجاد کنید runtime.txt
در همان دایرکتوری Procfile
. به Heroku می گوید که برنامه شما از چه نسخه ای از Python استفاده می کند. اگر از نسخه مطمئن نیستید وارد شوید python --version
در terminal با فعال شدن محیط مجازی جنگو شما.
سپس نسخه را اضافه کنید runtime.txt
:
python-x.x.x
نسخه های پشتیبانی شده پایتون را ببینید روی هیروکو اینجا.
میزبان های مجاز
این یک اقدام امنیتی اضافی در جنگو برای جلوگیری از HTTP است host حملات هدر فقط با اجازه دادن به سایت برای ارائه خدمات hostدامنه های / که در اضافه می شوند ALLOWED_HOSTS
فهرست اگر Debug = True
و ALLOWED_HOSTS
است ()
سپس فقط localhost
به طور پیش فرض مجاز است. برای استقرار و سرویس برنامه وب خود روی Heroku، آن را به لیست اضافه کنید:
ALLOWED_HOSTS = ('herokuappname.herokuapp.com')
از طرف دیگر، میتوانید با حذف نام برنامه مانند زیر، به همه برنامههای Heroku اجازه دهید:
ALLOWED_HOSTS = ('.herokuapp.com')
همچنین می توانید استفاده کنید ('*')
برای اجازه دادن به همه میزبان ها جزئیات بیشتر را می توانید در مستندات.
بسته ها را نصب کنید
در زیر بسته های اضافی که باید در محیط مجازی ما نصب شوند آورده شده است.
برای اتصال پایگاه داده جنگو ما به Heroku، نصب کنید dj-database-url
با تماس:
$ pip install dj-database-url
همانطور که Heroku از پایگاه داده Postgres استفاده می کند، ما به آداپتور آن برای Python نیز نیاز داریم:
$ pip install psycog2
و در نهایت استفاده خواهیم کرد نویز سفید برای ارائه فایل های استاتیک در سرور تولید. که می توانیم با تماس آن را نصب کنیم:
$ pip install whitenoise
ما قبلاً پیکربندی کرده ایم gunicorn
، بیایید یک پیکربندی برای اضافه کنیم whitenoise
و dj-database-url
.
پیکربندی فایل های استاتیک
ابتدا تنظیمات اولیه را برای ارائه فایل های استاتیک در هر پروژه جنگو اضافه کنید. می توانید تنظیمات زیر را در خود کپی پیست کنید settings.py
:
PROJECT_ROOT = os.path.join(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
-
اضافه کردن نویز سفید به
MIDDLEWARE
بلافاصله پس از آن لیست کنیدSecurityMiddleware
که باید باشد روی بالاترین:MIDDLEWARE = ( 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', )
-
اضافه کردن
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
در شماsettings.py
.0
پیکربندی پایگاه داده
استفاده می کنیم dj-database-url
برای پیکربندی پایگاه داده ما این خطوط را در پایین صفحه خود اضافه کنید settings.py
:
import dj_database_url
prod_db = dj_database_url.config(conn_max_age=500)
DATABASES('default').update(prod_db)
Requirements.txt
Heroku یک برنامه مستقر شده را تنها در صورتی به عنوان یک برنامه پایتون می شناسد که دارای یک برنامه باشد requirements.txt
فایل در root فهرست راهنما. به Heroku می گوید که چه بسته هایی برای اجرای برنامه شما مورد نیاز است.
ما میتوانیم استفاده کنیم pip freeze
و خروجی را به a لوله کنید requirements.txt
فایل برای این:
$ pip freeze > requirements.txt
شما requirements.txt
باید شامل این موارد باشد:
whitenoise==5.2.0
dj-database-url==0.5.0
Django==3.0.9
gunicorn==20.0.4
psycopg2==2.8.5
pytz==2020.1
توجه داشته باشید: نسخه های بالا توسط برنامه جنگو ما استفاده می شوند و می توانند برای شما متفاوت باشند.
برنامه Heroku را با Git متصل کنید
اکنون باید یک برنامه Heroku ایجاد کنیم:
$ heroku create herokuappname
پیام “انجام شد” را با دو URL در این خط نشان می دهد:
Creating ⬢ herokuappname... done
https://herokuappname.herokuapp.com/ | https://git.heroku.com/herokuappname.git
این بدان معناست که یک مخزن Git ایجاد شده است روی ابر Heroku برای برنامه شما. URL https://herokuappname.herokuapp.com/
برای دسترسی به برنامه شما در هر جایی استفاده می شود، اما هنوز باید قبل از اجرای برنامه خود یک مرحله دیگر انجام دهیم، یعنی باید کد خود را به مخزن فشار دهیم.
یک مخزن خالی در فهرست پروژه خود راه اندازی کنید:
$ git init
> Initialized empty Git repository in /herokuappname/.git/
برنامه Heroku خود را با خالی وصل کنید git
مخزن:
$ heroku git:remote -a herokuappname
> set git remote heroku to https://git.heroku.com/herokuappname.git
فایل ها را به قسمت مرحله اضافه کنید:
$ git add .
تغییرات/فایل ها را انجام دهید:
$ git commit -m "first commit for all files"
در نهایت، پروژه را فشار دهید git
مخزن میزبانی شده است روی هیروکو:
$ git push master heroku
اگر همه چیز خوب پیش برود، خروجی مانند زیر را خواهید دید:
Counting objects: 26, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (26/26), 32.13 KiB | 0 bytes/s, done.
Total 26 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
.....
.....
remote: -----> Launching...
remote: Released v1
remote: https://herokuappname.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/herokuappname.git
(new branch) master -> master
جمع آوری استاتیک خطا
ممکن است خطای مربوط به آن را دریافت کنید collectstatic
هنگامی که شما اجرا می کنید git push heroku master
فرمان این مربوط به دایرکتوری فایل های ثابت است و می توانید با دستور زیر آن را دور بزنید:
$ heroku config:set DISABLE_COLLECTSTATIC=1
Setting DISABLE_COLLECTSTATIC and restarting ⬢ herokuappname... done, v2
DISABLE_COLLECSTATIC: 1
به هروکو می گوید که فرار نکند collectstatic
فرمان در حین استقرار برنامه می توانید بعداً با استفاده از آن اجرا کنید bower
:
$ heroku run 'bower install --config.interactive=false;grunt prep;python manage.py collectstatic --noinput'
ممکن است به دلایل زیادی رخ دهد از جمله اما نه محدود به:
- شما
STATICFILES_DIRS
لیست خالی استsettings.py
یا به درستی پیکربندی نشده است. - شما
static
دایرکتوری حاوی هیچ فایلی برایgit
برای ردیابی شما می توانید هر فایل موقتی را به فایل خود اضافه کنیدstatic
دایرکتوری تا کار کند.
پایگاه داده را مهاجرت کنید
مرحله آخر این است که شما را منعکس کنید models
با اجرای مهاجرت به پایگاه داده Heroku:
$ heroku run python manage.py migrate
تمام است، برنامه شما آماده و در حال اجرا است روی هرکو! می توانید به آن دسترسی داشته باشید (appname).herokuapp.com
. URL در مورد ما خواهد بود http://herokuappname.herokuapp.com/
.
اضافه کردن یک نام دامنه سفارشی
هر برنامه روی Heroku میزبانی می شود روی .herokuapp.com
اما اگر صاحب دامنه هستید می توانید آن را به نام دامنه خود تغییر دهید. این process ساده است:
- انتخاب کنید تنظیمات از نوار ناوبری و به پایین اسکرول کنید تا آن را پیدا کنید دامنه بخش:
- کلیک روی دامنه اضافه کنید جایی که می توانید نام دامنه خود را اضافه کنید.
این گزینه فقط برای حساب های تایید شده است. از شما خواسته می شود مشخصات کارت اعتباری را وارد کنید روی Heroku برای تأیید حساب خود. می توانید جزئیات بیشتری در مورد افزودن دامنه ها و زیر دامنه ها بیابید روی این page.
نتیجه
در این مقاله، ما یک برنامه جنگو را مستقر کردیم روی Heroku با نام دامنه سفارشی، با استفاده از Git.
علاوه بر خدمات ابری مختلف، Heroku همچنین یکی از بهترین زمانهای آپلود سرور و پشتیبانی 24 ساعته و تیم امنیتی را ارائه میدهد.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-14 22:57:04