دیپلوی جنگو در هاست اشتراکی

  • امین واصف پور
  • 1401/08/16
دیپلوی جنگو در هاست اشتراکی
جنگو, دیپلوی, هاست

مقدمه

در این مقاله قصد داریم نحوه دیپلوی یک اپ جنگو در هاست های اشتراکی را بررسی کنیم. با ما همراه باشید.

هاست اشتراکی

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

تهیه هاست

قصد داریم یک اپ توسعه داده شده توسط جنگو را در بستر یک هاست اشتراکی لینوکسی دیپلوی کنیم. مرحله اول تهیه یک هاست اشتراکی است. همچنین باید دقت کنید که ما نیاز به یک هاست اشتراکی پایتونی داریم. در این مدل از هاست، کانفیگ های مورد نیاز برای پیاده سازی زیرساخت های پایتونی فراهم است. شرکت های متعددی در ایران خدمات هاست پایتون اشتراکی ارائه میدهند اما من در این مقاله از هاست پایتون اشتراکی پارس وب سرور استفاده کردم. برای تهیه هاست تنها کافیست وارد صفحه اصلی سایت پارس وب سرور شوید و پس از ورود و ساخت حساب کاربری، از سربرگ خدمات میزبانی، گزینه هاست Python را انتخاب کنید.

ورود به پارس وب سرور

در اینجا کانفیگ های مختلفی وجود دارد که در میزان منابع و امکانات با هم تفاوت دارند. من برای این مقاله از پلن اول استفاده میکنم. ترجیحا هاست خودتون رو در ایران سفارش بدید زیرا سرعت بیشتری در ایران به شما ارائه میدهد. تنها کافیست روی گزینه سفارش کلیک کنید.

سفارش هاست اشتراکی

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

تنظیم دامنه

1. ثبت دامنه جدید: شما قصد ثبت یک دامنه جدید را دارید. میتونید نام دامنه رو جستجو کنید و در صورت موجود بودن با پرداخت هزینه آن، دامنه رو تهیه کنید.

2. انتقال دامنه از شرکت دیگر: شما دامنه ثبت شده دیگری در شرکت دیگه ای دارید و قصد دارید علاوه بر تمدید آن، آن را به پارس وب سرور منتقل کنید.

3. از دامنه ای که قبل ثبت کرده ام استفاده میکنم: شما یک دامنه ثبت شده در شرکت دیگه ای دارید و قصد تمدید و یا انتقال آن به پارس وب سرور را ندارید و صرفا قصد دارید از آن دامنه استفاده کنید.

من دامنه خودم رو از ایران سرور تهیه کرده ام، پس از گزینه سوم استفاده می کنم. برای تهیه دامنه هم میتونید از شرکت های دیگه اقدام کنید و یا در همین قسمت، گزینه شماره یک را انتخاب کنید.

پس از این مرحله، شما وارد مراحل پرداخت میشید و در نهایت سرویس شما در بخش مدیریت سرویس قابل مشاهده می شود. اگر در فرآیند خرید هاست مشکلی داشتید، میتونید خیلی ساده به بخش پشتیبانی تیکت بزنید.

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

مرحله بعدی تنظیم NS ها یا همان name server های دامنه است. اگر دامنه رو از شرکت دیگه ای تهیه کردید، کافیست وارد پنل مدیریتی خود در آن سایت بشید و روی دامنه مربوطه کلیک کنید. از بخش مدیریت DNS ها، رکورد های NS دامنه را با مقادیری که از پارس وب سرور دریافت کردید، جایگزین کنید و روی گزینه ذخیره کلیک کنید. برای دریافت مقادیر NS پارس وب سرور باید پس از تهیه هاست از سربرگ مدیریت سرویس وارد سرویس هاست خود بشید و از بخش اطلاعات فنی، مقادیر NS های پارس وب سرور را کپی کنید.

تنظیم ns ها

