رفتن به محتوای اصلی
هاست وردپرسمیزبانی برای فردای بزرگ‌تر
هاست وردپرسثبت دامنهبهینه‌سازی سایتمجلهدربارهٔ ماتماس با ما
ناحیهٔ کاربری
خانه/مجله/جنگو
جنگو۱۲ دقیقه مطالعه

آموزش اجرای جنگو روی هاست cPanel

از ورود به cPanel تا نمایش سایت جنگو روی دامنه؛ آموزش آپلود پروژه، نصب پکیج‌ها، تنظیم دیتابیس، WSGI و فایل‌های static، مناسب اولین انتشار.

انتشار: 1404/10/23

تهیه و انتشار: هاست وردپرس· به‌روزرسانی: ۲۰ مهر ۱۴۰۵

آموزش اجرای جنگو روی هاست cPanel
آموزش قدم‌به‌قدم میزبانی Django با Setup Python App، دیتابیس و ورودی WSGI روی cPanel.
فهرست مطالب +
پیش‌نیازها و نام‌های نمونهورود به cPanelآپلود پروژهساخت Python AppTerminal و نصب پکیج‌هاآماده کردن دیتابیسدامنه و کلید محرمانهفایل شروع برنامهmigration و فایل‌های staticانتشار و رفع خطاسوالات متداولمنابع آموزش

در این راهنما

  • ورود به cPanel، ساخت پوشه و آپلود فایل‌های پروژه
  • نصب پکیج‌ها و تنظیم دیتابیس، دامنه و فایل شروع
  • اجرای migration، نمایش static و انتشار سایت روی دامنه

قبل از شروع؛ چه چیزهایی آماده باشد؟

در این آموزش، یک پروژهٔ Django که روی رایانهٔ شما اجرا می‌شود را روی هاست منتشر می‌کنیم. برنامه‌نویسی جنگو لازم نیست از نو انجام شود؛ کد پروژه، یک هاست فعال و دامنه‌ای که به هاست متصل شده باشد را آماده کنید.

در مثال‌ها، پوشهٔ هاست myapp، نام بستهٔ جنگو myproject و دامنه example.com است. بستهٔ جنگو همان پوشه‌ای است که settings.py داخل آن قرار دارد. این نام‌ها را با اطلاعات پروژهٔ خود جایگزین کنید.

این راهنما برای اجرای معمول Django با WSGI است؛ WSGI رابط بین وب‌سرور و برنامهٔ پایتون شماست. برای Channels، WebSocket یا پردازش جداگانه، تیم فنی در تنظیم محیط اجرای مناسب همراه شماست.

۱. ورود به cPanel و پیدا کردن ابزارها

cPanel پنل مدیریت هاست شماست؛ فایل‌ها، دیتابیس و ترمینال را از همین صفحه مدیریت می‌کنید. برای ورود، اطلاعات سرویس فعال خود را آماده داشته باشید.

  1. وارد ناحیهٔ کاربری هاست وردپرس شوید؛ از حسابی استفاده کنید که هاست را با آن تهیه کرده‌اید.
  2. در بخش سرویس‌ها، هاست فعال خود را باز کنید و گزینهٔ ورود به cPanel را بزنید. اگر لینک ورود مستقیم ندارید، از آدرس و اطلاعات ورودِ پیام فعال‌سازی سرویس استفاده کنید.
  3. پس از ورود، صفحهٔ اصلی cPanel را می‌بینید. نام ابزار موردنیاز، مثل File Manager یا Terminal را در کادر جست‌وجوی پنل بنویسید.

نام کاربری cPanel را از اطلاعات سرویس پیدا کنید. هر جا در فرمان‌ها USERNAME دیدید، همین نام را جایگزین کنید؛ این مقدار، ایمیل یا نام نمایشی حساب شما نیست.

برای این آموزش از سه ابزار استفاده می‌کنیم: File Manager برای فایل‌ها، Setup Python App برای محیط پایتون و Terminal برای فرمان‌ها. در بخش Domains نیز دامنه و مسیر فایل‌های عمومی آن را ببینید. اگر دامنه هنوز به هاست وصل نیست، DNS را طبق اطلاعات فعال‌سازی سرویس تنظیم کنید.

