آموزش انتشار پروژه جنگو روی هروکو Heroku

مدت :

۲ ساعت

قیمت : رایگان
LinkedIn
Twitter
Facebook
Telegram

درباره مدرس 

اطلاعات دوره

توضیحات

چندی پیش یک بسته جامع آموزش جنگو (+)‌ در هم رویش منتشر شد. این آموزش پروژه محور بود و از صفر تا انتشار وب سایت در سرور پیش رفت. فصل آخر بسته مذکور به آموزش انتشار پروژه جنگو در سرور آنلاین ( ارسال پروژه جنگو به heroku ) اختصاص داشت. امروز این فصل به صورت یک بسته مستقل برای علاقه‌مندان مبحث انتشار آنلاین منشتر می‌شود. تا کسانی که می‌خواهند صرفا با فرآیند انتشار وب سایت در سرور آشنا شوند بتوانند به صورت مستقل از این آموزش استفاده کنند.

روزآمدیاز اواخر سال ۲۰۲۲ هروکو دیگر طرح رایگان ندارد. محتوای این بسته البته همچنان برای دپلوی روی هروکو معتبر است ولی جون اغلب ما ابرانیان امکان خرید بین‌المللی نداریم، این آموزش را رایگان کردیم تا صرفا جهت کسب تجربه و آشنایی با فضای این سیستم جهانی بهره ببرید.

 

آنچه می‌آموزید

در این آموزش شما نخست با یک سرویس دهنده با امکان دریافت سرور رایگان به نام Heroku آشنا می‌شوید. هروکو یک سرویس دهنده حرفه‌ای با پلن پایه رایگان و پلن های بهادار حرفه ای برای میزبانی پروژه های جنگو و دیگر پلتفرم‌های نام‌آشنای وب است.

به منظور ارسال جنگو به heroku، نخست مفاهیم لازم برای انتشار سایت در سرور آنلاین را می‌آموزید. سپس می‌آموزید که چگونه پروژه خود را با گیت Git مدیریت نسخه کنید. آنگاه مدرس به آموزش انتشار سایت جنگو در اینترنت و سرور هروکو به کمک گیت می‌پردازد.

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

در ادامه این آموزش، مدرس هم رویش به بیان نکات تکمیلی می‌پردازد. پایگاه داده پیش فرض جنگو از نوع SQLite است و باید به سروری با پایگاه داده پیش فرض PostgreSQL نگاشت شود. دیتابیس را Migrate و به سرور ارسال می‌کند. همچنین می‌آموزید که صفحه‌های خطای 404 و 500 چه هستند و چگونه می‌توان آن‌ها را با قالب وب سایت خود نمایش داد.

در خلال این آموزش ضمن اجرای مقصود  اصلی با مفاهیمی چون Heroku CLI و psycopg و Gunicorn و Django-heroku و eroku config:set KEY=VALUE به صورت عمیق آشنا می‌شوید. یاد می‌گیرید که WSGI Server چیست؟ این مفاهیم به صورت عمیق آموزش داده می‌شود.

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

 

کلیدواژگان

ارسال پروژه جنگو به heroku –

سرفصل‌ها

سرفصل‌ها

درس اول: آماده‌سازی زیرساخت پروژه برای آپلود در سرور HeroKu
– آشنایی با پلتفرم Heroku
– مفهوم PaaS (Platform as a Service)
– آشنایی با عملکرد Heroku CLI یا خط فرمان هروکو
– آشنایی با عملکرد بسته psycopg
– اتصال پایگاه داده Sqlite با Postgres یا PostgreSQL
– آشنایی با عملکرد بسته Gunicorn به عنوان WSGI Server
– آشنایی با عملکرد بسته Django-heroku
– مفهوم و جایگاه یک WSGI در فرآیند اجرای آنلاین یک پروژه پایتون
– ایجاد شناسه رایگان در Heroku
– نصب Heroku Command Line Interface
– نصب بسته Psycopg و django-heroku و Gunicorn

درس دوم: ثبت نسخه کتابخانه‌های پروژه برای همگامی با سرور
– مفهوم محیط ماشین محلی (Local Machine Environment)
– مهفوم محیط پلتفرم هروکو (Heroku Platform Environment)
– ایجاد فایل requirements.txt با دستور pip freeze
– ایجاد runtime.txt برای ثبت نسخه Python runtime
– تنظیم تابع settings با استفاده از ماژول django_heroku
– تنظیم Gunicorn به عنوان سرور WSGI اجرای پروزه روی Heroku

درس سوم: تنظیم گیت برای ارسال پروزه به Heroku
– نصب git و تنظیم آن
– تنظیم فایل gitignore
– ثبت تصویر پروزه با استفاده از دستورات add و commit
– فهم کاربرد دستور Checkout در گیت

درس چهارم: ارسال پروژه جنگو به سرور آنلاین و نخستین نمایش آنلاین وبسایت
– مرور مراحل ارسال (Deploy) پروژه به Heroku
– ورود به هروکو با دستور heroku login
– ایجاد مخزن خالی با دستور heroku create
– پوش مخزن محلی به مخزن آنلاین با دستور git push
– بررسی نحوه نمایش لاگ ارسال پروژه با دستور heroku logs
– نخستین نمایش وبسایت به صورت آنلاین با دستور heroku open

درس پنجم: ایجاد جداول پایگاه داده سمت سرور
– دستور heroku run برای اجرای دستورات روی ترمینال سرور
– آشنایی با bash و ایجاد یک ترمینال لینوکسی سمت سرور
– یادآوری ساختار دیتابیس sqlite محلی پروژه جنگو
– اجرای دستور python manage.py migrate بر روی پروزه سرور
– تبدیل پایگاه داده Sqlite به Postgress به صورت خودکار
– ایجاد کاربر مدیر با دستور createsuperuser
– خروج از bash با دستور exit

درس ششم: تغییر نام و Url پروژه
– حروف مجاز در url وبسایت
– تغییر نام و نشانی پروژه با دستور heroku apps:rename
– آزمایش صحت تغییر url

درس هفتم: تنظیم متغیر DEBUG متناسب با محیط اجرا
– درک مفهوم مد دیباگ (Debug) در گزارش های جنگو
– عملکرد متغیر DEBUG در فایل settings
– آشنایی با مفهوم متغیر محیطی (Environment Variable)
– متغیر PATH و متغیر TEMP به عنوان نمونه‌هایی از متغیر محیطی
– تنظیم یک متغیر محیطی در ویندوز (set key=value)
– تنظیم متغیر محیطی در هروکو heroku config:set KEY=VALUE
– اجرای پروزه به دو مد همزمان دیباگ روی لوکال و وب

درس هشتم: قالب اختصاصی برای نمایش صفحه‌های خطا
– خطای 404 چه وقت نمایش داده می‌شود
– خطای 500 چه وقت نمایش داده می‌شود
– ایجاد پوشه templates برای قالب های اختصاصی پروژه
– ایجاد فایل‌های html برای صفحه‌های 404 و 500
– تنظیم متغیر DIR در بخش TEMPLATES فایل settings جنگو
– مفنوم BASE_DIR و متد os.path.join برای الحاق مسیر
– مفهوم متد abspath و dirname در ماژول os پایتون
– تست صفحه خطا در لوکال هاست و سپس پوش به Heroku
– تغییر متد get به get_object_or_404 برای نمایش خطای 404 به جای 500 در هنگام نبود سطر با شماره مورد درخواست در دیتابیس

درس نهم: جمع‌بندی و طوفان فکری
– خسته نباشید!
– استراحت کنید و بعد توسعه پروژه را رها نکنید.
– نکته‌هایی که باید حین توسعه بعد از این رعایت کنید.
– SECRET_KEY را چطور باید در انتشار آنلاین در جنگو تنظیم کنیم؟
– ایده‌هایی برای پروژه بعدی و شگفتانه ویژه

نظرات (12)

12 دیدگاه برای آموزش انتشار پروژه جنگو روی هروکو Heroku

  1. فائزه هاشمی (خریدار محصول)

    سلام و روزبخیر خدمت استاد آصفی، من نمی تونم در سایت heroku ثبت نام کنم فیلتر شکن هم روشنه خطا میده که مشکلی پیش اومده بعدا امتحان کنید، چیکار کنم؟

  2. عسکرزاده

    سلام
    من در بخش ادمین هنگامی که میخوام داده جدید سیو کنم(پی دی اف و عکس) ارور h13 میده در حالی که در فایل requirements نسخه جنگو و gunicorn پایین اوردم و در Procfile تایم اوت ۳۰ثانیه تنظیم کردم.
    اپ در هروکو ام ریستارت کردم درست نشد.
    لطفا راهنمایی کنید
    at=error code=H13 desc=”Connection closed without response” method=POST

    • مصطفی آصفی

      سلام به شما خانم عسکری زاده. سوالتون البته از محتوای آموزش نیست و شما هم ظاهرا با این ایمیل فراگیر این بسته نیستید.
      با این حال بنده اگه بخوام راهنمایی کنم توصیه می کنم که گوگل کنید خطا رو. الان در مورد این خطا اگه مستقیم گوگلش کنید برای مثال ممکنه این پاسخ در استک اورفلو (+) کمکتون کنه.

  3. مریم (خریدار محصول)

    سلام.من میتونم deploy کنم ولی the site can t reach میده.میشه راهنمایی کنید.

    • مصطفی آصفی

      سلام به شما. ببینید این خطا ممکنه علت های مختلفی داشته باشه. ولی معمولا بر می گرده به تنظیم ENV که باید تو مد پروداکشن به درستی تنظیم بشه. مراحل رو با دقت بیشتری مثل من پیش برین و خطایی که تو ترمینال می گیرین رو گزارش کنید تا بهتر بتونم نظر بدم.

  4. اشکان

    سلام استاد برای کاستوم گزاشتن دامین باید احراز هویت کنیم تو اموزش که یاد دادین می خواستم بدونم روشی رو یاد میدین که از ایران بتونیم احراز هویت کنیم؟

    • مصطفی آصفی

      سلام به شما. خیر متاسفانه همون طور که تو ریز سرفصل‌ها نوشتم این موضوع گفته نشده.

  5. مونا اصغری (خریدار محصول)

    سلام پروژه من جنگو و فرانت اون ریعکت هست ، دیتابیس هم postgres
    با این آموزش پروژه رو روی هروکو پوش کردم اما وقتی سایت بالا میاد network error میده و عکسهای صفحه اول و اطلاعات نمایش داده نمیشه ولی هدر سایت هست ، سمت لوکال پروژه بالا میاد ولی در هروکو اینطور هست . لطفا راهنمایی میفرمایید؟

    • مصطفی آصفی

      سلام به شما. ببینید ما اینجا بحث ارسال پروژه با دو فرانت اند و بک اند مجزا رو نگفتیم. داستانش کمی متفاوته. به نوعی سوالتون از سرفصل این آموزش خارجه و خودش نیاز به آموزش جداگانه ای داره. بنده یادداشت کردم که تو آموزش ساخت فروشگاه که جنگو و ری اکت کنار هم هستن در موردش صحبت کنم.
      با این حال دعوتتون می کنم برای این که زمان رو از دست ندید مواردی مثل این آموزش (+) رو ببینید.

  6. مهزیار نوری

    سلام وقت بخیر موقع push کردن به هروکو با دستور git push heroku master به ارور رسیدم که وقتی سرچ زدم نوشته بود buildpack نصب کنم ولی بازم جواب نداد!!! لطفا راهنمایی کنید.https://stackoverflow.com/questions/67022960/i-get-remote-rejected-error-when-i-try-to-push-my-app-to-heroku

    • مصطفی آصفی

      سلام و وقت شما هم بخیر. باید دید خطایی که دریافت می کنید چه جزئیاتی داره. ممکنه به دلیل نداشتن VPN سرور هروکو پس بزنه. ممکنه اسم مخزنی که گذاشتید با چیزی که می خواید پوش کنید متفاوت شده.

  7. ymnopq@gmail.com (خریدار محصول)

    سلام آقای آصفی عزیز. خیلی ممنون از آموزش خوب و با کیفیتتون. فقط مشکلی که من دارم. وقتی DEBUG رو False میکنم بهم ارور 500 میده. تو نت سرچ کردم میگن برای امنیتشه و باید قسمت allowed host پر بشه ولی اونم پر میکنم باز همین ارور رو دارم و باید دیباگ رو true کنم تا کار کنه. ممنون میشم اگر بنده رو راهنمایی بفرمایید

    • مصطفی آصفی

      سلام و ممنون از محبت شما.
      اطلاعات زیادی ندادین. این که خطای ترمینال که دریافت می کنید چیه و این که روی Deploy هستید یا Development.
      توصیه می کنم با توجه به این توضیح در مستندات جنگو (+) این خط رو به تنظیمات پروژه اضافه کنید:
      DEBUG_PROPAGATE_EXCEPTIONS = True

  8. امیر مهدی اسدی

    با عرض سلام مجدد استاد عزیز ممنونم از پاسختون

    • مصطفی آصفی

      سلام مجدد. خواهش می کنم وظیفه ست. امیدوارم راهگشا بوده باشه.

  9. امیر مهدی اسدی

    با عرض سلام خدمت استاد آصفی ارجمند،
    جناب مهندس بنده پروژه رو بر روی هروکو پوش کردم اما زمانی که پروژه رو باز میکنم برنامه کراش میکند،در قسمت لاگ ها یک اروری با عنوان زیر نمایش داده میشه.
    <Module Not Found Exemption: No Module Named :"django.contrib.admin.templattags.admin_static"ممنون میشم اگر راهنمایی بفرمایید.
    سپاس فراوان

    • مصطفی آصفی

      سلام به شما و پوزش از تاخیر. نکته اول این که مطمئن بشید که ‘django.contrib.staticfiles’ در INSTALLED_APPS حتما موجود باشه.
      نکته دوم این که در جنگوی 3 بخش django.contrib.staticfiles.templatetags مطابق این توضیح (+) حذف شده.
      برای رفع مشکل به فایل \Python38\Lib\site-packages\suit\widgets.py مراجعه کنید در اسکریپت پایتون اجرایی (venv) خودتون. و این ایمپورت
      # from django.contrib.admin.templatetags.admin_static import static
      رو با این ایمپورت
      from django.contrib.admin import static
      جایگزین کنید.

  10. امیرحسین علیجانی

    سلام مجدد و ممنونم بابت پاسخگویی عالیتون

  11. امیرحسین علیجانی

    سلام جناب مهندس
    بی شک با توجه به سوابق درخشان شما مطمئن هستم که این دوره کیفیت بالایی داره
    اما قبل از تهیه خواستم بپرسم که ایا سرور heroku قادر هست که دیتابیس postgres روی اون کار کنه؟
    ممنون میشم پاسخ بدید .

    • مصطفی آصفی

      سلام به شما. بله جناب علیجانی اصلا دیتابیس پایه در هروکو PostgerSQL هست. در این دوره در این رابطه هم صحبت شده. دیتابیس پروژه مورد بحث برای ارسال اینجا SQLite بود که توضیح دادم با نصب یک کتابخونه خود سرویس Heroku حین ارسال زیرساخت لازم برای تبدیل این دیتابیس به Postgres رو فراهم می کنه (سرفصل‌ها رو مطالعه بفرمایید).

  12. رضایی

    سلام. ممنون از آموزش خوبتون. مدت‌ها دنبال سرور رایگان برای پروژه هستم. فقط این سرور برای ایران کار می کنه؟

    • مصطفی آصفی

      سلام و ممنون از لطف شما. بله می‌تونید استفاده کنید. نکته‌های لازم برای ثبت نام و استفاده از پلن رایگان در بخش‌های مختلف آموزش به اقتضای شرایط گفته شده.

دیدگاه خود را بنویسید

نظرات کاربران در خصوص دوره 

12 دیدگاه برای آموزش انتشار پروژه جنگو روی هروکو Heroku

  1. فائزه هاشمی (خریدار محصول)

    سلام و روزبخیر خدمت استاد آصفی، من نمی تونم در سایت heroku ثبت نام کنم فیلتر شکن هم روشنه خطا میده که مشکلی پیش اومده بعدا امتحان کنید، چیکار کنم؟

  2. عسکرزاده

    سلام
    من در بخش ادمین هنگامی که میخوام داده جدید سیو کنم(پی دی اف و عکس) ارور h13 میده در حالی که در فایل requirements نسخه جنگو و gunicorn پایین اوردم و در Procfile تایم اوت ۳۰ثانیه تنظیم کردم.
    اپ در هروکو ام ریستارت کردم درست نشد.
    لطفا راهنمایی کنید
    at=error code=H13 desc=”Connection closed without response” method=POST

    • مصطفی آصفی

      سلام به شما خانم عسکری زاده. سوالتون البته از محتوای آموزش نیست و شما هم ظاهرا با این ایمیل فراگیر این بسته نیستید.
      با این حال بنده اگه بخوام راهنمایی کنم توصیه می کنم که گوگل کنید خطا رو. الان در مورد این خطا اگه مستقیم گوگلش کنید برای مثال ممکنه این پاسخ در استک اورفلو (+) کمکتون کنه.

  3. مریم (خریدار محصول)

    سلام.من میتونم deploy کنم ولی the site can t reach میده.میشه راهنمایی کنید.

    • مصطفی آصفی

      سلام به شما. ببینید این خطا ممکنه علت های مختلفی داشته باشه. ولی معمولا بر می گرده به تنظیم ENV که باید تو مد پروداکشن به درستی تنظیم بشه. مراحل رو با دقت بیشتری مثل من پیش برین و خطایی که تو ترمینال می گیرین رو گزارش کنید تا بهتر بتونم نظر بدم.

  4. اشکان

    سلام استاد برای کاستوم گزاشتن دامین باید احراز هویت کنیم تو اموزش که یاد دادین می خواستم بدونم روشی رو یاد میدین که از ایران بتونیم احراز هویت کنیم؟

    • مصطفی آصفی

      سلام به شما. خیر متاسفانه همون طور که تو ریز سرفصل‌ها نوشتم این موضوع گفته نشده.

  5. مونا اصغری (خریدار محصول)

    سلام پروژه من جنگو و فرانت اون ریعکت هست ، دیتابیس هم postgres
    با این آموزش پروژه رو روی هروکو پوش کردم اما وقتی سایت بالا میاد network error میده و عکسهای صفحه اول و اطلاعات نمایش داده نمیشه ولی هدر سایت هست ، سمت لوکال پروژه بالا میاد ولی در هروکو اینطور هست . لطفا راهنمایی میفرمایید؟

    • مصطفی آصفی

      سلام به شما. ببینید ما اینجا بحث ارسال پروژه با دو فرانت اند و بک اند مجزا رو نگفتیم. داستانش کمی متفاوته. به نوعی سوالتون از سرفصل این آموزش خارجه و خودش نیاز به آموزش جداگانه ای داره. بنده یادداشت کردم که تو آموزش ساخت فروشگاه که جنگو و ری اکت کنار هم هستن در موردش صحبت کنم.
      با این حال دعوتتون می کنم برای این که زمان رو از دست ندید مواردی مثل این آموزش (+) رو ببینید.

  6. مهزیار نوری

    سلام وقت بخیر موقع push کردن به هروکو با دستور git push heroku master به ارور رسیدم که وقتی سرچ زدم نوشته بود buildpack نصب کنم ولی بازم جواب نداد!!! لطفا راهنمایی کنید.https://stackoverflow.com/questions/67022960/i-get-remote-rejected-error-when-i-try-to-push-my-app-to-heroku

    • مصطفی آصفی

      سلام و وقت شما هم بخیر. باید دید خطایی که دریافت می کنید چه جزئیاتی داره. ممکنه به دلیل نداشتن VPN سرور هروکو پس بزنه. ممکنه اسم مخزنی که گذاشتید با چیزی که می خواید پوش کنید متفاوت شده.

  7. ymnopq@gmail.com (خریدار محصول)

    سلام آقای آصفی عزیز. خیلی ممنون از آموزش خوب و با کیفیتتون. فقط مشکلی که من دارم. وقتی DEBUG رو False میکنم بهم ارور 500 میده. تو نت سرچ کردم میگن برای امنیتشه و باید قسمت allowed host پر بشه ولی اونم پر میکنم باز همین ارور رو دارم و باید دیباگ رو true کنم تا کار کنه. ممنون میشم اگر بنده رو راهنمایی بفرمایید

    • مصطفی آصفی

      سلام و ممنون از محبت شما.
      اطلاعات زیادی ندادین. این که خطای ترمینال که دریافت می کنید چیه و این که روی Deploy هستید یا Development.
      توصیه می کنم با توجه به این توضیح در مستندات جنگو (+) این خط رو به تنظیمات پروژه اضافه کنید:
      DEBUG_PROPAGATE_EXCEPTIONS = True

  8. امیر مهدی اسدی

    با عرض سلام مجدد استاد عزیز ممنونم از پاسختون

    • مصطفی آصفی

      سلام مجدد. خواهش می کنم وظیفه ست. امیدوارم راهگشا بوده باشه.

  9. امیر مهدی اسدی

    با عرض سلام خدمت استاد آصفی ارجمند،
    جناب مهندس بنده پروژه رو بر روی هروکو پوش کردم اما زمانی که پروژه رو باز میکنم برنامه کراش میکند،در قسمت لاگ ها یک اروری با عنوان زیر نمایش داده میشه.
    <Module Not Found Exemption: No Module Named :"django.contrib.admin.templattags.admin_static"ممنون میشم اگر راهنمایی بفرمایید.
    سپاس فراوان

    • مصطفی آصفی

      سلام به شما و پوزش از تاخیر. نکته اول این که مطمئن بشید که ‘django.contrib.staticfiles’ در INSTALLED_APPS حتما موجود باشه.
      نکته دوم این که در جنگوی 3 بخش django.contrib.staticfiles.templatetags مطابق این توضیح (+) حذف شده.
      برای رفع مشکل به فایل \Python38\Lib\site-packages\suit\widgets.py مراجعه کنید در اسکریپت پایتون اجرایی (venv) خودتون. و این ایمپورت
      # from django.contrib.admin.templatetags.admin_static import static
      رو با این ایمپورت
      from django.contrib.admin import static
      جایگزین کنید.

  10. امیرحسین علیجانی

    سلام مجدد و ممنونم بابت پاسخگویی عالیتون

  11. امیرحسین علیجانی

    سلام جناب مهندس
    بی شک با توجه به سوابق درخشان شما مطمئن هستم که این دوره کیفیت بالایی داره
    اما قبل از تهیه خواستم بپرسم که ایا سرور heroku قادر هست که دیتابیس postgres روی اون کار کنه؟
    ممنون میشم پاسخ بدید .

    • مصطفی آصفی

      سلام به شما. بله جناب علیجانی اصلا دیتابیس پایه در هروکو PostgerSQL هست. در این دوره در این رابطه هم صحبت شده. دیتابیس پروژه مورد بحث برای ارسال اینجا SQLite بود که توضیح دادم با نصب یک کتابخونه خود سرویس Heroku حین ارسال زیرساخت لازم برای تبدیل این دیتابیس به Postgres رو فراهم می کنه (سرفصل‌ها رو مطالعه بفرمایید).

  12. رضایی

    سلام. ممنون از آموزش خوبتون. مدت‌ها دنبال سرور رایگان برای پروژه هستم. فقط این سرور برای ایران کار می کنه؟

    • مصطفی آصفی

      سلام و ممنون از لطف شما. بله می‌تونید استفاده کنید. نکته‌های لازم برای ثبت نام و استفاده از پلن رایگان در بخش‌های مختلف آموزش به اقتضای شرایط گفته شده.

دیدگاه خود را بنویسید

SKU HB-DjangoWebIntro-DeployHeroku Category Tags , ,