تنظیم شدن NS های دامنه بسته به پسوند دامنه شما میتونه تا 24 ساعت زمان ببرد. برای اینکه بتونید از تنظیم شدن NS های دامنه خود مطمئن بشید، کافیه وارد سایت زیر بشید و دامنه خودتون رو وارد کنید. از dropdown رو به رویی نوع رکورد را روی NS قرار بدید و تایید کنید. منتظر بمونید تا همه درخواست ها کامل بشود. پس از آن باید تمامی نتیجه ها مقدار NS های پارس وب سرور را نمایش بدهد.

dnschecker.org

ساخت اپ پایتون

هم اکنون به سراغ دیپلوی جنگو میریم. از قسمت مدیریت سرویس وارد سرویس خودتون بشید و روی گزینه ورود به CPanel کلیک کنید.

ورود به سی پنل

پس از ورود به محیط CPanel، از قسمت Software، روی گزینه Setup Python App کلیک کنید. ممکن هست که طراحی و شکل ظاهری پنل CPanel شما کمی متفاوت باشد، اما در نهایت مواردی که گفتم در آن موجود هست.

ساخت اپ پایتون

سپس روی گزینه CREATE APPLICATION کلیک کنید.

ساخت اپ پایتون

 در اینجا باید ورژن پایتون مد نظر خودتون رو انتخاب کنید. من از ورژن 3.8.12 برای این پروژه استفاده می کنم. در مرحله بعد لازم هست تا یک مقدار برای بخش Application root در نظر بگیرید. این مقدار اسم پوشه اصلی پروژه شما هست. طبیعتا این مقدار نباید با اپلیکیشن های پایتون قبلی شما یکسان باشد. (البته اگر از قبل اپلیکیشنی ایجاد کرده اید.)

مورد بعدی بخش Application URL است. در این بخش اگر قصد دارید تا اپ جنگو شما در قسمت خاصی از دامنه و یا در زیر دامنه سرو شود، مقدار آن را مشخص کنید. اما اگر قصد دارید که اپ جنگو شما از دامنه اصلی شما استفاده کند، نیازی به ایجاد تغییری در این بخش نیست و میتویند از این بخش صرف نظر کنید.

در نهایت روی گزینه CREATE کلیک کنید. کمی صبر کنید تا اپلیکیشن پایتون شما ساخته شود.

ساخت اپ پایتون

 پس از اینکه اپ شما با موفقیت ساخته شد، به صفحه اصلی CPanel باز گردید و از بخش Files، وارد File Manager شوید.

ورود به پوشه مربوط به پروژه

پس از ورود به File Manager، روی پوشه مربوط به اپ پایتون خودتون کلیک کنید و وارد آن بشید.

آپلود فایل های پروژه

از سربرگ بالا، گزینه Upload را انتخاب کنید.

تنظیم فایل passenger_wsgi.py

در این مرحله لازم هست تا شما فایل های پروژه خود را به صورت فرمت zip در آورده و از طریق این صفحه آپلود کنید. قبل از انجام این کار به چند نکته زیر توجه کنید.

1. شما باید حتما از فرمت zip برای فشرده سازی فایل های پروژه خود استفاده بکنید و استفاده از فرمت های دیگر مثل rar و ... ممکن نیست.

2. شما نیاز هست که تمامی فایل های موجود در پروژه خودتون را به همراه فایل .env و manage.py داخل فایل زیپ قرار بدید. البته نیازی به قرار دادن فایل دیتابیس sqlite نیست.

3. همچنین نیاز هست که شما پوشه های مربوط به فایل های static پروژه را نیز در فایل زیپ قرار بدید.

4. فراموش نشود که شما باید فایل requirements.txt را نیز در فایل زیپ قرار دهید.

5. پکیج psycopg2-binary باید در فایل requirements.txt شما موجود باشد.

در نهایت با استفاده از گزینه Select File، فایل زیپ پروژه را آپلود کنید و منتظر بمانید تا فرآیند آپلود آن کامل بشود. پس از اتمام فرآیند آپلود مجددا به File Manager برگردید و روی فایل زیپ شده کلیک کنید و گزینه Extract را بزنید. روی گزینه Extract Files کلیک کنید تا فرآیند Extract آغاز شود.

آپلود فایل های پروژه

تنظیم فایل Passenger

