ساختن فایل‌های پیکربندی

ساختن یک فایل requirements.txt

هروکو باید بداند که پروژه‌ی ما روی چه بسته‌هایی بنا شده است بنابراین از pip برای تولید فایلی شامل آن‌ها استفاده می‌کنیم. دوباره در یک محیط مجازی فعّال فرمان زیر را صادر کنید:

1
(ll_env)learning_log$ pip freeze > requirements.txt

دستور freeze از pip می‌خواهد که نام تمام بسته‌هایی که در حال حاضر در پروژه‌ی ما نصب شده در فایل requirements.txt بنویسد. این فایل را باز کنید تا نام و نسخه‌ی بسته‌های نصب‌شده در پروژه‌ی خود را ببینید:

dj-database-url==0.5.0
Django==2.2.0
django-bootstrap4==0.0.7
django-heroku==0.3.1
gunicorn==19.9.0
psycopg2==2.7.7
pytz==2018.9
sqlparse==0.2.4
whitenoise==4.1.2

Learning Log در حال حاضر به هشت بسته با نسخه‌های مشخّص وابسته است بنابراین به محیطی مشخّص برای اجرا شدن نیاز دارد. (چهار بسته را خودمان نصب کرده‌ایم و چهار بسته‌ی دیگر به دلیل وابستگی این بسته‌ها به صورت خودکار نصب شده‌اند.)

زمانی که Learning Log را مستقر می‌کنیم هروکو تمام بسته‌های فهرست‌شده در requirements.txt را نصب می‌کند و محیطی پدید می‌آورد که بسته‌های آن مشابه آن چیزی است که به صورت محلّی استفاده کرده‌ایم. به همین دلیل ما می‌توانیم مطمئن باشیم که رفتار پروژه‌ی استقراریافته مشابه پروژه‌ای خواهد بود که در سیستم محلّی ما اجرا می‌شود. هنگامی که ساختن و نگهداری پروژه‌های مختلف را بر سیستم خود آغاز می‌کنید، این مزیّتی بسیار بزرگ به شمار می‌آید.

نکته
اگر بسته‌ای که در سیستم شما فهرست شده نسخه‌ای متفاوت با آن‌چه اینجا می‌بینید دارد، شماره‌ی نسخه‌ی موجود در سیستم خود را نگه‌دارید و آن را دست نزنید.

تعیین نسخه‌ی پایتون اجرایی

تا زمانی که نسخه‌ی پایتون را مشخّص نکنید هروکو از نسخه‌ی پایتون پیش‌فرض فعلی خود استفاده می‌کند. بیایید مطمئن شویم که هروکو از همان نسخه‌ی پایتون ما استفاده می‌کند. در یک محیط مجازی فعّال فرمان python --version را صادر کنید:

1
2
(ll_env)learning_log$ python --version
Python 3.7.2

در این مثال من پایتون نسخه‌ی ۳.۷.۲ را اجرا می‌کنم. فایل جدیدی به نام runtime.txt در همان پوشه‌ی manage.py بسازید و این را داخل آن فایل وارد کنید:

python-3.7.2

در این فایل یک خط وجود دارد که در آن نسخه‌ی پایتون شما به شکل بالا تعیین می‌شود؛ مطمئن شوید که python را با حروف کوچک می‌نویسید و پس از آن یک خط فاصله می‌گذارید و نسخه را به صورت سه‌بخشی می‌نویسید.

نکته
اگر به خطایی برخوردید که می‌گفت نسخه‌ی اجرایی پایتونی که می‌خواهید وجود ندارد به https://devcenter.heroku.com/categories/language-support بروید و به دنبال پیوند Specifying a Python Runtime بگردید. داخل این مقاله بگردید تا نسخه‌های موجود را پیدا کنید و آنی را استفاده کنید که به نسخه‌ی پایتون شما خیلی نزدیک است.

تغییر settings.py برای هروکو

حال باید به انتهای settings.py قسمتی اضافه کنیم تا برخی تنظیمات را برای محیط هروکو تعریف کنیم:

1
2
3
4
5
6
7
--snip--
# My settings
LOGIN_URL = 'users:login'

# Heroku settings.
import django_heroku
django_heroku.settings(locals())

اینجا ما ماژول django_heroku را وارد کرده و تابع settings() را صدا می‌زنیم. این تابع برخی تنظیمات را تغییر می‌دهد که برای محیط هروکو باید مقدارهای خاصّی داشته باشند.

ساختن یک Procfile برای آغاز کردن فرآیندها

Procfile به هروکو می‌گوید که برای ارائه‌ی درست پروژه چه فرآیندهایی باید آغاز شوند. این فایل یک‌خطی را با نام Procfile، با P بزرگ و بدونِ پسوند، در همان پوشه‌ی حاوی manage.py ذخیره کنید.

این خطّی است که در فایل Procfile قرار می‌گیرد:

web: gunicorn learning_log.wsgi --log-file –

این خط به هروکو می‌گوید که از gunicorn به عنوان سرور و از تنظیمات داخل learning_log/wsgi.py برای اجرای برنامه استفاده کند. پرچم log-file به هروکو می‌گوید که چه نوع رویدادهایی را ثبت کند.