با سلام، با بحث جذاب 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 دسترسی خواهید داشت:
ارسال پاسخ