۲. ساخت پوشه و آپلود پروژه

  1. روی رایانه، فایل‌های پروژه را ZIP کنید. فایل manage.py، پوشهٔ پروژه و برنامه‌های آن باید داخل ZIP باشند. پوشهٔ محیط مجازی مثل .venv، فایل‌های Git و اطلاعات محرمانه را داخل آن نگذارید.
  2. در cPanel وارد File Manager شوید و از ستون کناری، Home را باز کنید. مسیر آن معمولاً /home/USERNAME است.
  3. با + Folder پوشه‌ای به نام myapp بسازید و وارد آن شوید. این پوشه را کنار public_html بسازید، نه داخل آن.
  4. Upload را بزنید، ZIP را انتخاب کنید و پس از تکمیل آپلود به File Manager برگردید.
  5. ZIP را انتخاب کنید و Extract را بزنید. پس از استخراج، باید /home/USERNAME/myapp/manage.py وجود داشته باشد.

اگر فایل‌ها داخل یک پوشهٔ اضافی مثل myapp/project/manage.py افتاده‌اند، فایل‌ها و پوشه‌های داخل project را با Move به myapp منتقل کنید. مسیرِ دارای manage.py، ریشهٔ پروژهٔ ماست.

فایل requirements.txt نیز باید همین‌جا باشد. این فایل فهرست پکیج‌های پروژه است. اگر آن را ندارید، روی رایانه در محیط مجازیِ فعال پروژه، فرمان python -m pip freeze > requirements.txt را اجرا و فایل ساخته‌شده را آپلود کنید.

۳. ساخت محیط پایتون در Setup Python App

به صفحهٔ اصلی cPanel برگردید، Setup Python App را جست‌وجو و باز کنید و Create Application را بزنید. تنظیمات زیر را وارد کنید:

  • Python version: نسخهٔ سازگار با پروژه؛ بهتر است با نسخهٔ محیط توسعهٔ شما یکسان باشد.
  • Application root: مقدار myapp؛ مسیر نسبت به Home است، پس /home/USERNAME را اینجا ننویسید.
  • Application URL: دامنهٔ متصل به هاست. برای این مثال، برنامه را روی ریشهٔ دامنه قرار می‌دهیم و مسیر بعد از دامنه را خالی می‌گذاریم.
  • Application startup file: مقدار passenger_wsgi.py.
  • Application Entry point: مقدار application.

Create را بزنید. پنل یک محیط مجازی می‌سازد؛ محیط مجازی یعنی پکیج‌های این پروژه جدا از پروژه‌های دیگر نصب می‌شوند. دستور ورود به این محیط را که بالای صفحهٔ برنامه نمایش داده می‌شود کپی کنید.

۴. باز کردن Terminal و نصب پکیج‌ها

در صفحهٔ اصلی cPanel، Terminal را جست‌وجو و باز کنید. در اولین ورود، پیام را بخوانید و I understand and want to proceed را بزنید. فرمان‌ها را یکی‌یکی وارد کنید و بعد از هر فرمان Enter بزنید.

فعال‌سازی محیط و نصب requirements.txt
# Use the activation command shown in your cPanel account.
# Replace USERNAME, APP_ROOT and PYTHON_VERSION with your account values.
source /home/USERNAME/virtualenv/APP_ROOT/PYTHON_VERSION/bin/activate
cd /home/USERNAME/APP_ROOT
python -m pip install -r requirements.txt
    

خط اول را با دستور واقعی کپی‌شده از Setup Python App جایگزین کنید. در خط دوم، USERNAME نام کاربری شما و APP_ROOT برابر myapp است. خط آخر پکیج‌ها را نصب می‌کند؛ تا پایان نصب صبر کنید و اگر خطا دیدید، پیش از ادامه همان خطا را رفع کنید.

برای اطمینان، python -m django --version را اجرا کنید. نمایش شمارهٔ نسخه یعنی Django در همین محیط نصب شده است. هر بار Terminal تازه‌ای باز می‌کنید، ابتدا محیط مجازی را فعال کنید و وارد پوشهٔ پروژه شوید.

