وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش استقرار یک برنامه جنگو در Heroku با Git CLI

0 14
زمان لازم برای مطالعه: 6 دقیقه


معرفی

هیروکو یک پلتفرم ابری است که خدمات میزبانی را ارائه می دهد. این برنامه از چندین زبان برنامه نویسی از جمله 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

  • انتخاب کنید تنظیمات از نوار ناوبری و به پایین اسکرول کنید تا آن را پیدا کنید دامنه بخش:

تنظیمات دامنه heroku

  • کلیک روی دامنه اضافه کنید جایی که می توانید نام دامنه خود را اضافه کنید.

این گزینه فقط برای حساب های تایید شده است. از شما خواسته می شود مشخصات کارت اعتباری را وارد کنید روی Heroku برای تأیید حساب خود. می توانید جزئیات بیشتری در مورد افزودن دامنه ها و زیر دامنه ها بیابید روی این page.

نتیجه

در این مقاله، ما یک برنامه جنگو را مستقر کردیم روی Heroku با نام دامنه سفارشی، با استفاده از Git.

علاوه بر خدمات ابری مختلف، Heroku همچنین یکی از بهترین زمان‌های آپلود سرور و پشتیبانی 24 ساعته و تیم امنیتی را ارائه می‌دهد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-14 22:57:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید