Как установить PostgreSQL и phpPgAdmin на Fedora 34
На этой странице
- Предпосылки
- Шаг 1. Установите PostgreSQL
- Шаг 2. Создайте новый кластер базы данных PostgreSQL
- Шаг 3. Роли PostgreSQL и методы аутентификации
- Шаг 4. Создание новых ролей и баз данных.
- Шаг 5. Включите удаленный доступ к серверу PostgreSQL.
- Шаг 6. Установите phpPgAdmin, Nginx и PHP
- Настройка PHP
- Настройка Nginx
- Настройка SSL для автоматического продления
PostgreSQL или Postgres — это мощная система управления реляционными базами данных с открытым исходным кодом, которая использует и расширяет язык SQL. Он имеет множество расширенных функций, которые безопасно хранят и масштабируют сложные рабочие нагрузки данных. phpPgAdmin — это приложение на основе PHP для управления и редактирования баз данных PostgreSQL.
В этом руководстве показано, как установить PostgreSQL и phpPgAdmin на сервер с Fedora 34.
Предпосылки
-
A Fedora 34 based server.
-
Keep your systems updated.
$ sudo dnf update
-
A non-root user with sudo privileges.
Шаг 1 — Установите PostgreSQL
Fedora 34 поставляется с различными версиями PostgreSQL, доступными в их репозитории. Вы можете выбирать между этими версиями, включив соответствующий модуль, представляющий собой набор пакетов и зависимостей.
Сначала проверьте доступные потоки для модуля
postgresql
с помощью командыdnf
.$ dnf module list postgresql Name Stream Profiles Summary postgresql 9.6 client, server [d] PostgreSQL module postgresql 10 client, server [d] PostgreSQL module postgresql 11 client, server [d] PostgreSQL module postgresql 12 client, server PostgreSQL module postgresql 13 client, server PostgreSQL module
Чтобы установить PostgreSQL, нам нужно включить соответствующий поток модулей.
$ sudo dnf module enable postgresql:13
При появлении запроса введите
Y
, чтобы включить поток.Затем установите сервер PostgreSQL.
$ sudo dnf install postgresql-server
Вы можете установить пакет
contrib
, который добавляет несколько дополнительных функций в систему баз данных PostgreSQL.$ sudo dnf install postgresql-contrib
Теперь, когда сервер установлен, нам нужно создать нового пользователя.
Шаг 2. Создайте новый кластер базы данных PostgreSQL.
Во-первых, вам нужно создать новый кластер базы данных PostgreSQL. Кластер баз данных — это набор баз данных, управляемых одним экземпляром сервера. При создании кластера будут созданы каталоги, в которых будет размещена база данных. Весь этот процесс также похож на инициализацию PostgreSQL.
Этот процесс создает базы данных
template1
иpostgres
. База данныхtemplate1
— это шаблон, используемый PostgreSQL для создания новых баз данных. База данныхpostgres
является базой данных по умолчанию для использования пользователями, утилитами и сторонними приложениями.Чтобы создать кластер базы данных для инициализации PostgreSQL, используйте следующую команду.
$ sudo postgresql-setup --initdb
Теперь запустите службу PostgreSQL.
$ sudo systemctl start postgresql
Включите службу PostgreSQL.
$ sudo systemctl enable postgresql
Теперь, когда PostgreSQL настроен и работает, мы можем создать новых пользователей и базы данных и начать их использовать.
Шаг 3 — Роли PostgreSQL и методы аутентификации
Postgres использует концепцию «ролей» для проверки подлинности и разрешений. PostgreSQL поддерживает несколько методов аутентификации. Наиболее часто используемые методы:
- Доверие – роль, которая может подключаться без пароля, если выполняются условия, определенные в
/var/lib/pgsql/pg_hba.conf
. - Пароль. Роль, которая использует пароль для подключения. Пароли могут храниться в виде
md5
,scram-sha-256
и в открытом виде. - Идентификатор. Для этого требуется имя пользователя клиентской ОС, и он поддерживается только для соединений TCP/IP.
- Peer — то же, что и Ident, но поддерживается только для локальных подключений.
Postgres по умолчанию использует одноранговую аутентификацию, что означает, что он связывает роли Postgres с соответствующей учетной записью пользователя Linux. Если внутри Postgres существует роль, имя пользователя Linux с таким же именем может войти в систему под этой ролью. Детали аутентификации клиента хранятся в файле
/var/lib/pgsql/pg_hba.conf
.В процессе установки Postgres создается учетная запись пользователя с именем
postgres
, связанная с ролью Postgres по умолчанию.Переключитесь на учетную запись
postgres
.$ sudo -i -u postgres
Вы можете получить доступ к приглашению Postgres, используя следующую команду.
$ psql
Это войдет в приглашение PostgreSQL, где вы сможете получить доступ к базам данных и использовать их с помощью различных команд. Вы можете выйти из подсказки, набрав:
postgres-# \q
Это вернет вас к учетной записи Linux для учетных записей Postgres. Чтобы вернуться к своей учетной записи пользователя, введите
exit
в командной строке.Вы также можете получить доступ к приглашению Postgres без переключения учетных записей, введя следующую команду.
$ sudo -u postgres psql
Чтобы выйти из подсказки, введите:
postgres-# \q
Шаг 4 — Создание новых ролей и баз данных.
Вы можете создавать роли и базы данных непосредственно из оболочки bash или оболочки
psql
. Для наших целей мы будем использовать оболочкуpsql
, так как она работает быстрее.Сначала подключитесь к оболочке
psql
.$ sudo -u postgres psql
Создайте новую роль PostgreSQL с такими разрешениями, как «Суперпользователь», «Создать базу данных», «Создать роль» и «Войти». Этот пользователь будет использоваться далее в руководстве для входа в phpPgAdmin.
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Вы можете проверить всех доступных пользователей с помощью следующей команды.
postgres-# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- username | Superuser, Create role, Create DB | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Создайте новую базу данных.
postgres-# CREATE DATABASE userdb;
Предоставьте привилегии пользователю в базе данных, которую мы только что создали, выполнив следующий запрос.
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
Вы можете проверить все доступные базы данных с помощью следующей команды.
postgres-# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- userdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | navjot=CTc/postgres postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)
Шаг 5. Включите удаленный доступ к серверу PostgreSQL.
По умолчанию сервер PostgreSQL слушает только локальный интерфейс. Чтобы включить удаленный доступ к вашему серверу PostgreSQL, откройте файл
postgresql.conf
.$ sudo nano /var/lib/pgsql/data/postgresql.conf
Прокрутите вниз до раздела ПОДКЛЮЧЕНИЯ И АУТЕНТИФИКАЦИИ и измените/отредактируйте следующую строку, удалив символ решетки.
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Измените строку на следующую.
listen_addresses = '*' # what IP address(es) to listen on;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Следующим шагом является настройка сервера для приема удаленных подключений путем редактирования файла
pg_hba.conf
.$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Существуют различные способы предоставления доступа к удаленным соединениям. Вы можете либо ограничить удаленные подключения к одному пользователю, либо к одной базе данных, либо ко всем им, а также ограничить подключения либо к каждому IP-адресу, либо к надежному местоположению.
# TYPE DATABASE USER ADDRESS METHOD # The user jane can access all databases from all locations using an md5 password host all john 0.0.0.0/0 md5 # The user jane can access only the janedb database from all locations using an md5 password host johndb john 0.0.0.0/0 md5 # The user jane can access all databases from a trusted location (192.168.1.110) without a password host all john 192.168.1.110 trust
В файле есть и другие записи, и для них указан метод аутентификации
ident
. Вам нужно будет изменить значениеident
наmd5
, если вы хотите войти через веб-интерфейс.Добавьте необходимую конфигурацию, а затем сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите сервер PostgreSQL, чтобы изменения вступили в силу.
$ sudo systemctl restart postgresql
Проверьте изменения с помощью утилиты
ss
.$ ss -nlt | grep 5432 LISTEN 0 128 0.0.0.0:5432 0.0.0.0:* LISTEN 0 128 [::]:5432 [::]:*
Это показывает, что сервер PostgreSQL прослушивает порт по умолчанию на всех интерфейсах.
Шаг 6 — Установите phpPgAdmin, Nginx и PHP
phpPgAdmin обычно поставляется с репозиторием PostgreSQL или Fedora, но не с Fedora 34. Поэтому вам нужно будет установить его вручную. Наряду с phpPgAdmin вам также необходимо установить веб-сервер Nginx и программное обеспечение PHP.
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Распакуйте скачанный архив.
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Создайте каталог, в котором будет жить ваш сайт.
$ sudo mkdir /var/www/phppgadmin/html -p
Переместите извлеченные файлы в каталог
/var/www/phppgadmin/html
.$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Установите сервер Nginx и PHP вместе с соответствующими модулями PHP.
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Настройте брандмауэр Fedora.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Перезагрузите брандмауэр, чтобы активировать правила.
$ sudo firewall-cmd --reload
Настроить PHP
Откройте файл
/etc/php-fpm.d/www.conf
для редактирования с помощьюnano editor
.$ sudo nano /etc/php-fpm.d/www.conf
Нам нужно установить для пользователя/группы Unix процессов PHP значение nginx. Найдите в файле строки
user=apache
иgroup=apache
и измените их на nginx.... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите процесс PHP-fpm.
$ sudo systemctl restart php-fpm
Настроить Nginx
Выполните следующую команду, чтобы добавить файл конфигурации для вашего сайта.
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Вставьте следующий код в редактор.
server { listen *:80; server_name phppgadmin.example.com; root /var/www/phppgadmin/html; index index.php; location / { try_files $uri $uri/ =404; } access_log /var/log/nginx/phppgadmin.access.log; error_log /var/log/nginx/phppgadmin.error.log; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; } }
Нажмите Ctrl + X, чтобы закрыть редактор, и нажмите Y, когда будет предложено сохранить файл.
Этот файл предполагает, что мы будем размещать
phppgadmin.example.com
в каталоге/var/www/html/phppgadmin
.Протестируйте конфигурацию Nginx.
$ sudo nginx -t
Вы должны увидеть следующий вывод, указывающий, что ваша конфигурация верна.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Запустите и включите службу Nginx.
$ sudo systemctl start nginx $ sudo systemctl enable nginx
Запустите
http://phppgadmin.example.com
в своем браузере, и вы должны увидеть страницу phpPgAdmin по умолчанию в своем браузере.Нажмите ссылку
PostgreSQL
на левой боковой панели и введите имя пользователя и пароль, которые вы создали ранее, чтобы войти и получить доступ к порталу.Шаг 7. Установите SSL (необязательно)
Мы можем включить SSL с помощью сервиса Lets Encrypt SSL. Для этого установите инструмент Certbot.
$ sudo dnf install certbot-nginx
Создайте SSL-сертификат.
$ sudo certbot --nginx -d phppgadmin.example.com
Вам будет предложено ввести адрес электронной почты и согласиться с условиями обслуживания. При запросе доступа по HTTPS выберите безопасный метод, чтобы перенаправить все запросы с HTTP на HTTPS.
Вы должны получить доступ к phpPgAdmin, набрав
https://phppgadmin.example.com
в своем браузере.Настройте SSL для автоматического продления
Откройте редактор Crontab.
$ EDITOR=nano sudo crontab -e
Вставьте следующую строку внизу.
. . . 25 2 * * * /usr/bin/certbot renew --quiet
Часть
25 2 * * *
в этой строке означает «выполнять следующую команду в 2:25 каждый день». Вы можете выбрать любое время.Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Ваш SSL-сертификат будет автоматически обновлен.
Заключение
На этом мы завершаем наше руководство по установке PostgreSQL и phpPgAdmin на сервер с Fedora 34. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.