GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar PostgreSQL y phpPgAdmin en Fedora 34

PostgreSQL o Postgres es un potente sistema de gestión de bases de datos relacionales de código abierto que utiliza y amplía el lenguaje SQL. Tiene muchas funciones avanzadas que almacenan y escalan de forma segura cargas de trabajo de datos complicadas. phpPgAdmin es una aplicación basada en PHP para administrar y editar bases de datos PostgreSQL.

Este tutorial demostrará cómo instalar PostgreSQL y phpPgAdmin en un servidor basado en Fedora 34.

Requisitos

  1. Un servidor basado en Fedora 34.

  2. Mantenga sus sistemas actualizados.

    $ sudo dnf update
    
  3. Un usuario no root con privilegios sudo.

Paso 1:instalar PostgreSQL

Fedora 34 viene con diferentes versiones de PostgreSQL disponibles en su repositorio. Puede elegir entre estas versiones habilitando el módulo apropiado, que es una colección de paquetes y dependencias.

Primero, verifique las transmisiones disponibles para postgresql módulo usando el dnf comando.

$ 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

Para instalar PostgreSQL, debemos habilitar el flujo de módulo correspondiente.

$ sudo dnf module enable postgresql:13

Cuando se le solicite, ingrese Y para habilitar la transmisión.

A continuación, instale el servidor PostgreSQL.

$ sudo dnf install postgresql-server

Es posible que desee instalar el contrib paquete, que agrega varias funciones adicionales al sistema de base de datos PostgreSQL.

$ sudo dnf install postgresql-contrib

Ahora que el servidor está instalado, necesitamos crear un nuevo usuario.

Paso 2:crear un nuevo clúster de base de datos de PostgreSQL

Primero, debe crear un nuevo clúster de base de datos PostgreSQL. Un clúster de base de datos es una colección de bases de datos administradas por una sola instancia de servidor. La creación de un clúster creará directorios en los que se colocará la base de datos. Todo este proceso también es similar a inicializar PostgreSQL.

Este proceso crea  template1 y postgres bases de datos La template1 La base de datos es una plantilla utilizada por PostgreSQL para crear nuevas bases de datos. El postgres base de datos es la base de datos predeterminada para uso de usuarios, utilidades y aplicaciones de terceros.

Para crear el clúster de la base de datos para inicializar PostgreSQL, use el siguiente comando.

$ sudo postgresql-setup --initdb

Ahora, inicie el servicio PostgreSQL.

$ sudo systemctl start postgresql

Habilite el servicio PostgreSQL.

$ sudo systemctl enable postgresql

Ahora que PostgreSQL está funcionando, podemos crear nuevos usuarios y bases de datos y comenzar a usarlos.

Paso 3:roles y métodos de autenticación de PostgreSQL

Postgres usa el concepto de "roles" para manejar la autenticación y los permisos. PostgreSQL admite múltiples métodos de autenticación. Los métodos más utilizados son:

  • Confianza - Un rol que pueda conectarse sin contraseña, siempre que se cumplan las condiciones definidas en /var/lib/pgsql/pg_hba.conf se cumplen.
  • Contraseña - Un rol que utiliza la contraseña para conectarse. Las contraseñas se pueden almacenar como md5 , scram-sha-256 y texto claro.
  • Identidad - Requiere el nombre de usuario del sistema operativo del cliente y solo se admite en conexiones TCP/IP.
  • Compañeros - Igual que Ident pero compatible solo con conexiones de host local.

Postgres usa la autenticación de pares de forma predeterminada, lo que significa que asocia los roles de Postgres con una cuenta de usuario de Linux coincidente. Si existe un rol dentro de Postgres, un nombre de usuario de Linux con el mismo nombre puede iniciar sesión como ese rol. Los detalles de la autenticación del cliente se almacenan en el /var/lib/pgsql/pg_hba.conf archivo.

El proceso de instalación de Postgres crea una cuenta de usuario llamada postgres que está asociado con el rol predeterminado de Postgres.

Cambiar a postgres cuenta.

$ sudo -i -u postgres

Puede acceder al indicador de Postgres usando el siguiente comando.

$ psql

Esto lo iniciará en el indicador de PostgreSQL, donde puede acceder y usar bases de datos a través de varios comandos. Puede salir del aviso escribiendo:

postgres-# \q

Lo llevará de regreso a la cuenta de Linux de la cuenta de Postgres. Para volver a su propia cuenta de usuario, escriba exit en el aviso.

También puede acceder al indicador de Postgres sin cambiar de cuenta escribiendo el siguiente comando.

$ sudo -u postgres psql

Para salir del indicador, escriba:

postgres-# \q

Paso 4:creación de nuevos roles y bases de datos.

Puede crear roles y bases de datos directamente desde bash Shell o psql cáscara. Para nuestros propósitos, usaremos el psql shell ya que hace el trabajo más rápido.

Primero, conéctese a psql concha.

$ sudo -u postgres psql

Cree una nueva función de PostgreSQL con permisos como Superusuario, Crear base de datos, Crear función e Iniciar sesión. Este usuario se usará más adelante en el tutorial para iniciar sesión en phpPgAdmin .

postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';

Puede verificar todos los usuarios disponibles con el siguiente comando.

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 | {}

Crea una nueva base de datos.

postgres-# CREATE DATABASE userdb;

Otorgue privilegios al usuario en la base de datos que acabamos de crear ejecutando la siguiente consulta.

postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;

Puede verificar todas las bases de datos disponibles con el siguiente comando.

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)

Paso 5:habilite el acceso remoto al servidor PostgreSQL

De forma predeterminada, el servidor PostgreSQL solo escucha en la interfaz localhost. Para habilitar el acceso remoto a su servidor PostgreSQL, abra el postgresql.conf archivo.

