در پستهای قبلی، با نحوهی اجرای برنامههای مختلف تو سکو آشنا شدیم.
توی این پست نگاهی کوتاه به Django و ویژگیهای مهم این فریمورک خواهیم داشت. بعد از اون به شما میگیم چطوری میتونین برنامههای Django رو با سکو اجرا کنین.
پس با ما تا انتهای این پست همراه باشین.
مفهوم فریمورک
فریمورک به مجموعهای از ماژولها گفته میشه که توسعهی برنامه رو راحتتر میکنن.
این ماژولها گروهبندی شدن و توسعهدهندهها میتونن در هنگام برنامهنویسی، اونها رو فراخوانی کنن؛ دیگه نیازی نیست یک کد رو از اول بنویسن و برنامه رو با منابع موجود ایجاد میکنن.
مثلا اگه شما بخواین وبسایت سادهای رو طراحی کنین، باید به ماژولهای مختلفی دسترسی داشته باشین، ماژولهایی مثل احراز هویت کاربران، پنل مدیریت وبسایت، فرمهای تماس، فرم نظرات، بارگذاری فایل و موارد دیگه.
بدون استفاده از فریمورکها باید از اول همهی این ماژولها رو خودتون کدنویسی کنین، اما با استفاده از یک فریمورک، این اجزای آماده به راحتی در اختیارتون قرار میگیره، فقط کافیه اونها رو متناسب با نیاز وبسایتتون به درستی پیکربندی کنین.
معرفی فریمورک Django
Django هم فریمورک سطح بالا برای زبان برنامهنویسی Python هست که کدنویسی سریع رو با یک طراحی مناسب به کاربرانش ارائه میکنه.
Django مجموعه بزرگی از ماژولها رو ارائه میده که میتونین در پروژههاتون ازش استفاده کنین. اگر قراره با Python کار کنین، به خصوص برای برنامههای تحت وب یا طراحی وبسایت، استفاده از فریم ورک Django مطمئناً بهتون کمک زیادی میکنه.
Django برای هر تابع و component، سیستم نامگذاری مخصوصی داره (مثلا، به http response ها
"view" گفته میشه). همچنین دارای پنل مدیریتی هست که کار با اون نسبت به Lavarel یا Yii راحتتره؛ و امکانات مهم دیگهای هم داره مثل:
- syntax ساده
- web server اختصاصی
- معماری MVC (Model-View-Controller) core
- ORM (نگاشت رابطه به شی)
- کتابخانههای HTTP
- پشتیبانی Middleware
- و فریمورک تست واحد پایتون
ویژگیهای خاص Django
Django به شما کمک میکنه نرمافزاری بنویسین:
- کامل
Django از فلسفهی "batteries included" پیروی میکنه: یعنی هر چیزی که توسعهدهندهها بهش نیاز داشته باشن، در یک پکیج کامل وجود داره و میشه بلافاصله ازشون استفاده کرد.
- همهکاره
تقریبا برای ساخت هر وبسایتی میشه از Django استفاده کرد- از سایتهای مدیریت محتوا مثل wiki گرفته تا شبکههای اجتماعی و وبسایتهای خبری.
میتونه با هر فریمورک سمت client کار کنه و از فرمتهای مختلفی مثل HTML ،JSON ،XML و ... پشتیبانی میکنه. سایتی که الان بهش فک میکنین به راحتی با Django ساخته میشه!
- امن
این فریمورک امنیت رو کاملا برقرار میکنه و به توسعهدهندهها کمک میکنه از بسیاری از اشتباههای امنیتی رایج جلوگیری کنن. مثلا در شرایط آسیپپذیر، اطلاعات session رو در کوکیها ذخیره نمیکنه و با مکانیزم hashing، روش مطمئنی برای مدیریت حسابهای کاربری و رمزعبورها ارائه میده.
- مقیاسپذیر
هر قسمت از این معماری، مستقل از بخشهای دیگه کار میکنه و در صورت نیاز، هر بخش به راحتی تغییر میکنه. جدایی واضح بین بخشهای مختلف، به این معناست که هر کدوم از این بخشها انعطافپذیرن و با اضافه شدن سختافزار جدید مثل سرورهای caching، سرورهای دیتابیس یا سرورهای برنامه، میتونن به راحتی مقیاسپذیر بشن.
- قابل حمل
Django در Python نوشته شده که روی سیستمعاملهای زیادی اجرا میشه. یعنی به
server platform خاصی وابسته نیست و میتونین برنامههاتون رو روی هر پلتفرمی مثل لینوکس، ویندوز و Mac OS X اجرا کنین.
حالا با هم بررسی میکنیم که چطوری میشه یک برنامهی Django رو با سکو اجرا کرد.
مراحل اجرای Django در سکو
۱. نصب Docker و Docker compose
در مرحلهی اول باید docker و docker-compose، روی سیستمتون نصب بشه.
(برای نصب docker از این صفحه و برای نصب docker-compose، از این صفحه استفاده کنین.)
۲.ایجاد و نوشتن Dockerfile
در پوشهی root پروژهتون، فایلی به نام dockerfile بدون هیچ پسوندی ایجاد کنین.
حالا کدهای زیر رو داخل dockerfile قرار بدین:
ّFROM phyton: 3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /project
WORKDIR / project
COPY . /project
RUN pip install -r requirements.txt
حالا ببینیم هر کدوم از دستورات بالا چه مفهومی دارن:
- “FROM python:3.6” :
با توجه به اینکه فریمورک Django به زبان پایتون است؛ پس طبیعتا به ایمیج اون نیاز دارین. میتونین ورژن ایمیج رو با توجه به نیازتون عوض کنین (برای اطلاعات بیشتر به این صفحه مراجعه کنین).
- “ENV PYTHONUNBUFFERED 1” :
در این خط مقدار متغیر PYTHONUNBUFFERED رو، برابر ۱ قرار میدیم.
- “RUN mkdir /project” :
در این خط، پوشهی project رو در container میسازیم.
- “WORKDIR / project” :
در این خط پوشهی project رو به عنوان working directory قرار میدیم.
- “COPY . / project /” :
در این خط فایلهای پروژه رو در پوشهی project کانتینر، کپی میکنیم.
- “RUN pip install -r requirements.txt” :
اگه پروژهی شما نیاز به کتابخانههای خاصی داره، میتونین نام اونها رو در فایلی به نام requirements.txt قرار بدین تا نصب بشن.
برای اطلاعات بیشتر در مورد داکرفایل، میتونین به این صفحه یه سری بزنین.
۳.ایجاد و نوشتن Docker-Compose
خب حالا فایلی به اسم “docker-compose.yml”، در همون پوشهی root پروژهتون بسازین و کدهای زیر رو در اون قرار بدین:
version: '3'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/project
ports:
- "8080:8000"
حالا ببینیم هر کدوم از دستورات docker compose در مثال بالا چه مفهومی دارن:
- “version: 3”:
این خط ورژن docker-compose رو مشخص میکنه.
- “ services” :
در قسمت services، میتونین سرویسهایی که برای اجرای برنامه نیاز دارین رو قرار بدین. در اینجا فقط از سرویسی به نام web استفاده کردیم (همون وب اپ Django). اگر به سرویس دیگهای مثل دیتابیس نیاز دارین، میتونین این سرویس رو هم اضافه کنین.
- “ . :build” :
در این خط باید آدرس Dockerfile رو بذارین. با توجه به اینکه در پوشهی root پروژه قرار داره، علامت ‘.’ رو قرار میدیم.
- “command: python manage.py runserver 0.0.0.0:8000” :
این دستور، برنامه رو با پورت 8000 در localhost کانتینر، run میکنه.
- در قسمت volumes مقدار "project/:." قرار داده شده:
اینکار باعث میشه هر تغییری که توی پروژه میدین، در فایلهای داخل container هم اعمال بشه و پروژه به صورت Real-Time آپدیت بشه.
- “ ports” :
در این خط، پورت 8000 از داکر به 8080 لوکالهاست، وصل میشه.
برای اطلاعات بیشتر در مورد نحوهی نوشتن فایل docker compose، به این صفحه مراجعه کنین.
۴. قرار دادن کدهای پروژه در Git
توی این مرحله باید سورسکد پروژهتون رو به همراه dockerfile و همچنین فایل docker-compose.yml، در Git قرار بدین.
۵. ایجاد برنامه در سکو
بعد از انجام مراحل قبلی، برای ساخت برنامه در سکو، وارد پنل کاربریتون بشین و از منو، گزینهی 'ایجاد پایپلاین' رو انتخاب کنین.
حالا DeployType برنامه رو بر روی Source Code قرار بدین و اطلاعات خواسته شده رو وارد کنین:
- Docker file: آدرس فایل docker- compose به همراه نام آن.
در اینجا با توجه به اینکه در پوشهی اصلی پروژه قرار داره، کافیه فقط " docker-compose.yml" رو در اون بنویسیم.
- Url: آدرس Git.
- branch: نام شاخهای که تمایل دارین برنامه از اون ساخته بشه.
- Username: در صورتی که repository از نوع private باشه، لازمه نام کاربری Git خودتون رو اینجا وارد کنین.
- Access Token: در صورتی که repository از نوع private باشه، لازمه این فیلد پر بشه.
با توجه به نیازی که دارین، بقیهی فیلدهای برنامهتون رو هم وارد کنین و بعد روی "بارگذاری" کلیک کنین.
منابع:
Django introduction
Meet Django
Why We Use Django Framework