Ubuntu 20.04, دسته‌بندی نشده

نحوه استفاده از PostgreSQL با برنامه جنگو در اوبونتو 20.04

معرفی

جنگو یک چارچوب انعطاف پذیر برای ایجاد سریع برنامه های پایتون است. به طور پیش فرض، برنامه های جنگو برای ذخیره داده ها در یک فایل پایگاه داده سبک وزن SQLite پیکربندی شده اند. در حالی که این کار در برخی از بارها به خوبی کار می کند، یک سیستم مدیریت پایگاه داده سنتی تر می تواند عملکرد در تولید را بهبود بخشد.

در این راهنما، PostgreSQL (که اغلب به آن Postgres گفته می شود) را برای استفاده در برنامه های جنگو نصب و پیکربندی می کنید. شما نرم افزار لازم را نصب می کنید، اعتبار پایگاه داده را برای برنامه ما ایجاد می کنید و سپس یک پروژه جنگو جدید را برای استفاده از این باطن شروع و پیکربندی می کنید.

پیش نیازها

  • شما به یک نمونه سرور اوبونتو 20.04 تمیز با یک کاربر غیر ریشه که با امتیازات sudo پیکربندی شده نیاز دارید. با دنبال کردن راهنمای اولیه راه اندازی سرور ما، نحوه تنظیم این را بیاموزید.

وقتی برای ادامه آماده شدید، به عنوان کاربر sudo خود وارد شوید.

مرحله 1 – نصب کامپوننت ها از مخازن اوبونتو

ابتدا اجزای ضروری را نصب خواهید کرد. این شامل pip، مدیر بسته پایتون برای نصب و مدیریت اجزای پایتون، و همچنین نرم‌افزار پایگاه داده با کتابخانه‌های مرتبط آن است.

شما از پایتون 3 استفاده خواهید کرد که با اوبونتو 20.04 عرضه می شود. نصب را با تایپ کردن شروع کنید:

sudo apt update
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

با پایان نصب، می توانید به پایگاه داده بروید.

مرحله 2 – ایجاد یک پایگاه داده و کاربر پایگاه داده

به طور پیش فرض، Postgres از یک طرح احراز هویت به نام “تأیید هویت همتا” برای اتصالات محلی استفاده می کند. اساساً، این بدان معنی است که اگر نام کاربری سیستم عامل کاربر با نام کاربری معتبر Postgres مطابقت داشته باشد، آن کاربر می تواند بدون احراز هویت بیشتر وارد شود.

در طول نصب Postgres، یک کاربر سیستم عامل به نام postgres ایجاد شد تا با کاربر مدیریت PostgreSQL مطابقت داشته باشد. برای انجام کارهای اداری باید از این کاربر استفاده کنید. با گزینه -u می توانید از sudo و pass در نام کاربری استفاده کنید.

با تایپ کردن، وارد یک جلسه تعاملی Postgres شوید:

sudo -u postgres psql

ابتدا یک پایگاه داده برای پروژه جنگو ایجاد خواهید کرد. هر پروژه به دلایل امنیتی باید پایگاه داده جدا شده خود را داشته باشد. ما در این راهنما پایگاه داده را myproject می نامیم، اما همیشه بهتر است چیزی توصیفی تر را انتخاب کنید:

CREATE DATABASE myproject;

در مرحله بعد، یک کاربر پایگاه داده ایجاد می کنید که از آن برای اتصال و تعامل با پایگاه داده استفاده می کنید. رمز عبور را روی چیزی قوی و امن تنظیم کنید:

CREATE USER myprojectuser WITH PASSWORD ‘password’;

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

ALTER ROLE myprojectuser SET client_encoding TO ‘utf8’;
ALTER ROLE myprojectuser SET default_transaction_isolation TO ‘read committed’;
ALTER ROLE myprojectuser SET timezone TO ‘UTC’;

