Установка PostgreSQL на сервер с веб-интерфейсом Adminer
Во время разработки я пользовался сервисом Beget, и арендовал облачный сервер.
1: Установка PostgreSQL
Сначала обновим пакеты и установим сам PostgreSQL:
sudo apt update sudo apt install postgresql postgresql-contrib -y
"Pending kernel upgrade" — новая версия ядра доступна (5.15.0-136), а сейчас у нас работает старая (5.15.0-135).
Чтобы новая версия начала использоваться, понадобится перезагрузка сервера.
2: Проверка службы PostgreSQL
sudo systemctl status postgresql
3: Вход в PostgreSQL
sudo -u postgres psql
Это должно открыть интерфейс PostgreSQL
4: Создание пользователя и базы данных
Сейчас создадим пользователя, базу и дадим права.
CREATE USER myuser WITH PASSWORD 'mypassword'; CREATE DATABASE mydb; GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
Вместо myuser
вставьте свое имя пользователя.
Вместо mypassword
вставьте свой пароль.
Весто mydb
вставьте свое название базы данных.
Чтобы выйти обратно, достаточно прописать:
\q
5: Разрешаем внешние подключения
1. Открываем конфигурацию postgresql.conf
sudo nano /etc/postgresql/17/main/postgresql.conf
sudo nano /etc/postgresql/(ваша версия)/main/postgresql.conf
#listen_addresses = 'localhost'
listen_addresses = '*'
Сохраняем и закрываем окно nano (Ctrl+X
, Ctrl+Y
, Enter
)
sudo nano /etc/postgresql/17/main/pg_hba.conf
sudo nano /etc/postgresql/(ваша версия)/main/pg_hba.conf
host all all 0.0.0.0/0 md5
(это разрешает доступ с любых IP — можно потом ограничить)
Сохраняем и закрываем окно nano (Ctrl+X
, Ctrl+Y
, Enter
)
3. После этого перезапускаем PostgreSQL
sudo systemctl restart postgresql
6: Открытие порта PostgreSQL в фаерволе
По умолчанию PostgreSQL использует порт 5432.
Если у нас включён ufw
(Ubuntu Firewall), нужно открыть порт:
sudo ufw allow 5432/tcp
sudo ufw status
✅ Разрешено подключение снаружи
Поменять пароль суперпользователя (postgres):
host all all 127.0.0.1/32 scram-sha-256
3. Замени scram-sha-256
или md5
на trust
:
host all all 127.0.0.1/32 trust
Это временно отключит проверку пароля.
4. Теперь можно войти без пароля:
psql -U postgres
ALTER USER postgres WITH PASSWORD 'новый_пароль';
Удаление postgres с сервера:
Надо выполнить следующие команды:
sudo apt purge postgresql* -y sudo apt autoremove -y sudo rm -rf /etc/postgresql /var/lib/postgresql /var/log/postgresql /var/run/postgresql
Если ошибка Adminer - Нет расширений Недоступно ни одного расширения из поддерживаемых (PgSQL, PDO_PgSQL):
sudo apt-get install php8.1-pgsql
Переходим к файлу pg_hba.conf:
sudo nano /etc/postgresql/17/main/pg_hba.conf
sudo nano /etc/postgresql/(версия)/main/pg_hba.conf
local all postgres peer
local all postgres md5
sudo service postgresql restart sudo systemctl restart nginx
Если ошибка Adminer - Unable to connect to PostgreSQL server: connection to server on socket /var/run/postgresql/.s.PGSQL.5432 failed: FATAL: Peer authentication failed for user username:
Это означает что нужно изменить метод аутентификации:
sudo nano /etc/postgresql/14/main/pg_hba.conf
local all all peer
local all all md5
sudo service postgresql restart sudo systemctl restart nginx
7: Установка Adminer
7.1 Установка PHP и php-fpm
sudo apt install php php-fpm -y
Если после установки php и php-fpm вы получили следующее сообщение с ошибкой:
Мы используем Nginx (а не Apache), поэтому Apache можно спокойно отключить, чтобы он не мешал:
sudo systemctl stop apache2 sudo systemctl disable apache2
7.2 Создание папки для Adminer
sudo mkdir -p /var/www/adminer cd /var/www/adminer
7.3 Скачивание Adminer
sudo wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php sudo mv adminer-4.8.1.php index.php
7.4 Установка прав
sudo chown -R www-data:www-data /var/www/adminer
8: Настройка Nginx для Adminer
Сейчас создадим отдельный конфиг для Adminer, например adminer.conf
:
sudo nano /etc/nginx/sites-available/adminer
Вставим туда минимальный конфиг:
server { listen 80; server_name 0.0.0.0; # Просто IP, НЕ домен! root /var/www/adminer; index index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } location ~ /\.ht { deny all; } }
Теперь нужно создать ссылку в sites-enabled:
sudo ln -s /etc/nginx/sites-available/adminer /etc/nginx/sites-enabled/
Проверить конфиг и запустить Nginx:
sudo nginx -t sudo systemctl restart nginx
Переходим по нашему адресу: http://0.0.0.0
Буду рад за подписку на мой телеграмм канал - https://t.me/upmycode
Там публикуются такие гайды/мануалы, как этот.