در پوشه اصلی پروژه شما یک فایل با عنوان passenger_wsgi.py وجود دارد. با کلیک راست کردن روی آن و انتخاب گزینه Edit، آن را ویرایش کنید.

ویرایش فایل passenger

سپس محتوای آن را پاک کنید و کد زیر را جایگزین کنید.

from config.wsgi import application

دقت کنید که در اینجا متغیر application از پوشه کانفیگ پروژه جنگو import شده است. معمولا اسم این پوشه را config می گذاریم اما اگر اسم پوشه شما متفاوت است، لازم هست که این مورد را اصلاح کنید. سپس از قسمت بالا فایل را ذخیره کنید.

ساخت دیتابیس

قدم بعدی ساخت یک دیتابیس است. به منوی اصلی CPanel برگردید و از قسمت Databases، روی گزینه PostgreSQL Databases کلیک کنید.

ورود به بخش دیتابیس ها

سپس در قسمت Create New Database، یک نام برای دیتابیس خود در نظر بگیرید و روی گزینه Create Database کلیک کنید.

ساخت دیتابیس

پس از ساخت دیتابیس نیاز هست تا یک user برای این دیتابیس ایجاد کنیم. از داخل همین صفحه به قسمت Add New User بروید و با انتخاب یک نام و رمز، یک user بسازید. همچنین برای ایجاد رمز میتوانید از گزینه Password Generator استفاده کنید. پس از ساخت user، مطمئن شوید که نام دیتابیس، نام user و رمز آن را در جایی مطمئن یادداشت کرده اید.

ساخت کاربر برای دیتابیس

در مرحله آخر، داخل همین صفحه به بخش Add User To Database بروید و user خود را به دیتابیس خود اضافه کنید.

اضافه کردن کاربر به دیتابیس

اتصال دیتابیس به جنگو

قبل از هر چیزی اجازه دهید یک نکته مهم را بررسی کنیم.

در هاست های اشتراکی امکان استفاده از ورژن های جدید بسیاری از ابزار ها فراهم نیست. از این رو ورژن PostgreSQL پارس وب سرور 9.2.24 هست. این به این معنا هست که اگر از جنگو ورژن 4 استفاده می کنید، امکان استفاده از PostgreSQL را ندارید و باید از MySQL استفاده کنید. همچنین میتونید از جنگو ورژن 3 استفاده کنید تا نیازی به استفاده از MySQL نداشته باشید و بتونید با PostgreSQL پیش برید.

هم اکنون شما باید مجددا وارد File Manager شوید و فایل .env پروژه خودتون را با کلیک راست کردن و انتخاب گزینه Edit ویرایش کنید. شما باید اطلاعات دیتابیس خود را در این فایل ذکر کنید. تنظیمات دیتابیس شما در جنگو باید همانند کد زیر باشد.

DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': DB_DATABASE,
            'USER': DB_USERNAME,
            'PASSWORD': DB_PASSWORD,
            'HOST': DB_HOST,
            'PORT': DB_PORT,
        }
    }

در آخر فایل .env را ذخیره کنید.

نصب requirements

دیپلوی پروژه ما تقریبا به اتمام رسیده است. هم اکنون وقت آن است که requirements های پروژه را نصب کنیم. از منوی اصلی CPanel به بخش Setup Python App بروید روی گزینه ویرایش اپلیکیشن خود کلیک کنید.

ویرایش اپ پایتون

سپس با کلیک بر روی دستور فعالسازی venv، آن را کپی کنید.

کپی کردن دستور فعالسازی venv

سپس مجدد به منوی اصلی CPanel برگردید و از قسمت Advanced وارد Terminal شوید.

ورود به ترمینال

نکته: اگر گزینه ترمینال برای شما موجود نبود، این مورد را از طریق تیکت به بخش پشتیبانی پارس وب سرور اطلاع دهید.

سپس داخل ترمینال عبارت کپی شده را با استفاده از کلیک راست و انتخاب گزینه Paste، جا گذاری کنید و Enter بزنید. استفاده از Ctrl + V در این ترمینال ممکن نیست. هم اکنون venv پروژه شما فعال شده است. سپس با استفاده از دستور زیر، پکیج های مورد نیاز پروژه خود را نصب کنید.