شما کدگذاری پیش‌فرض را روی UTF-8 تنظیم می‌کنید که جنگو انتظار دارد. شما همچنین طرح پیش‌فرض جداسازی تراکنش را روی «خواندن تعهد» تنظیم می‌کنید که خواندن تراکنش‌های غیرمتعهد را مسدود می‌کند. در نهایت، شما در حال تنظیم منطقه زمانی هستید. به‌طور پیش‌فرض، پروژه‌های جنگو شما برای استفاده از UTC تنظیم می‌شوند. اینها همه توصیه هایی از خود پروژه جنگو هستند.

اکنون، تنها کاری که باید انجام دهید این است که حقوق دسترسی کاربر پایگاه داده خود را به پایگاه داده ای که ایجاد کرده اید بدهید:

GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

برای بازگشت به جلسه پوسته کاربر postgres از اعلان SQL خارج شوید:

\q

جنگو را در یک محیط مجازی نصب کنید

اکنون که پایگاه داده شما راه اندازی شده است، می توانید جنگو را نصب کنید. برای انعطاف‌پذیری بهتر، جنگو و تمام وابستگی‌های آن را در یک محیط مجازی پایتون نصب خواهید کرد. بسته virtualenv به شما این امکان را می دهد که این محیط ها را به راحتی ایجاد کنید.

برای نصب virtualenv تایپ کنید:

sudo pip3 install virtualenv

برای نگهداری پروژه جنگو خود، دایرکتوری بسازید و به آن منتقل کنید:

mkdir ~/myproject

cd ~/myproject

شما می توانید با تایپ کردن یک محیط مجازی برای ذخیره نیازمندی های Python پروژه جنگو خود ایجاد کنید:

python3 -m virtualenv myprojectenv

این یک کپی محلی از پایتون و یک دستور pip محلی را در فهرستی به نام myprojectenv در فهرست پروژه شما نصب می کند.

قبل از نصب اپلیکیشن ها در محیط مجازی، باید آن را فعال کنید. می توانید این کار را با تایپ کردن انجام دهید:

source myprojectenv/bin/activate

اعلان شما تغییر می کند تا نشان دهد که اکنون در محیط مجازی کار می کنید. چیزی شبیه این (myprojectenv)user@host:~/myproject$ خواهد بود.

هنگامی که محیط مجازی شما فعال شد، می توانید نسخه رسمی جنگو را با pip نصب کنید. شما همچنین بسته psycopg2 را نصب خواهید کرد که به ما امکان می دهد از پایگاه داده Postgres که پیکربندی کرده اید استفاده کنیم:

pip install Django psycopg2

اکنون می توانید یک پروژه جنگو را در پوشه myproject شروع کنید. این یک دایرکتوری فرزند به همین نام ایجاد می کند تا خود کد را نگه دارد و یک اسکریپت مدیریتی در دایرکتوری فعلی ایجاد می کند. مطمئن شوید که نقطه را در انتهای دستور اضافه کنید تا به درستی تنظیم شود:

django-admin startproject myproject .

تنظیمات پایگاه داده جنگو را پیکربندی کنید

اکنون که یک پروژه دارید، باید آن را برای استفاده از پایگاه داده ای که ایجاد کرده اید پیکربندی کنید.

فایل اصلی تنظیمات پروژه جنگو را که در دایرکتوری پروژه فرزند قرار دارد باز کنید:

nano ~/myproject/myproject/settings.py

در پایین فایل، یک بخش DATABASES را مشاهده خواهید کرد که به شکل زیر است:

~/myproject/myproject/settings.py
. . .

DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

. . .

این در حال حاضر برای استفاده از SQLite به عنوان پایگاه داده پیکربندی شده است. شما باید این را تغییر دهید تا پایگاه داده PostgreSQL شما به جای آن استفاده شود.

ابتدا موتور را طوری تغییر دهید که به جای آداپتور sqlite3 از آداپتور postgresql استفاده کند. برای NAME، از نام پایگاه داده خود (myproject در این مثال) استفاده کنید. همچنین باید اعتبار ورود به سیستم را اضافه کنید. برای اتصال به نام کاربری، رمز عبور و میزبان نیاز دارید. گزینه پورت را اضافه کرده و آن را خالی می گذارید تا پیش فرض انتخاب شود:

~/myproject/myproject/settings.py
. . .

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'myproject',
        'USER': 'myprojectuser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