۵. آماده کردن دیتابیس

دیتابیس محل نگهداری اطلاعات سایت است. در File Manager فایل myproject/settings.py را انتخاب کنید و Edit را بزنید. بخش DATABASES مشخص می‌کند پروژه از چه دیتابیسی استفاده می‌کند.

اگر پروژه از SQLite استفاده می‌کند

برای شروع به ساخت دیتابیس در پنل نیاز ندارید. تنظیمات SQLite پروژه را نگه دارید و اگر سایت دادهٔ قبلی دارد، فایل db.sqlite3 آن را نیز در پوشهٔ پروژه آپلود کنید. قبل از تغییرات از فایل دیتابیس نسخهٔ پشتیبان داشته باشید؛ آن را داخل public_html نگذارید.

اگر پروژه از MySQL یا MariaDB استفاده می‌کند

  1. در cPanel ابزار Manage My Databases یا MySQL Databases را باز کنید.
  2. در بخش ساخت دیتابیس، یک نام وارد کنید و دیتابیس را بسازید. نام کامل نمایش‌داده‌شده را یادداشت کنید؛ ممکن است با نام کاربری هاست شروع شود.
  3. یک کاربر دیتابیس با رمز قوی بسازید. در بخش Add User To Database، کاربر را به همان دیتابیس اضافه کنید و مجوزهای لازم برنامه را ذخیره کنید.
  4. نام کامل دیتابیس، نام کامل کاربر، رمز و میزبان دیتابیس را در تنظیمات پروژه قرار دهید. مقدار میزبان را از اطلاعات هاست بگیرید.

اگر برنامه مشخصات اتصال را از متغیر محیطی می‌خواند، همان نام متغیرهایی را که در کد پروژه آمده‌اند در Setup Python App اضافه کنید. ساخت دیتابیس خالی، داده‌های رایانه را منتقل نمی‌کند؛ برای انتقال دادهٔ قبلی، خروجی دیتابیس را وارد کنید. پکیج اتصال نیز باید در requirements.txt پروژه باشد.

۶. تنظیم دامنه و کلید محرمانه

در ویرایشگر File Manager، مقادیر زیر را در settings.py تنظیم کنید. خطوط موجود را اصلاح کنید؛ یک تنظیم را دو بار در فایل ننویسید.

تنظیمات لازم در settings.py
import os

SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]
DEBUG = False
ALLOWED_HOSTS = ["example.com", "www.example.com"]
STATIC_URL = "static/"
STATIC_ROOT = BASE_DIR / "staticfiles"
    

BASE_DIR از قبل در تنظیمات معمول جنگو تعریف شده است. example.com و www.example.com را با دامنه‌های واقعیِ مورد استفاده جایگزین کنید. DEBUG = False مانع نمایش جزئیات داخلی خطا به بازدیدکننده می‌شود.

برای ساخت کلید محرمانه، در همان Terminal با محیط مجازی فعال، فرمان زیر را اجرا کنید و خروجی را فقط برای تنظیم برنامه بردارید:

ساخت کلید محرمانهٔ Django
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
    

به صفحهٔ برنامه در Setup Python App برگردید. در Environment variables، Add Variable را بزنید؛ نام را DJANGO_SECRET_KEY و مقدار را خروجی فرمان قرار دهید. با Done و سپس Save تنظیمات را ذخیره کنید. رمزها و کلید را در Git یا پیام عمومی قرار ندهید.

این متغیر در اجرای وب برنامه استفاده می‌شود. برای فرمان‌های manage.py در Terminal هم باید آن را در همان نشست تنظیم کنید؛ فرمان زیر کلید را با ورودی پنهان دریافت می‌کند:

تنظیم کلید برای فرمان‌های Terminal
read -rs -p "Django secret key: " DJANGO_SECRET_KEY
echo
export DJANGO_SECRET_KEY
    

کلید مرحلهٔ قبل را وارد کنید و Enter بزنید. اگر پروژه متغیرهای اتصال دیتابیس دارد، آن‌ها نیز باید هنگام اجرای فرمان‌های مدیریتی در دسترس باشند.