pip install -r requirements.txt

اجرای migration ها

سپس با استفاده از دستور زیر، migration های پروژه را اجرا کنید تا تغییرات لازمه داخل دیتابیس اعمال شود. دقت کنید که شما باید از قبل migration های پروژه خود را ساخته باشید.

python manage.py migrate

هم اکنون مجدد به اپلیکیشن خود برگردید روی گزینه Restart کلیک کنید.

ریستارت کردن اپلیکیشن

هم اکنون اگر دامنه خود را جستجو کنید، میبینید که اپ جنگو اجرا شده است.

تنظیم فایل های static و media

مرحله آخر کار ما تنظیم root فایل های static و media هست. داخل File Manager پوشه ای به اسم public_html وجود دارد. هر محتوایی که شما داخل این پوشه قرار بدید، از طریق دامنه شما در دسترس خواهد بود. به عنوان مثال اگر یک فایل با اسم test.py داخل این پوشه ایجاد کنید و نام دامنه هم aminvasefpoor.com باشد، این فایل توسط آدرس زیر در دسترس است.

www.aminvasefpoor.com/test.py

با این حساب، نیاز هست تا ما فایل های static و media خود را داخل این پوشه قرار دهیم تا توسط کاربر ها در دسترس باشد.

نکته مهم: هرگز فایل های حساس از جمله .env را داخل این پوشه قرار ندهید زیرا همانطور که اشاره کردم، تمامی فایل های موجود در این پوشه برای همگان در دسترس است.

وارد File Manager شوید. در قسمت بالا سمت چپ شما یک مسیر میبینید که مختص هاست اشتراکی شماست. ترکیب این مسیر و پوشه public_html مسیر مورد نظر ما برای فایل های static و media را تشکیل می دهد.

مسیر فایل های static و media

پس هم اکنون لازم است تا مسیر های این فایل ها را در فایل settings.py پروژه اصلاح کنید.

تنظیم مسیر های فایل های static و media

در نظر داشته باشید که عبارت بعد از home برای هر شخص منحصر به فرد است و نیاز است تا توسط شما اصلاح شود. هم اکنون می توانید متغیر DEBUG را روی False قرار دهید و مشاهده می کنید که فایل های static و media به درستی در دسترس هستند.

سخن آخر

در این مقاله نحوه دیپلوی یک اپ جنگو در یک هاست اشتراکی را بررسی کردیم. به طور کلی استفاده از هاست های اشتراکی را صرفا برای پروژه هایی توصیه می کنم که تغییرات زیادی در طول زمان ندارند و یا پروژه های کوچک و تمرینی هستند. برای پروژه های بزرگ و تجاری گزینه های بسیار بهتری وجود دارد که در آینده در مطالب جداگانه به آنها خواهیم پرداخت.

اگر در فرآیند دیپلوی با مشکل یا سوالی مواجه شدید، می توانید در بخش کامنت ها مطرح کنید.

 

 

اگر فکر می کنید که ما چیزی را در این مقاله جا انداخته ایم و یا در مورد پست های بعدی ایده و یا نظری دارید، خوشحال می شویم که این مورد را با ما در میان بگذارید. تنها کافیست روی دکمه زیر کلیک کنید و پیشنهاد خود را ارسال کنید.

کامنت ها :
  • فرهاد فراهانی
    فرهاد فراهانی
    21:59 - 1401/10/23
    پاسخ

    سلام
    من هرچی گشتم این فایل .env رو پیدا نکردم ممنون میشم راهنمایی بفرمایید

    • امین واصف پور
      امین واصف پور پشتیبان
      19:19 - 1401/12/17
      پاسخ

      درود دوست عزیز
      کافیست گزینه Show Hidden Files رو داخل File Manager پنل خودتون فعال کنید تا بتونید فایل .env رو مشاهده و ویرایش کنید.

ارسال نظر :
این نام در کامنت ها و پروفایل عمومی شما نمایش داده خواهد شد.
پست های مرتبط :
حسین طاهری 1401/08/03
حسین طاهری 1401/07/25