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 previos
- Un servidor basado en Fedora 34.
- Mantenga sus sistemas actualizados.
$ sudo dnf update
- 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 los flujos disponibles para el módulo postgresql usando el comando 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
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 paquete contrib, 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: cree 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 única 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 bases de datos template1 y postgres. La base de datos template1 es una plantilla utilizada por PostgreSQL para crear nuevas bases de datos. La base de datos de postgres 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: funciones 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 puede conectarse sin contraseña, siempre que se cumplan las condiciones definidas en /var/lib/pgsql/pg_hba.conf.
- Clave – Un rol que utiliza la contraseña para conectarse. Las contraseñas se pueden almacenar como md5, scram-sha-256 y texto claro.
- Identificador – Requiere el nombre de usuario del sistema operativo del cliente y solo se admite en conexiones TCP/IP.
- Par – 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 archivo /var/lib/pgsql/pg_hba.conf.
El proceso de instalación de Postgres crea una cuenta de usuario llamada postgres que está asociada con el rol predeterminado de Postgres.
Cambie a la cuenta de postgres.
$ 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 indicador escribiendo:
postgres-# \q
Lo llevará de regreso a la cuenta de Linux de la cuenta de Postgres. Para volver a salir a su propia cuenta de usuario, escriba exit cuando se le solicite.
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 el shell bash o el shell psql. Para nuestros propósitos, usaremos el shell psql ya que hace el trabajo más rápido.
Primero, conéctese al shell psql.
$ 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 utilizará 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 | {}
Cree 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 archivo postgresql.conf.
$ 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 la siguiente.
listen_addresses = '*' # what IP address(es) to listen on;
Guarde el archivo presionando Control + X y entrando Y cuando se le solicite. Publicidad
El siguiente paso es configurar el servidor para aceptar conexiones remotas editando el archivo pg_hba.conf.
$ 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 Control + X y entrando Y Cuando se le solicite.
Reinicie el servidor PostgreSQL para que el cambio surta efecto.
$ sudo systemctl restart postgresql
Verifique los cambios con la utilidad ss.
$ 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: instale 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 el 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 al directorio /var/www/phppgadmin/html.
$ 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 firewall para activar las reglas.
$ sudo firewall-cmd --reload
Configurar PHP
Abra el archivo /etc/php-fpm.d/www.conf para editar usando el editor nano.
$ sudo nano /etc/php-fpm.d/www.conf
Necesitamos configurar el usuario/grupo de Unix de procesos PHP para nginx. Busque las líneas user=apache y group=apache 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 Control + X y entrando Y Cuando se le solicite.
Reinicie el proceso de 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; } }
Prensa Control + X para cerrar el editor y pulsar 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 el enlace de 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ías poder acceder phpPgAdmin escribiendo https://phppgadmin.example.com en su navegador.
Configurar SSL para la 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
La parte 25 2 * * * 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 Control + X y entrando 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.