۷. تنظیم فایل شروع passenger_wsgi.py

در File Manager به /home/USERNAME/myapp بروید. اگر passenger_wsgi.py وجود دارد، آن را با Edit باز کنید؛ اگر نیست، با + File بسازید. محتوای آن را با کد زیر جایگزین و Save Changes را بزنید.

passenger_wsgi.py
import os
import sys
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))
# Replace myproject with the package that contains settings.py.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
    

myproject را با نام پوشهٔ دارای settings.py جایگزین کنید. این فایل باید کنار manage.py باشد. Passenger برنامه را از همین فایل و متغیر application اجرا می‌کند؛ لازم نیست runserver را در ترمینال باز نگه دارید.

۸. ساخت جدول‌ها و آماده کردن فایل‌های static

به Terminal برگردید؛ محیط مجازی، پوشهٔ پروژه و متغیرهای مرحلهٔ قبل باید آماده باشند. اگر دیتابیس داده دارد، قبل از migration از آن بکاپ بگیرید. سپس فرمان‌ها را به‌ترتیب اجرا کنید:

آماده‌سازی Django برای انتشار
python manage.py check --deploy
python manage.py migrate
python manage.py collectstatic --noinput
    
  • check --deploy تنظیمات انتشار را بررسی می‌کند؛ پیام‌های آن را بخوانید.
  • migrate جدول‌های لازم و تغییرات ساختار دیتابیس را اعمال می‌کند.
  • collectstatic فایل‌های CSS، JavaScript و تصاویر قالب را در پوشهٔ staticfiles جمع می‌کند.

نمایش CSS و تصاویر در دامنه

در این نمونه، آدرس فایل‌ها /static/ است. در cPanel وارد Domains شوید و Document Root دامنه را پیدا کنید؛ برای دامنهٔ اصلی معمولاً public_html است. از File Manager در همان مسیر یک پوشهٔ static بسازید.

فایل‌ها و پوشه‌های داخلmyapp/staticfiles را انتخاب کنید و با Copy به پوشهٔ static دامنه منتقل کنید. برای مثال، فایل admin/css/base.css باید به شکل public_html/static/admin/css/base.css قرار بگیرد. کل پوشهٔ staticfiles یا کد پایتون را در پوشهٔ عمومی کپی نکنید.

اگر پروژهٔ شما از قبل روش دیگری برای سرو static دارد، همان روش را نگه دارید. فایل‌های آپلودی کاربران یا media با static متفاوت‌اند و باید مسیر و بکاپ جداگانه داشته باشند.

۹. راه‌اندازی و مشاهدهٔ سایت

  1. در Setup Python App برنامه را باز و Restart را بزنید.
  2. دامنهٔ خود را با HTTPS در مرورگر باز کنید. باید صفحهٔ پروژه دیده شود.
  3. یک صفحهٔ دیگر، فرم ورود و CSS سایت را هم باز کنید تا اتصال دیتابیس و فایل‌های ثابت مشخص شود.
  4. برای ساخت مدیر سایت، در محیط مجازی و پوشهٔ پروژه فرمان python manage.py createsuperuser را اجرا و به پرسش‌های آن پاسخ دهید؛ سپس مسیر admin پروژه را باز کنید.

برای انتشار تغییرات بعدی، فایل‌های تغییرکرده را آپلود کنید، در صورت نیاز پکیج‌ها و migration را اجرا کنید، static را دوباره جمع و منتقل کنید و در پایان Restart بزنید.

خطاهای رایج استقرار جنگو
نشانهکاری که انجام دهید
ModuleNotFoundError محیط مجازی را فعال و requirements.txt را نصب کنید؛ نام بستهٔ پروژه در WSGI را هم ببینید.
KeyError: DJANGO_SECRET_KEY کلید را هم در تنظیمات Python App برای وب و هم در نشست Terminal برای manage.py تنظیم کنید.
DisallowedHost دامنهٔ بازشده در مرورگر را بدون https:// در ALLOWED_HOSTS قرار دهید.
CSS نمایش داده نمی‌شود collectstatic را اجرا و مسیر فایل داخل پوشهٔ static دامنه را با URL آن مقایسه کنید.
خطای 500 لاگ Passenger یا برنامه را بخوانید. متن خطا را بدون رمز و کلید برای پشتیبانی بفرستید.

