آموزش پایتون

آموزش نصب دیتابیس postgre Sql در لینوکس و استفاده از آن بعنوان دیتابیس جنگو

۱- نصب دیتابیس postgre :

برای نصب postgre SQL در لینوکس اوبونتو، ابتدا باید لیست پکیج های لوکال اوبونتو را با استفاده از دستور زیر رفرش کنیم:

 sudo apt update

سپس با استفاده از دستور زیر،‌postgre را بر روی اوبونتو نصب می کنیم:

 sudo apt install postgresql postgresql-contrib

۲- اجرای postgres prompt (یعنی خط فرمان postgres)

با زدن دستور زیر، خط فرمان psql در حالتی که یوزر postgres انتخاب شده، فعال میشه:

 sudo -u postgres psql

اون پرچم u- معادل یوزر هستش و کلمه ای که بعدش نوشته میشه، نام یوزر دیتابیس هستش. یوزر postgres به صورت پیشفرض وجود داره و پسوردی هم براش ست نشده.

شما هر یوزری که در postgre Sql میسازید، بدون پسورد ساخته میشه و با دستوری که در ادامه این مطلب بهتون آموزش دادم میتونید براش پسورد بذارید که بتونید توی Connection String ازش استفاده کنید.

و با دستور q\ هم غیرفعال میشه و میاد بیرون:

\q

۳- ساخت یوزر جدید در postgres :

sudo -u postgres createuser --interactive

با زدن دستور فوق، نام role که در حقیقت همون نام یوزر دیتابیس هست رو از شما می پرسه. و می پرسه که آیا این یوزر سوپریوزر هست یا خیر. که شما پاسخ مناسب رو به این سوالها میدین. قیافه اش این شکلیه:

Enter name of role to add: asghar
Shall the new role be a superuser? (y/n) y 

تعیین password برای یوزر در postgre:

یوزرهای postgre به صورت پیشفرض پسورد ندارن و موقع ساختنشون از شما پسوردی طلب نمی کنه.

و حودتون برای اینکه بتونید از اون یوزر توی کانکشن استرینگ استفاده کنید،‌ باید براش پسورد بذارید.

برای این کار وارد خط فرمان postgre بشید و بعد با استفاده از دستور password UserName\ پسورد جدید برای کاربر خودتون بسازید. (بعد از زدن این دستور، از شما میخواد که پسورد رو وارد کنید)

دقت کنید که عبارت UserName در دستور بالا رو باید با نام کاربری مورد نظر خودتون جایگزین کنید. ولی دستور password کلمه کلیدی هست و باید به همون شکل واردش کنید. ض

۴- ساخت دیتابیس جدید در postgre:

sudo -u postgres createdb myDatabaseName

دقت کنید در حالی که داخل psql هستید نباید دستور فوق رو بزنید (کار نمی کنه). بلکه در حالتی که خط فرمان رو به صورت عادی باز کردید باید این دستور رو بزنید.

۵- تغییر نوع انجین دیتابیس در فایل settings.py پروژه جنگو:

در قسمت DATABASES در فایل settings.py در پروژه جنگو، به صورت پیشفرض sqlite بعنوان دیتابیس انجین معرفی شده.

ما اسم sqlite رو تغییر میدیم و میذاریم postgresql.


همچنین بجای اسم دیتابیس هم یک استرینگ میذاریم و اسم دیتابیسی که در مرحله قبل برای پروژه مون ساختیم رو در این قسمت وارد می کنیم. نتیجه کار به این شکل میشه :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'portfolio',
        'USER': 'postgress',
        'PASSWORD' : 'yourpassword',
        'HOST' : 'localhost',
        'PORT' : '5432',
    }
}

نکته: پورت پیشفرض برای postgresql برابر با ۵۴۳۲ هست. اما در صورتی که دو یا چند ورژن از این دیتابیس رو نصب کرده باشین، ممکنه پورت متفاوتی داشته باشن. (مثلا ۵۴۳۳).
اما برای فهمیدن اینکه پورت فعلی دیتابیس شما چی هست، در حالتی که وارد psql شدین، کوئری زیر رو اجرا کنین:

SELECT *
FROM pg_settings
WHERE name = 'port'; 

توی یه جدول، پورت و سایر اطلاعات مورد نیاز رو بهتون بر می گردونه.

۶- نصب ماژول psycopg :

اگر تمام مراحل بالا رو انجام بدین و بعد سرور پروژه رو ران کنید، این خطا رو بهتون میده:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'

این یک ماژول هستش که به جنگو امکان کار با دیتابیس postgre رو میده. و به صورت پیشفرض نصب نیست.

نکته جالب ماجرا اینجاست که نصب کردن خود psycopg2 هم ارور خواهد داد و نیازمند نصب libpq-dev هست!

خب پس اول با دستور زیر، (در حالی که داخل venv هستین) نصبش می کنین:

sudo apt-get install libpq-dev

بعدش زحمت می کشید و با استفاده از دستور زیر، psycopg2 رو نصبش می کنید:

pip install psycopg2

حل مشکل ارور module not found error no module named ‘_ctypes هنگام نصب psycopg2

برای حل این مشکل، ابتدا با دستورات زیر پکیج های مورد نیاز رو نصب کنید و بعد کلاً venv خودتون رو پاک کنید و از اول بسازید.

اگر با پاک کردن venv هم باز همان ارور تکرار شد، پایتون نصب شده روی سیستم عامل را یکبار مجدداً نصب کنید و بعد دوباره venv را هم پاک کنید و از اول بسازید.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

حالا اگر برگردین داخل روت پروژه و سرور رو ران کنید، نباید اون ارور رو ببینید! باید یه ارور جدید ببینید که نوشته : شما فلان تعداد مایگریشن انجام نشده دارید!

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

خب قضیه این مایگریشن ها رو به صورت کامل در درس ایجاد اپ جدید در جنگو توضیح دادم. همون کار رو (که اونجا با هدف sqlite انجام دادیم) اینجا هم برای postgres انجام میدیم:

python manage.py migrate 

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

چون اون سوپریوزر توی دیتابیس قبلی ساخته شده بوده .
پس باید مجدداً اینجا هم سوپریوزر بسازید.

python manage.py createsuperuser

نصب pgAdmin برای مدیریت دیتابیس PostgreSQL

ما میتونیم برای مدیریت دیتابیس PostgreSQL از خط فرمان postgres استفاده کنیم و هیچ مشکل فنی هم پیش نمیاد.

اما برای راحتی کار، خوبه که از محیط گرافیکی مدیریت دیتابیس postgresql به نام pgAdmin استفاده کنیم. این نرم افزار همون کاری رو انجام میده که phpMyAdmin برای دیتابیس mySQL و SSMS برای دیتابیس SQL Server انجام میده. یعنی مدیریت دیتابیس PostgreSQL.

نصب pgAdmin روی ویندوز و مک خیلی راحته. چون فایل نصبی بهتون میده و شما به صورت ویزارد میتونید اون رو نصب کنید .

اما برای نصب در لینوکس، شما باید از خط فرمان استفاده کنید.

با توجه به اینکه pgAdmin در ریپازیتوری اوبونتو موجود نیست، ما با استفاده از دو دستور زیر، ریپازیتوری pgAdmin رو به اوبونتوی خودمون می شناسونیم.

نصب public key ریپازیتوری:

curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add

ساخت فایل کانفیگ ریپازیتوری:

sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

نصب pgAdmin :

# Install for both desktop and web modes:
sudo apt install pgadmin4

# Install for desktop mode only:
sudo apt install pgadmin4-desktop

# Install for web mode only: 
sudo apt install pgadmin4-web 

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

بعد از این که وارد pgAdmin شدین،‌ یک صفحه خالی براتون میاد و لیست دیتابیس های شما رو نمیاره! چرا؟ چون هنوز به هیچ سروری متصل نشدین.

ایجاد سرور در pgAdmin

داخل داشبورد، با استفاده از گزینه add new server میتونید مشخصات سرور خودتون رو وارد کنید و بهش متصل بشید.

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

اولین چیزی که میخواد، نام سرور هست. که میتونید یک نام من درآوردی و دلخواه برای سرور خودتون انتخاب کنید.

pgAdmin server name

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

در صورتیکه روی لوکال از postgreSQL استفاده می کنید، آدرس هاست 127.0.0.1 هستش. پسورد هم همون پسوردیه که موقع نصب postgreSQL درنظر گرفتین.

pgAdmin add new server

بعد از این کار، باید در ستون سمت چپ pgAdmin سرور شما به زیرمجموعه servers اضافه شده و قابل رویت باشه.

منبع : دیجیتال اوشن

حامد عسکریان

برنامه نویس و عاشق تکنولوژی

دیدگاهتان را بنویسید

دکمه بازگشت به بالا
بستن
بستن