ارسال به هروکو و برپا کردن پایگاه داده

ارسال به هروکو

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
(ll_env)learning_log$ heroku login
heroku: Press any key to open up the browser to login or q to exit:
Logging in... done
Logged in as eric@example.com

(ll_env)learning_log$ heroku create
Creating app... done,  secret-lowlands-82594
https://secret-lowlands-82594.herokuapp.com/ |
https://git.heroku.com/secret-lowlands-82594.git

(ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Launching...
remote: Released v5
remote: https://secret-lowlands-82594.herokuapp.com/ deployed to Heroku
remote: Verifying deploy... done.
To https://git.heroku.com/secret-lowlands-82594.git
  * [new branch] master -> master

(ll_env)learning_log$

ابتدا فرمان heroku login را وارد می‌کنید که شما را به صفحه‌ای در مرورگرتان می‌برد تا در آنجا به حساب هروکوی خود وارد شوید (۱). سپس به هروکو می‌گویید که یک پروژه‌ی خالی درست کند (۲). هروکو نامی متشکّل از دو کلمه و یک عدد درست می‌کند؛ می‌توانید آن را بعداً عوض کنید. سپس دستور git push heroku master را وارد می‌کنیم (۳) که به گیت می‌گوید شاخه‌ی اصلی پروژه را در مخزنی که هروکو ساخته بفرست. هروکو با استفاده از این فایل‌ها پروژه را در سرورهای خود می‌سازد. در ۴ آدرسی قرار دارد که از آن برای دسترسی به پروژه‌ی در حال کار استفاده می‌کنیم و می‌توانیم آن را به همراه نام پروژه عوض کنیم.

زمانی که این فرمان‌ها را صادر می‌کنید پروژه استقرار می‌یابد امّا به طور کامل پیکربندی نشده است. برای بررسی این که فرآیندهای سرور به درستی آغاز شده‌اند یا نه، از دستور heroku ps استفاده کنید:

1
2
3
4
5
6
7
8
9
(ll_env)learning_log$ heroku ps
Free dyno hours quota remaining this month: 450h 44m (81%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping
=== web (Free): gunicorn learning_log.wsgi --log-file - (1)
web.1: up 2019/02/19 23:40:12 -0900 (~ 10m ago)

(ll_env)learning_log$

خروجی نشان می‌دهد که این پروژه در ماه آینده چه‌قدر دیگر می‌تواند فعّال بماند (۱). در زمان نگارش این مطلب هروکو به استقرارهای رایگان اجازه می‌دهد که حداکثر ۵۵۰ ساعت در ماه فعّال باشند. اگر پروژه‌ای این حد را بگذراند یک صفحه‌ی خطای سرور استاندارد نمایش داده خواهد شد؛ که آن را به زودی شخصی می‌کنیم. در ۲ می‌بینیم که فرآیند تعریف‌شده در Procfile شروع شده است.

حال می‌توانیم به کمک دستور heroku open برنامه را در یک مرورگر باز کنیم:

1
2
3
(ll_env)learning_log$ heroku open

(ll_env)learning_log$

این دستور شما را از باز کردن یک مرورگر و وارد کردن آدرسی که هروکو نشان داده خلاص می‌کند و این راهی دیگر برای باز کردن سایت است. شما باید صفحه‌ی خانه‌ی Learning Log را با شیوه‌ی درست ببینید. با این حال هنوز نمی‌توانید از آن استفاده کنید چون پایگاه داده را برپا نکرده‌اید.

نکته
فرآیند استقرار هروکو ممکن است هر دفعه فرق کند. اگر به مشکل غیر قابل حلّی خوردید برای کمک گرفتن به مستندات هروکو نگاهی بیندازید. به https://devcenter.heroku.com بروید و روی Python کلیک کنید و به دنبال پیوندی به Get Started with Python یا Deploying Python and Django Apps on Heroku بگردید. اگر آنچه را که اینجا دیدید متوجّه نشدید توصیه‌های پیوست پ را ببینید.

برپا کردن پایگاه داده در هروکو

ما نیاز داریم که migrate را یک بار اجرا کنیم تا پایگاه داده‌ی در حال اجرا را برپا و تمام انتقال‌هایی را که طیّ توسعه‌ی پروژه انجام داده‌ایم در آن اعمال کنیم. شما می‌توانید به کمک دستور heroku run دستورهای جانگو و پایتون را روی پروژه‌ی هروکو اجرا کنید. این روش اجرای migrate روی هروکو است:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
(ll_env)learning_log$ heroku run python manage.py migrate
Running 'python manage.py migrate' on secret-lowlands-82594... up, run.3060
  --snip--
Running migrations:
  --snip--
  Applying learning_logs.0001_initial... OK
  Applying learning_logs.0002_entry... OK
  Applying learning_logs.0003_topic_owner... OK
  Applying sessions.0001_initial... OK

(ll_env)learning_log$

ابتدا دستور heroku run python manage.py migrate را اجرا می‌کنیم (۱). هروکو سپس یک نشست ترمینال می‌سازد تا فرمان migrate را اجرا کنید (۲). در ۳ جانگو انتقال پیش‌فرض و دیگر انتقال‌هایی را که طی توسعه‌ی پروژه ساخته شده‌اند، اعمال می‌کند.

اگر اکنون برنامه‌ی استقراریافته‌ی خود را ببینید، باید درست مثل آن‌چه در سیستم محلّی شما بود، بتوانید با آن کار کنید. امّا هیچکدام از داده‌هایی را که در سیستم محلّی وارد کرده‌اید، شامل حساب ابرکاربر خود، نخواهید دید زیرا آن‌ها را به سرور در حال کار کپی نکرده‌اید. این عملکردی طبیعی است: شما معمولاً داده‌های محلّی را به سرور در حال کار منتقل نمی‌کنید زیرا داده‌های محلّی معمولاً داده‌های آزمایشی هستند.

می‌توانید پیوند هروکوی خود را هم‌خوان کنید تا هر کس که خواست از برنامه‌ی شما استفاده کند. در بخش بعدی چند کار دیگر را تکمیل می‌کنیم تا فرآیند استقرار تکمیل شود و شما را برای ادامه دادن به توسعه‌ی Learning Log راه بیندازد.