En esta ocasión veremos cómo instalar phpPgAdmin en Debian 9 Stretch paso a paso, de modo que podamos administrar el sistema de bases de datos PostgreSQL de nuestro servidor o VPS Debian remotamente desde cualquier dispositivo conectado a red que cuente con un navegador.
Tabla de contenidos
Antes de instalar phpPgAdmin en Debian 9 Stretch
Para poder completar con éxito esta guía de instalación de phpPgAdmin en Debian 9 Stretch es importante que satisfagas estos requerimientos básicos:
- Un sistema Debian 9 Stretch actualizado.
- Servidor web con PHP.
- El servicio de bases de datos PostgreSQL.
- Acceso a consola como root o un usuario con permisos de sudo.
- Conexión a Internet.
Si aún no dispones del entorno, puedes echar un vistazo a la guía de instalación de PostgreSQL en Debian 9 Stretch. Además, es importante que el servidor web ofrezca acceso seguro mediante HTTPS, puede que te interese echar también un vistazo a la guía de instalación de Apache en Debian 9 Stretch.
Cómo descargar phpPgAdmin en Debian 9 Stretch
Vamos a descargar phpPgAdmin para Debian 9 Stretch desde el sitio oficial del proyecto, debido a que la versión existente en los repositorios del sistema es muy antigua y no soporta las últimas versiones de PostgreSQL:
Encontraremos un archivo en formato .tar.bz2 que descargaremos directamente desde el navegador, o podemos descargar desde consola (si trabajamos remotamente) con la herramienta wget:
~$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.bz2
Cómo instalar phpPgAdmin en Debian 9 Stretch
Para instalar phpPgAdmin en Debian 9 Stretch empezaremos por descomprimir el paquete que acabamos de descargar en la ruta que nos interese:
~$ sudo tar xf phpPgAdmin-7.13.0.tar.bz2 -C /var/www/
Como el directorio que se acaba de crear contiene números de versión en su nombre, para facilitar la instalación y el mantenimiento crearemos un enlace simbólico sin números:
~$ sudo ln -s /var/www/phpPgAdmin-7.13.0/ /var/www/phpPgAdmin
Configuración del servicio web
Creamos un archivo de configuración para el servicio web:
~$ sudo nano /etc/apache2/conf-available/phppgadmin.conf
El contenido será el alias para hacer navegable la aplicación:
Alias /phppgadmin /var/www/phpPgAdmin
Guardamos el archivo y activamos la nueva configuración:
~$ sudo a2enconf phppgadmin
Y la aplicamos recargando la configuración del servicio web:
~$ sudo systemctl reload apache2
PHP
Necesitamos alguna extensión que obtendremos desde los repositorios, indicando en el nombre de los paquetes el número de versión de PHP instalada en el sistema (en este caso la 7.4):
~$ sudo apt install -y php7.4-mbstring
Si usas otra versión, cambia en el comando anterior php7.4- por lo que corresponda.
Para que las nuevas extensiones estén disponibles, recargamos la configuración del servicio web:
~$ sudo systemctl reload apache2
Preparativos del sistema de bases de datos
Si queremos acceder a nuestro servicio de bases de datos PostgreSQL en Debian 9 desde cualquier punto de la red con phpPgAdmin debemos tener en cuenta que, aunque conectemos desde el otro extremo del planeta, en realidad se trata de acceso local, ya que es el servidor web local el que accede por nosotros al servidor de bases de datos.
El problema es que mientras que phpPgAdmin exige autenticación mediante contraseña (como cualquier servicio web), PostgreSQL por defecto autentica localmente mediante la cuenta del sistema que usa el rol en cada caso, por tanto sin necesidad de contraseña de rol. Así que se hace necesario configurar PostgreSQL para que los roles locales sean autenticados por contraseña, como exige phpPgAdmin. Para crear una contraseña de nuestro rol de PostgreSQL iniciamos sesión local con el cliente psql:
~$ psql ... chacho=#
Y creamos la contraseña con el comando \password:
chacho=# \password Ingrese la nueva contraseña: Ingrésela nuevamente: chacho=#
Sólo queda cerrar sesión con el comando \q:
chacho=# \q ~$
Pero no basta con crear contraseñas para los roles. La configuración por defecto de PostgreSQL en Debian 9 autentica los roles a través del usuario del sistema que realiza la conexión, sin necesitar contraseña. Por tanto, aunque hayamos creado una contraseña para el rol de nuestro usuario, seguiremos pudiendo acceder con psql sin que se nos pida la misma:
~$ psql ... chacho=#
Cambiaremos este comportamiento editando el archivo pg_hba.conf de PostgreSQL (modifica la ruta del siguiente comando de acuerdo con la versión de PostgreSQL instalada en tu sistema):
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
Buscaremos la directiva local para los usuarios:
... # "local" is for Unix domain socket connections only local all all peer ...
Y cambiaremos peer por md5:
... local all all md5 ...
No lo hacemos para el superusuario postgres porque es posible que ciertos procesos del sistema usen postgres para tareas de mantenimiento o actualización, y encontrarían un problema con el cambio de autenticación. Recuerda que es recomendable tener un rol administrador distinto de postgres para trabajar.
Una vez guardados los cambios, aplicaremos la nueva configuración recargando el servicio postgresql de Debian 9:
~$ sudo systemctl reload postgresql
Una implicación de todo esto es que al crear nuevos roles habrá que asignarles contraseña para que puedan conectar y que previamente a esta configuración los roles existentes deben crear una contrseña (tal como hemos hecho en este ejemplo).
Cómo acceder a phpPgAdmin en Debian 9 Stretch
Para acceder a phpPgAdmin en Debian 9 Stretch desde un navegador añadiremos la ruta del alias que hemos creado, /phppgadmin en este ejemplo, a la dirección IP o dominio de nuestro servidor.
Por ejemplo, la máquina donde probamos este tutorial es accesible en el subdominio debian9.local.lan, por lo que la URL http://debian9.local.lan/phppgadmin/ sería válida para acceder.
Si queremos acceder al servicio PostgreSQL de nuestra máquina local seguiremos cualquiera de los enlaces «Servidores» a la vista, que nos llevarán a una página con el listado de servidores PostgreSQL disponibles (que también puedes ver en el panel lateral):
Inicialmente, el único servicio PostgreSQL disponible a través de phpPgAdmin es el servicio local de la propia máquina Debian 9 en la que estamos realizando esta instalación y configuración, por lo que pulsaremos sobre el enlace para conectar y se nos presentará una página de login o inicio de sesión:
Introducimos las credenciales de nuestro rol de PostgreSQL y accederemos a la interfaz de administración de phpPgAdmin:
Ya puedes empezar a trabajar con tu rol, haciendo todas las tareas que permitan sus privilegios.
Cómo acceder con el rol postgres a phpPgAdmin en Debian 9
Hemos dejado claro que igual que con otros servicios no se debe acceder nunca remotamente con el superusuario por defecto (postgres en el caso de PostgreSQL). Si aun así estás empeñado en hacerlo (supongo que tendrás un motivo), aquí van los pasos necesarios.
En primer lugar crearemos una contraseña para el rol postgres:
~$ sudo -u postgres psql ... postgres=# \password Ingrese la nueva contraseña: Ingrésela nuevamente: postgres=# \q ~$
A continuación activa la autenticación local del rol postgres mediante contraseña en el archivo pg_hba.conf (modifica la ruta del siguiente comando de acuerdo con la versión de PostgreSQL instalada):
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
Esta es la línea que debes cambiar:
... local all postgres peer ...
Cambiando el valor peer por md5:
... local all postgres md5 ...
Recarga la configuración de PostgreSQL:
~$ sudo systemctl reload postgresql
Verifica que ahora necesitas suministrar la contraseña para iniciar sesión con el rol postgres:
~$ sudo -u postgres psql Contraseña: ... postgres=#
Edita el archivo config.php.inc: de phpPgAdmin:
~$ sudo nano /etc/phppgadmin/config.inc.php
Busca la variable $conf[‘extra_login_security’]:
... // If extra login security is true, then logins via phpPgAdmin with no // password or certain usernames (pgsql, postgres, root, administrator) // will be denied. Only set this false once you have read the FAQ and // understand how to change PostgreSQL's pg_hba.conf to enable // passworded local connections. $conf['extra_login_security'] = true; ...
Y cambia su valor a false:
... $conf['extra_login_security'] = false; ...
Una vez guardados los cambios, la configuración se aplica de forma inmediata, no es necesario reiniciar ningún servicio, puedes acceder de inmediato.
Conclusión
Ahora que sabes cómo instalar phpPgAdmin en Debian 9 Stretch tienes un método más cómodo y visual para trabajar con PostgreSQL, que seguramente acelerará tu ritmo de trabajo con este sistema de bases de datos. Recuerda que es muy importante trabajar con la conexión cifrada, con protocolo HTTPS, si accedes remotamente.
En caso de dudas, preguntas, tal vez alguna sugerencia o corrección, puedes dejar un comentario.
Ah, y si esta breve guía de instalación de phpPgAdmin en Debian 9 Strech ha cubierto tus expectativas y quieres agradecérmelo, puedes hacerlo dejando una propina de 1 $ desde PayPal:
¡Gracias!