سوالات متداول اولین انتشار جنگو

فایل‌های پایتون را در public_html آپلود کنم؟

در این آموزش خیر؛ پروژه در پوشهٔ myapp کنار public_html است. فقط فایل‌های عمومی مثل خروجی static به مسیر عمومی دامنه منتقل می‌شوند.

بعد از بستن Terminal، سایت خاموش می‌شود؟

خیر؛ سایت با Passenger و ورودی WSGI اجرا می‌شود. اجرای manage.py runserver در ترمینال برای انتشار سایت استفاده نمی‌شود.

چرا برنامه در وب اجرا می‌شود ولی migrate خطا می‌دهد؟

محیط مجازی و متغیرهای تنظیم‌شده در پنل لزوماً در نشست تازهٔ Terminal آماده نیستند. ابتدا محیط را فعال کنید و متغیرهای موردنیاز را در همان نشست تنظیم کنید.

منابع و ادامهٔ آموزش

  • مدیریت و آپلود فایل‌ها در cPanel
  • تنظیم Python App در CloudLinux
  • چک‌لیست انتشار Django

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

قدم بعدی سایت شما

برای وردپرس، یک خانهٔ تازه.

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

انتخاب هاست وردپرس ←گفت‌وگو با پشتیبانی ↗

در همین مقاله

فهرست مطالب
01پیش‌نیازها و نام‌های نمونه02ورود به cPanel03آپلود پروژه04ساخت Python App05Terminal و نصب پکیج‌ها06آماده کردن دیتابیس07دامنه و کلید محرمانه08فایل شروع برنامه09migration و فایل‌های static10انتشار و رفع خطا11سوالات متداول12منابع آموزش
همهٔ آموزش‌ها ←
برای ادامهٔ مسیر

این راهنماها هم به کارتان می‌آیند.

مجلهٔ هاست وردپرس ←
آموزش اجرای Flask روی هاست cPanel
فلسک۱۰ دقیقه

آموزش اجرای Flask روی هاست cPanel

آموزش قدم‌به‌قدم Flask برای اولین انتشار؛ ورود به cPanel، انتقال فایل‌ها، نصب کتابخانه‌ها و تنظیم فایل شروع تا نمایش برنامه روی دامنه.

چگونه منابع هاست پایتون را انتخاب کنیم؟
انتخاب هاست۸ دقیقه

چگونه منابع هاست پایتون را انتخاب کنیم؟

منابع هاست را به زبان ساده بشناسید؛ انتخاب RAM، CPU، دیسک و محل سرور، همراه راهنمای ورود به cPanel و مشاهدهٔ مصرف پروژه.

آموزش راه‌اندازی ربات تلگرام روی هاست cPanel
تلگرام۱۲ دقیقه

آموزش راه‌اندازی ربات تلگرام روی هاست cPanel

ربات پایتونی خود را روی cPanel اجرا کنید؛ از ورود به پنل و آپلود فایل‌ها تا نصب کتابخانه‌ها، تنظیم توکن و اجرای مداوم با BotCTL.

فصل بعدی سایت شما از همین‌جا شروع می‌شود

آماده‌اید آنلاین‌تر شوید؟

انتخاب هاست وردپرس ←
هاست وردپرسمیزبانی برای فردای بزرگ‌تر
ثبت دامنهبهینه‌سازی سایتمجلهدربارهٔ ماتماس با ماقوانین خدماتحریم خصوصی
۰۲۱ ۷۱۰۵۷۲۰۹
ناحیهٔ کاربری پایتون‌هاستسرویس‌های من ↗دامنه‌های من ↗صورتحساب‌ها ↗ثبت تیکت ↗
تمام حقوق برای هاست وردپرس محفوظ است.پیگیری تیکت‌ها ↗