آموزش نصب جنگو روی Ubuntu 22.04 (قدم به قدم و اصولی)
جنگو یکی از محبوبترین فریمورکهای وب در دنیای پایتون است که برای ساخت وبسایتها و APIهای قدرتمند استفاده میشود. در این آموزش، یاد میگیریم چگونه جنگو را روی Ubuntu 22.04 بهصورت اصولی، امن و استاندارد نصب کنیم.
پیش نیازهای نصب جنگو روی اوبونتو
قبل از شروع، مطمئن شوید موارد زیر را دارید:
- دسترسی SSH (کاربر sudo)
- آشنایی پایه با خط فرمان لینوکس
اگر قصد دارید پروژه جنگو را برای استفاده واقعی (Production) راهاندازی کنید، پیشنهاد میشود از یک سرور دیتاسنتری پایدار استفاده کنید.
مرحله 1 : بروزرسانی سیستم
ابتدا پکیجهای سیستم را بروزرسانی میکنیم:
sudo apt update
sudo apt upgrade -y

اگر به ارور 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 لازم رو اجرا میکنه
-
جدولها رو واقعاً داخل دیتابیس میسازه

مرحله 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 متصل کرده، دامنه ست کنید و پروژه را برای استفاده واقعی آماده کنید.
اگر قصد دارید پروژههای جنگو را روی سرورهای پایدار و پرسرعت اجرا کنید، استفاده از سرورهای دیتاسنتری اروپایی انتخاب هوشمندانهای خواهد بود.