اکس پایا
آموزش نصب جنگو روی Ubuntu 22.04 (قدم‌ به‌ قدم و اصولی)
تاریخ انتشار 10 دی 1404
تعداد بازدید 83
آخرین بروزرسانی 11 دی 1404

آموزش نصب جنگو روی Ubuntu 22.04 (قدم‌ به‌ قدم و اصولی)

جنگو یکی از محبوب‌ترین فریم‌ورک‌های وب در دنیای پایتون است که برای ساخت وب‌سایت‌ها و APIهای قدرتمند استفاده می‌شود. در این آموزش، یاد می‌گیریم چگونه جنگو را روی Ubuntu 22.04 به‌صورت اصولی، امن و استاندارد نصب کنیم.

پیش‌ نیازهای نصب جنگو روی اوبونتو

قبل از شروع، مطمئن شوید موارد زیر را دارید:

  • دسترسی SSH (کاربر sudo)
  • آشنایی پایه با خط فرمان لینوکس

اگر قصد دارید پروژه جنگو را برای استفاده واقعی (Production) راه‌اندازی کنید، پیشنهاد می‌شود از یک سرور دیتاسنتری پایدار استفاده کنید.


مرحله 1 : بروزرسانی سیستم

ابتدا پکیج‌های سیستم را بروزرسانی می‌کنیم:

sudo apt update
sudo apt upgrade -y

ارور Permission denied

اگر به ارور Permission denied طبق تصویر بالا برخورد کردید به این دلیله که با دسترسی sudo اجرا نکردید دستور رو.


مرحله 2 : نصب پایتون و ابزارهای ضروری

Ubuntu 22.04 به‌صورت پیش‌فرض Python 3 را دارد، اما بهتر است ابزارهای تکمیلی را نصب کنیم:

sudo apt install python3 python3-pip python3-venv -y

بررسی نسخه پایتون:

python3 --version
بررسی نسخه پایتون

مرحله 3 : ساخت Virtual Environment (محیط مجازی)

برای جلوگیری از تداخل پکیج‌ها، همیشه جنگو را داخل محیط مجازی نصب کنید.

ابتدا یک پوشه جدید میسازیم و سپس وارد پوشه می شویم

mkdir django-project
cd django-project

ساخت محیط مجازی:

python3 -m venv venv

فعال‌سازی محیط مجازی:

source venv/bin/activate

بعد از فعال‌سازی، باید ببینید که ابتدای ترمینال عبارت (venv) نمایش داده می‌شود.

فعالسازی محیط مجازی


مرحله 4 : نصب جنگو با pip

حالا جنگو را نصب می‌کنیم:

pip install django

بررسی نصب موفق جنگو :

django-admin --version

نصب جنگو


مرحله 5 : ساخت اولین پروژه جنگو

ایجاد پروژه جدید:

django-admin startproject config .

ساختار پروژه شما به شکل زیر خواهد بود:

django-project/
├── config/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── venv/

مرحله 6 : ساخت جداول دیتابیس

وقتی پروژه جنگو رو می‌سازی، دیتابیس هنوز هیچ جدولی نداره.
ولی جنگو برای اجرا شدن به یه‌ سری جدول‌ های پایه نیاز داره مثل:

  • کاربران (auth_user)

  • سشن‌ها (django_session)

  • مجوزها (auth_permission)

  • ادمین (django_admin_log)

این جدول‌ها تا وقتی migration اجرا نشه ساخته نمی‌شن.

دستور makemigrations رو میزنیم :

python manage.py makemigrations

makemigrations دقیقاً چیکار می کنه ؟

  • تغییرات مدل‌ها (models.py) رو بررسی می‌کنه

  • از روی اون‌ها فایل migration می‌سازه

  • هیچ تغییری تو دیتابیس نمی‌ده

مثال :

blog/migrations/0001_initial.py

یعنی «من فهمیدم چی می‌خوای، نقشه‌شو کشیدم»

migrate دقیقا چیکار میکنه ؟

python manage.py migrate

کاری که انجام می‌ده :

  • فایل‌های migration رو می‌خونه

  • دستورهای SQL لازم رو اجرا می‌کنه

  • جدول‌ها رو واقعاً داخل دیتابیس می‌سازه

migration کردن

مرحله 7 : اجرای سرور توسعه جنگو

اجرای پروژه:

python manage.py runserver

اگر همه‌چیز درست باشد، خروجی مشابه زیر خواهید دید:

Starting development server at http://127.0.0.1:8000/

حالا می‌توانید با مرورگر، آدرس زیر را باز کنید:

http://127.0.0.1:8000/

باز کردن پورت 8000 (در صورت نیاز)

اگر فایروال فعال است، پورت 8000 را باز کنید:

sudo ufw allow 8000
sudo ufw reload

نکات مهم برای اجرای جنگو روی سرور واقعی

  • هرگز از runserver در محیط production استفاده نکنید
  • برای اجرا از Gunicorn + Nginx استفاده کنید
  • حتماً DEBUG=False را فعال کنید
  • پروژه را روی سرور دیتاسنتری با IP ثابت اجرا کنید

خطاهای رایج هنگام نصب جنگو روی Ubuntu و راه‌حل آن‌ها

در زمان نصب و راه‌اندازی جنگو روی Ubuntu ممکن است با خطاهایی مواجه شوید. در این بخش، رایج‌ترین خطاها به‌همراه علت و راه‌حل دقیق آن‌ها بررسی شده است.

خطای command not found: python

علت: در نسخه‌های جدید Ubuntu دستور python به‌صورت پیش‌فرض وجود ندارد.

راه‌حل:

sudo apt install python-is-python3

یا همیشه از python3 استفاده کنید:

python3 --version

خطای pip: command not found

علت: ابزار pip برای Python 3 نصب نشده است.

راه‌حل:

sudo apt update
sudo apt install python3-pip

بررسی نصب:

pip3 --version

خطای ModuleNotFoundError: No module named django

علت: فریم‌ورک Django نصب نشده یا محیط مجازی فعال نیست.

راه‌حل:

source venv/bin/activate
pip install django

بررسی:

django-admin --version

خطای django-admin: command not found

علت: مسیر اجرای Django در PATH سیستم نیست یا virtualenv فعال نشده است.

راه‌حل:

python -m django --version

خطای Permission denied هنگام نصب پکیج‌ها

علت: عدم دسترسی نوشتن در مسیر global پایتون.

راه‌حل پیشنهادی:

python3 -m venv venv
source venv/bin/activate
pip install django

نکته: استفاده از sudo pip install توصیه نمی‌شود.


خطا در اجرای makemigrations یا migrate

علت‌های رایج:

  • اپ در INSTALLED_APPS اضافه نشده است
  • نام اپ اشتباه است
  • مشکل در تنظیمات دیتابیس وجود دارد

راه‌حل:

python manage.py makemigrations
python manage.py migrate

خطای OperationalError: no such table

علت: عملیات migrate روی دیتابیس انجام نشده است.

راه‌حل:

python manage.py migrate

در صورت نیاز:

python manage.py migrate --run-syncdb

خطای Error: That port is already in use

علت: پورت پیش‌فرض 8000 توسط سرویس دیگری اشغال شده است.

راه‌حل:

python manage.py runserver 0.0.0.0:8080

یا بررسی پروسه:

sudo lsof -i :8000

سایت از بیرون سرور باز نمی‌شود

علت: فایروال فعال است یا سرور فقط روی localhost اجرا شده است.

راه‌حل:

python manage.py runserver 0.0.0.0:8000
sudo ufw allow 8000

خطای DisallowedHost

علت: دامنه یا IP در تنظیمات ALLOWED_HOSTS تعریف نشده است.

راه‌حل (برای تست):

ALLOWED_HOSTS = ['*']

خطاهای مربوط به نسخه Python

بررسی نسخه:

python3 --version

نسخه‌های پیشنهادی:

  • Python 3.10 یا بالاتر
  • Django نسخه 4 یا 5

نکته مهم برای محیط Production

دستور runserver فقط برای محیط توسعه است. در محیط واقعی باید از Gunicorn، Nginx و HTTPS استفاده شود.

جمع‌بندی

در این آموزش یاد گرفتیم چگونه جنگو را به‌صورت اصولی روی Ubuntu 22.04 نصب کنیم، محیط مجازی بسازیم و اولین پروژه را اجرا کنیم.

در ادامه می‌توانید جنگو را به Nginx متصل کرده، دامنه ست کنید و پروژه را برای استفاده واقعی آماده کنید.

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

بر اساس رأی 1 نفر
آیا این مطلب برای شما مفید بود ؟
محسن صفری Full-Stack Developer & SEO Expert

محسن صفری ، توسعه‌دهنده Full-Stack و کارشناس SEO با بیش از ۷ سال تجربه در برنامه نویسی اندروید، پایتون، جنگو و طراحی وب. عاشق خلق سرویس‌ها و پروژه‌های هوشمند و بهینه‌سازی تجربه کاربری و سئو.

محسن صفری
نظرات کاربران
0 نظر
نشانی ایمیل شما منتشر نخواهد شد.