. . .

وقتی اینجا هستید، باید دستورالعمل ALLOWED_HOSTS را نیز تنظیم کنید. این یک لیست سفید از آدرس‌ها یا نام‌های دامنه مجاز به اتصال به نمونه جنگو را تعیین می‌کند. هر درخواست دریافتی با هدر Host که در این لیست نیست یک استثنا ایجاد می کند. جنگو نیاز دارد که این را تنظیم کنید تا از یک کلاس آسیب‌پذیری امنیتی جلوگیری کنید.

در قطعه زیر، چند نمونه نظر داده شده برای نشان دادن وجود دارد:

~/myproject/myproject/settings.py
. . .
# The simplest case: just add the domain name(s) and IP addresses of your Django server
# ALLOWED_HOSTS = [ 'example.com', '203.0.113.5']
# To respond to 'example.com' and any subdomains, start the domain with a dot
# ALLOWED_HOSTS = ['.example.com', '203.0.113.5']
ALLOWED_HOSTS = ['your_server_domain_or_IP']

در پرانتز، آدرس‌های IP یا نام‌های دامنه مرتبط با سرور جنگو را فهرست کنید. هر مورد باید در نقل قول با ورودی های جدا شده با کاما ذکر شود. اگر می‌خواهید برای کل دامنه و هر زیر دامنه‌ای درخواست کنید، یک نقطه برای شروع ورودی قرار دهید.

وقتی کارتان تمام شد، فایل را ذخیره و ببندید.

پایگاه داده را مهاجرت کنید و پروژه خود را آزمایش کنید.

اکنون که تنظیمات جنگو پیکربندی شده است، می توانید ساختارهای داده خود را به پایگاه داده خود منتقل کرده و سرور را آزمایش کنید.

می توانید با ایجاد و اعمال مهاجرت به پایگاه داده خود شروع کنید. از آنجایی که هنوز هیچ داده واقعی ندارید، این به سادگی ساختار پایگاه داده اولیه را تنظیم می کند:

cd ~/myproject

python manage.py makemigrations

python manage.py migrate

پس از ایجاد ساختار پایگاه داده، می توانید با تایپ کردن یک حساب مدیریتی ایجاد کنید

python manage.py createsuperuser

از شما خواسته می شود یک نام کاربری انتخاب کنید، یک آدرس ایمیل ارائه دهید، و یک رمز عبور برای حساب کاربری انتخاب و تایید کنید.

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

با تایپ کردن:

sudo ufw allow 8000

هنگامی که پورت را باز کردید، می توانید با راه اندازی سرور توسعه جنگو تست کنید که پایگاه داده شما به درستی کار می کند:

python manage.py runserver 0.0.0.0:8000

در مرورگر وب خود، از نام دامنه یا آدرس IP سرور خود و به دنبال آن :8000 دیدن کنید تا به صفحه ریشه پیش فرض جنگو برسید:

http://server_domain_or_IP:8000

شما باید صفحه فهرست پیش فرض را ببینید:

/admin را به انتهای URL اضافه کنید و باید بتوانید به صفحه ورود به رابط مدیریت دسترسی داشته باشید:

نام کاربری و رمز عبوری که به تازگی با دستور createsuperuser ایجاد کرده اید را وارد کنید. سپس به رابط مدیریت هدایت خواهید شد:

پس از اتمام بررسی، می توانید با زدن CTRL-C در پنجره ترمینال، سرور توسعه را متوقف کنید.

با دسترسی به رابط مدیریت، تأیید کرده‌اید که پایگاه داده شما اطلاعات حساب کاربری شما را ذخیره کرده است و می‌توان به آن دسترسی مناسب داشت.

نتیجه

در این راهنما، نحوه نصب و پیکربندی PostgreSQL را به عنوان پایگاه داده پشتیبان برای پروژه جنگو نشان داده اید. در حالی که SQLite می‌تواند به راحتی بار را در طول توسعه و استفاده از تولید سبک تحمل کند، اکثر پروژه‌ها از پیاده‌سازی یک سیستم مدیریت پایگاه داده کامل‌تر بهره می‌برند.


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/