$ sudo nano /var/lib/pgsql/data/postgresql.conf

Desplácese hacia abajo hasta la sección CONEXIONES Y AUTENTICACIÓN y cambie/edite la siguiente línea eliminando el símbolo de almohadilla.

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

Cambie la línea a lo siguiente.

listen_addresses = '*' 			        # what IP address(es) to listen on;

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

El siguiente paso es configurar el servidor para aceptar conexiones remotas editando el pg_hba.conf archivo.

$ sudo nano /var/lib/pgsql/data/pg_hba.conf

Hay varias formas de dar acceso a conexiones remotas. Puede restringir las conexiones remotas a un solo usuario o una sola base de datos o a todos ellos y restringir las conexiones a cada dirección IP o una ubicación de confianza.

# 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

También hay otras entradas en el archivo, y el método de autenticación enumerado para ellas es ident . Deberá cambiar el valor de ident a md5 si desea iniciar sesión a través de la interfaz web.

Agregue la configuración requerida y luego guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el servidor PostgreSQL para que el cambio surta efecto.

$ sudo systemctl restart postgresql

Verifica los cambios con el ss utilidad.

$ ss -nlt | grep 5432
LISTEN   0    128    0.0.0.0:5432    0.0.0.0:*       
LISTEN   0    128    [::]:5432      [::]:*  

Esto muestra que el servidor PostgreSQL está escuchando en el puerto predeterminado en todas las interfaces.

Paso 6:instalar phpPgAdmin, Nginx y PHP

phpPgAdmin generalmente se envía con el repositorio de PostgreSQL o Fedora, pero no en Fedora 34. Por lo tanto, deberá instalarlo manualmente. Junto con phpPgAdmin, también debe instalar el servidor web Nginx y el software PHP.

Descargue la última versión de phpPgAdmin desde la página de lanzamientos de Github. Al momento de escribir este tutorial, la última versión disponible es la 7.13.0.

$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz

Extraiga el archivo descargado.

$ tar -zxvf phpPgAdmin-7.13.0.tar.gz

Cree el directorio donde vivirá su sitio.

$ sudo mkdir /var/www/phppgadmin/html -p

Mueva los archivos extraídos a /var/www/phppgadmin/html directorio.

$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html

Instale el servidor Nginx y PHP junto con los módulos PHP apropiados.

$  sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring

Configure el cortafuegos de Fedora.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelva a cargar el cortafuegos para activar las reglas.

$ sudo firewall-cmd --reload

Configurar PHP

Abra el archivo /etc/php-fpm.d/www.conf para editar usando nano editor .

$ sudo nano /etc/php-fpm.d/www.conf

Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx . Encuentra el user=apache y group=apache líneas en el archivo y cámbielas a 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
...

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el proceso PHP-fpm.

$ sudo systemctl restart php-fpm

Configurar Nginx

Ejecute el siguiente comando para agregar un archivo de configuración para su sitio.

$ sudo nano /etc/nginx/conf.d/phppgadmin.conf

Pegue el siguiente código en el editor.

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;
  }
}

Presiona Ctrl + X para cerrar el editor y presiona Y cuando se le solicite guardar el archivo.

Este archivo asume que hospedaremos phppgadmin.example.com en el directorio /var/www/html/phppgadmin .

Pruebe la configuración de Nginx.

$ sudo nginx -t

Debería ver el siguiente resultado que indica que su configuración es correcta.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Inicie y habilite el servicio Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Inicie http://phppgadmin.example.com en su navegador, y debería ver la página predeterminada de phpPgAdmin en su navegador.

Haga clic en PostgreSQL en la barra lateral izquierda e ingrese el usuario y la contraseña que creó anteriormente para iniciar sesión y acceder al portal.

Paso 7:instalar SSL (opcional)

Podemos habilitar SSL utilizando el servicio Let's Encrypt SSL. Para eso, instale la herramienta Certbot.

$ sudo dnf install certbot-nginx

Genere el certificado SSL.

$ sudo certbot --nginx -d phppgadmin.example.com

Se le pedirá su dirección de correo electrónico y aceptar los términos del servicio. Cuando se le solicite acceso HTTPS, elija el método seguro para redirigir todas las solicitudes de HTTP a HTTPS.

Debería poder acceder a phpPgAdmin escribiendo https://phppgadmin.example.com en su navegador.

Configurar SSL para renovación automática

Abre el editor Crontab.

$ EDITOR=nano sudo crontab -e

Pegue la siguiente línea en la parte inferior.

. . .
25 2 * * * /usr/bin/certbot renew --quiet

El 25 2 * * * parte de esta línea significa "ejecutar el siguiente comando a las 2:25 am, todos los días". Puede elegir cualquier momento.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Su certificado SSL se renovará automáticamente.

Conclusión

Esto concluye nuestro tutorial sobre cómo instalar PostgreSQL y phpPgAdmin en un servidor basado en Fedora 34. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Fedora
  1. Cómo instalar PostgreSQL y phpPgAdmin en OpenSUSE Leap 42.1

  2. Cómo instalar Postgresql y phpPgAdmin en Ubuntu 15.04

  3. Cómo instalar y configurar Postgres 14 en Fedora 34

  4. Cómo instalar y configurar Ansible en Fedora 35

  5. Cómo instalar Python 2 y Python 3 en Fedora 35

Cómo instalar phpPgAdmin en Debian 11 / Debian 10

Cómo instalar PostgreSQL en CentOS 8

Cómo instalar PostgreSQL 14 en Fedora Linux

Cómo instalar y configurar Jenkins en Fedora 35

Cómo instalar PostgreSQL en Fedora 35

Cómo instalar la base de datos PostgreSQL y pgAdmin en Linux