Задача: Развернуть Web
—сервис для администрирования баз Postgres
на Ubuntu 20.04 Server.
В качестве удобного Web
-приложения выступит пакет PhpPgAdmin
для интерактивной работы с СУБД PostgreSQL.
Через него можно управлять информацией базы данных, как в режиме встроенного меню, так и посредством SQL
. Это как если бы вы использовали базу MySQL
, но у нее Web
-сервис именуется, как phpmyadmin
. Ко всему этому, я покажу как настроить защиту к сервису если он выставлен в интернет.
ekzorchik@srv-us2004a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2004a:~$ sudo apt-get update && sudo apt-get -y upgrade
Шаг №1:
Устанавливаю PostgreSQL
сервер из стандартных репозитариев:
ekzorchik@srv-us2004a:~$ sudo apt-get install -y postgresql net-tools ekzorchik@srv-us2004a:~$ sudo systemctl restart postgresql && sudo systemctl status postgresql | head -n5 ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2021-11-12 10:34:39 UTC; 11ms ago Process: 27260 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 27260 (code=exited, status=0/SUCCESS) ekzorchik@srv-us2004a:~$ ekzorchik@srv-us2004a:~$ sudo netstat -antup | grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 27242/postgres
Шаг №2:
Создаю базу под Web
—сервис PhpPgAdmin:
Окончание строки команд обязательно с использованием символа точка с запятой «;»
ekzorchik@srv-us2004a:~$ sudo su - postgres postgres@srv-us2004a:~$ pwd /var/lib/postgresql postgres@srv-us2004a:~$ postgres@srv-us2004a:~$ psql psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1)) Type "help" for help. postgres=# CREATE USER us_pgadmin WITH PASSWORD 'Aa1234567aA'; CREATE ROLE postgres=# CREATE DATABASE db_pgadmin; postgres=# CREATE DATABASE db_pgadmin; CREATE DATABASE postgres=# postgres=# GRANT ALL PRIVILEGES ON DATABASE db_pgadmin to us_pgadmin; GRANT postgres=# postgres=# quit postgres@srv-us2004a:~$ exit logout ekzorchik@srv-us2004a:~$
Шаг №3:
Устанавливаю PhpPgAdmin
из стандартных репозитариев:
(в Качестве Web
-сервиса используется по умолчанию apache2
)
ekzorchik@srv-us2004a:~$ apt-cache show phppgadmin | grep Version Version: 7.12.1+dfsg-1 ekzorchik@srv-us2004a:~$ sudo apt-get install -y phppgadmin ekzorchik@srv-us2004a:~$ echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf ekzorchik@srv-us2004a:~$ sudo unlink /etc/apache2/sites-available/000-default.conf ekzorchik@srv-us2004a:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf ekzorchik@srv-us2004a:~$ sudo rm /var/www/html/index.html
Шаг №4:
Изменяю поведение сервиса, то доступ к нему не только с локального хоста:
ekzorchik@srv-us2004a:~$ sudo nano /etc/apache2/conf-available/phppgadmin.conf # Only allow connections from localhost: #Require local Require all granted
После не забываем сохранить внесенные изменения.
ekzorchik@srv-us2004a:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2004a:~$ ekzorchik@srv-us2004a:~$ sudo systemctl restart apache2 && sudo systemctl status apache2 | head -n5 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-11-12 10:48:07 UTC; 14ms ago Docs: https://httpd.apache.org/docs/2.4/ Process: 37061 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) ekzorchik@srv-us2004a:~$
Шаг №5:
Произвожу первоначальную настройку через Web
—интерфейс путем обращения к оснастке PhpPgAdmin
через URL
адрес вида: http://IP&DNS/phppgadmin (http://172.33.33.117/phppgadmin)
Language: English
Theme: Default
Нажимаю на Servers – (Server) PostgreSQL
, авторизуюсь в PostgreSQL
Username: указываю созданный выше аккаунт us_pgadmin
Password: указываю на созданный выше аккаунт пароль Aa1234567aA
И нажимаю Login
И я успешно подключился к сервису PostgreSQL
на текущем сервере:
Шаг №6:
Но вот так если нужно выставлять в интернет доступ к оснастке управления ни в коем случае нельзя, нужно доступ к странице http://IP&DNS/phppgadmin
защитить Basic
аутентификацией:
ekzorchik@srv-us2004a:~$ sudo htpasswd -c /usr/share/phppgadmin/.htpasswd ekzorchik New password: Aa1234567@!# Re-type new password: Aa1234567@!# Adding password for user ekzorchik ekzorchik@srv-us2004a:~$ ekzorchik@srv-us2004a:~$ sudo nano /etc/apache2/sites-available/phppgadmin.conf ekzorchik@srv-us2004a:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2004a:~$ sudo a2ensite phppgadmin.conf ekzorchik@srv-us2004a:~$ sudo systemctl restart apache2 && sudo systemctl status apache2 | head -n5 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-11-12 11:11:38 UTC; 14ms ago Docs: https://httpd.apache.org/docs/2.4/ Process: 37438 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) ekzorchik@srv-us2004a:~$
после чего при обращении на Web
-интерфейс PhpPgAdmin
у меня теперь появляется окно необходимой авторизации к Алиасу.
Пройдя Basic Auth
авторизацию путем указания правильных данных предопределенных в файле .htaccess
получаем доступ к PhpPgAdmin Web
-панели администрирования:
Итого задача выполнена и можно двигаться дальше по одному кирпичику достигая поставленной цели. На этом пока все, с уважением автор блога
Олло Александр aka ekzorchik.