نصب و راه اندازی pgadmin روی اوبونتو سرور

pgadmin

با سلام، با بحث جذاب pgadmin در خدمتتون هستم 🙂

فرض بر این هست که سرور اوبونتویی داریم و میخواهیم pgadmin را روی آن نصب کنیم و بتونیم بهش دسترسی داشته باشیم (تعریف virtual host برای pgadmin)

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

قدم اول : نصب pgadmin و پیش نیاز های آن

خب مثل همیشه قدم اول دستور زیر هست 🙂

sudo apt update

حال نوبت به نصب پیشنیاز ها رسیده :

sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

حال نیاز به ساختن سه تا دایرکتوری برای ذخیره  sessions data، storage data و logs داریم :

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4

بعدشم باید ownership شان رو تغییر بدیم، این یه قسمت ضروریه، چرا که الان مالک اونها root شما است ولی ما قصد داریم pgadmin را از طریق virtual environment نصب کنیم (در مورد virtualenv داخل بلاگ قبلا مفصل حرفیدم و اینجا میتونید مطالعش کنید) و نصبمان تقریبا وابسته به این سه تا دایرکتوری خواهد شد. پس ما مالک این سه دایرکتوری را به www-data تغییر می دهیم:

sudo chown -R sammy:sammy /var/lib/pgadmin4
sudo chown -R sammy:sammy /var/log/pgadmin4

حال وارد دایرکتوری environment های خودتان شوید و محیط مجازی خودتان را فعال (activate) کنید.

cd w/
source .myenv/bin/activate

حالا نوبت به دانلود سورس کد pgadmin رسید، برای یافتن آخرین ورژن pgadmin4 به سر به pgAdmin 4 (Python Wheel) Download page بزنید، روی آخرین ورژن کلیک کنید، الان که من دارم این آموزش را می نویسم، آخرین ورژن عبارت از pgAdmin 4 v4.18 هست. سه تا فایل برای دانلود وجود داره، ما فایل با پسوند .whl رو نیاز داریم.

لینک دانلودش را کپی کنید، برای نسخه  pgadmin4-4.18-py2.py3-none-any.whl لینک رو مشاهده می کنید (حواستون باشه لینک باید با .whl خاتمه یابد ). حال از دستور wget برای دانلودش استفاده می کنیم.

پس الان داخل virtualenv خودمان هستیم. دستور زیر را برای دانلود می زنیم:

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.18/pip/pgadmin4-4.18-py2.py3-none-any.whl

حال پکیج wheel را نصب کنید (برای نصب فایلهای با فرمت .whl ):

python -m pip install wheel

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

python -m pip install pgadmin4-4.18-py2.py3-none-any.whl

به ورژن pgadmin توجه داشته باشید.

مرحله دوم، کانفیگ کردن pgAdmin 4 :

خب تا اینحای کار pgAdmin 4 نصب شده، فایل کانفیگ اصلی pgAdmin اول از هر فایل کانفیگ دیگه ای خوانده میشود. config.py .

ما فایل config.py را تغییر نمی دهیم، بلکه تغییرات کانفیگی را در فایلی جدید با نام config_local.py که بعد از اصلی خوانده می شود.

پس بیاید این فایل را بسازیم (توجه داشته باشید داخل محیط مجازی ساخته می شود ):

nano .myenv/lib/python3.7/site-packages/pgadmin4/config_local.py

به نسخه python نیز توجه داشته باشید.

محتوای فایل نیز به صورت زیر قرار دهید:

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

۴ خط اول که مشخص هستند (تو قدم اول ساخنه بودیمشون)، فقط خط آخر که SERVER_MODE رو True قرار دادیم که pgAdmin بفهمه روی سرور اجرا می شود و نه دسکتاپ 🙂

حال setup.py مربوط به pgAdmin را اجرا می کنیم :

python .myenv/lib/python3.7/site-packages/pgadmin4/setup.py

بعد از اجرای دستور فوق از شما مشخصات ایمیل و رمز عبور میخواهد که ایمیل و رمز عبور مورد نظر خودتان را وارد کنید.

دیگه وقتش رسید از virtualenv خارج بشیم، با دستور زیر خارج شوید:

deactivate 

الان نوبت به تغییر مالکیت دو دایرکتوری زیر رسید:

sudo chown -R www-data:www-data /var/lib/pgadmin4/
sudo chown -R www-data:www-data /var/log/pgadmin4/

تا اینجای کار، pgAdmin به طور کامل کانفیگ شده است.

قدم سوم ، کانفیگ کردن آپاچی (apache):

اول از همه مطمین شوید در دایرکتوری root قرار دارید:

cd /

حال با توجه به آموزش تنظیم Apache Virtual Hosts (هاست مجازی آپاچی) روی لینوکس اوبونتو ، ما برای pgAdmin نیز دامین جداگانه ای برای دسترسی بهش می سازیم.

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

فایل جدیدی در دایرکتوری /sites-available/ با نام /sites-available/ می سازیم

sudo nano /etc/apache2/sites-available/pgadmin4.conf

محتوایش به شکل زیر باشد:

<VirtualHost *:80>
    ServerName pgadmin4

    WSGIDaemonProcess pgadmin4 processes=1 threads=25 python-home=/home/sadegh_khan/w/.asemanenv
    WSGIScriptAlias / /home/sadegh_khan/w/.asemanenv/lib/python3.7/site-packages/pgadmin4/pgAdmin4.wsgi

    <Directory "/home/sadegh_khan/w/.asemanenv/lib/python3.7/site-packages/pgadmin4/">
        WSGIProcessGroup pgadmin4
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

در خط ServerName pgadmin4 به جای pgadmin4 میتوانید ip server یا هر نامی که قصد دارید با آن به pgadmin دسترسی داشته باشید را وارد کنید.

حال با دستور زیر virtual host file. کی ساختید را enable کنید :

sudo a2ensite pgadmin4.conf

حال برای تست دستور زیر را بزنید :

apachectl configtest

اگر به چنین اروری بر خوردید :

Name duplicates previous WSGI daemon definition

باید نام originalsite را تغییر دهید، احتمالا قبلا pgAdminداشتید و الان به conflict خوردیم، کافیست موارد *pgadmin4* را تغییر دهید به یک اسمی دیگر:

<VirtualHost *:80>
    ServerName pgadmin4

    WSGIDaemonProcess *pgadmin4* processes=1 threads=25 python-home=/home/sadegh_khan/w/.asemanenv
    WSGIScriptAlias / /home/sadegh_khan/w/.asemanenv/lib/python3.7/site-packages/pgadmin4/pgAdmin4.wsgi

    <Directory "/home/sadegh_khan/w/.asemanenv/lib/python3.7/site-packages/pgadmin4/">
        *WSGIProcessGroup *pgadmin4
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

حال کافیست apache2 را ریست کنید :

sudo systemctl restart apache2

با زدن نام سروری که انتخاب کرده بودید، به pgAdmin دسترسی خواهید داشت: