API ضد گلوله جنگو برای یک پروژه TMS
مقدمه
در این آموزش، ما یک برنامه وب ساده با استفاده از Django و Django REST Framework (DRF) خواهیم ساخت. پروژه ما مجموعهای از کتابها را مدیریت میکند و به کاربران اجازه میدهد تا عملیات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) را از طریق REST API انجام دهند.
پیش نیازها
- پایتون نصب شده است (نسخه 3.8 یا بالاتر توصیه می شود).
- درک اولیه پایتون و جنگو.
- pip (نصب کننده بسته پایتون).
- دانش راه اندازی محیط مجازی (به عنوان مثال، venv).
مرحله 1: تنظیم محیط
پیکربندی VM توصیه شده برای هاست شما:
- حافظه (RAM): 8 گیگابایت را به VM اختصاص دهید تا از عملکرد روان اطمینان حاصل کنید و در عین حال منابع کافی برای میزبان باقی بماند.
- پردازنده ها: 4 هسته (8 رشته) را به VM اختصاص دهید.
- فضای ذخیره سازی: 100 گیگابایت را طبق برنامه ریزی برای هارد دیسک ماشین مجازی اختصاص دهید.
- شبکه: اگر VM برای دسترسی به اینترنت از طریق هاست به یک IP منحصر به فرد در شبکه محلی یا NAT نیاز دارد، از Bridged Networking استفاده کنید.
راه اندازی VM
- دانلود تصویر ابری اوبونتو: مطمئن شوید که آن را دانلود کرده اید ubuntu-22.04-server-cloudimg-amd64.ova فایل از یک منبع قابل اعتماد (به عنوان مثال، سایت رسمی اوبونتو).
- VMware را باز کنید: راه اندازی کنید ایستگاه کاری VMware، VMware Fusion یا VMware ESXi بسته به تنظیمات شما.
- فایل OVA را وارد کنید:
- روی File > Open or Import an OVA کلیک کنید.
- فایل ubuntu-22.04-server-cloudimg-amd64.ova را انتخاب کنید.
- برای وارد کردن تصویر، دستورات را دنبال کنید.
- نام ماشین مجازی: یک نام توصیفی ارائه دهید، به عنوان مثال، TMS_VM.
- VM را پیکربندی کنید (تنظیم حافظه، تنظیم پردازنده ها، پیکربندی هارد دیسک، پیکربندی شبکه)
سرور اوبونتو 22.04 را راه اندازی و پیکربندی کنید
- VM را راه اندازی کنید
-
ورود و به روز رسانی سیستم:
ubuntu@ubuntuguest:~$ sudo apt update && sudo apt upgrade -y
-
ابزارهای ضروری را نصب کنید:
ubuntu@ubuntuguest:~$ sudo apt install git python3 python3.10-venv python3-pip python3-venv git build-essential -y
-
تنظیم یک کاربر:
ubuntu@ubuntuguest:~$ sudo groupadd bulletproof ubuntu@ubuntuguest:~$ sudo adduser django ubuntu@ubuntuguest:~$ sudo usermod -aG bulletproof django
-
یک دایرکتوری برای پروژه خود ایجاد کنید
ubuntu@ubuntuguest:~$ mkdir /home/django/projects
-
تغییر مالکیت گروه به ضد گلوله:
ubuntu@ubuntuguest:~$ sudo chown :bulletproof /home/django/projects
-
مجوزها را طوری تنظیم کنید که فقط اعضای گروه بتوانند در دایرکتوری بنویسند:
ubuntu@ubuntuguest:~$ sudo chmod 775 /home/django/projects
-
دایرکتوری و مجوزهای پیش فرض کاربر جدید را تنظیم کنید:
ubuntu@ubuntuguest:~$ sudo usermod -d /home/django/projects django ubuntu@ubuntuguest:~$ sudo chown django:bulletproof /home/django/projects ubuntu@ubuntuguest:~$ su - django django@ubuntuguest:~$
راه اندازی Vscode
برای تنظیم VS Code برای پروژه جنگو خود از طریق Remote-SSH، افزونه های Python و Pylance را برای پشتیبانی Python نصب کنید. Flake8 را برای linting و Black را برای قالب بندی کد اضافه کنید. افزونه جنگو را برای ویژگی های خاص پروژه نصب کنید. اطمینان حاصل کنید که Flake8 و Black نیز از طریق پیپ روی ماشین مجازی از راه دور نصب شده باشند. مفسر پایتون را برای استفاده از محیط مجازی پیکربندی کنید و از طریق تنظیمات VS Code برای یک تجربه توسعه یکپارچه، لینتینگ و قالببندی را فعال کنید.
-
Create pyproject.toml: این یک فایل اختیاری برای مدیریت ابرداده پروژه و پیکربندی ساخت است. آن را به صورت دستی ایجاد کنید یا از یک الگو استفاده کنید. مثال:
[tool.black] line-length = 100
-
نصب مشکی:
(.venv) django@ubuntuguest:~/tms$ pip install black
-
ایجاد کنید
.flake8
فایل: این فایل برای پیکربندی تنظیمات Flake8 (لینتر برای سبک کد پایتون) استفاده می شود. به عنوان مثال محتوای .flake8:[flake8] max-line-length = 100 extend-ignore = E203, W503
-
Flake8 را نصب کنید:
(.venv) django@ubuntuguest:~/tms$ pip install flake8
راه اندازی پایتون
-
ایجاد یک محیط مجازی:
django@ubuntuguest:~$ mkdir tms && cd tms django@ubuntuguest:~$ python3 -m venv .venv django@ubuntuguest:~$ source .venv/bin/activate # On Windows: env\Scripts\activate
-
Django و DRF را نصب کنید:
(.venv) django@ubuntuguest:~/tms$ pip install django djangorestframework
-
ایجاد یک پروژه جنگو:
(.venv) django@ubuntuguest:~/tms$ django-admin startproject tms .
-
سرور توسعه را اجرا کنید:
(.venv) django@ubuntuguest:~/tms$ python manage.py runserver 0.0.0.0:8000
اگر با خطا مواجه شدید: django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: 'ip_address:8000'. You may need to add 'ip_address' to ALLOWED_HOSTS.
. آدرس IP سرور خود را (به عنوان مثال، 10.0.0.10) به ALLOWED_HOSTS در settings.py اضافه کنید: ALLOWED_HOSTS = ['10.0.0.10', 'localhost', '127.0.0.1']
برای دیدن صفحه اصلی جنگو پیشفرض از http://ip_address:8000 دیدن کنید.
راه اندازی مخزن Git
-
ایجاد یک
README.md
file: این فایل اطلاعات اولیه درباره پروژه شما مانند هدف، دستورالعمل های نصب و استفاده را ارائه می دهد.(.venv) django@ubuntuguest:~/tms$ touch README.md
توضیحات پروژه خود را به فایل اضافه کنید. مثال:
# Training Management System (TMS) This is a Django-based project for managing training courses, students, and instructors.
-
ایجاد کنید
requirements.txt
: این فایل تمام وابستگی های پروژه شما را فهرست می کند. برای تولید request.txt بر اساس محیط مجازی:(.venv) django@ubuntuguest:~/tms$ pip freeze > requirements.txt
-
ایجاد یک
LICENSE
فایل -
ایجاد کنید
.gitignore
فایل -
(.venv) django@ubuntuguest:~/tms$ ls ~/.ssh
-
(.venv) django@ubuntuguest:~/tms$ ssh-keygen -t ed25519 -C "your_email@example.com"
-
(.venv) django@ubuntuguest:~/tms$ cat ~/.ssh/id_ed25519.pub
و خروجی را کپی کنید. -
کلید SSH را به GitHub اضافه کنید. به تنظیمات > کلیدهای SSH و GPG > کلید SSH جدید بروید. کلید را بچسبانید و به آن عنوان بدهید.
-
تغییر دایرکتوری:
(.venv) django@ubuntuguest:~/tms$ cd /path/to/your/project
-
مخزن Git را راه اندازی کنید:
(.venv) django@ubuntuguest:~/tms$ git init
-
اضافه کردن مخزن از راه دور:
(.venv) django@ubuntuguest:~/tms$ git remote add origin git@github.com:username/repository.git
-
فایل های مرحله:
(.venv) django@ubuntuguest:~/tms$ git add .
-
ایجاد تعهد اولیه:
(.venv) django@ubuntuguest:~/tms$ git commit -m "Initial commit"
-
فشار به مخزن از راه دور:
(.venv) django@ubuntuguest:~/tms$ git push -u origin main
عکس فوری از VM
پس از پیکربندی ماشین مجازی و تکمیل تنظیمات اولیه، برای حفظ این حالت، یک عکس فوری بگیرید:
- به VMware > Snapshot > Take Snapshot بروید.
- نام آن را چیزی مانند InitialSetup بگذارید