Cómo instalar y configurar pgAdmin 4 en el modo de servidor

Introducción

pgAdmin es una plataforma de administración y desarrollo de código abierto para PostgreSQL y sus sistemas de administración de bases de datos relacionados. Está escrita en Python y jQuery, y es compatible con todas las características de PostgreSQL. Puede utilizar pgAdmin para tareas que van desde redactar consultas de SQL básicas hasta monitorear sus bases de datos y configurar arquitecturas de bases de datos avanzadas.

En este tutorial, explicaremos el proceso de instalación y configuración de la última versión de pgAdmin en un servidor de Ubuntu 18.04, acceso a pgAdmin a través de un navegador web y conexión de este a una base de datos de PostgreSQL en su servidor.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente:

  • Un servidor con Ubuntu 18.04. Este servidor debe tener un usuario no root con privilegios sudo y un firewall configurado con ufw. Para obtener ayuda con la configuración de esto, siga nuestra Guía de configuración inicial para servidores de Ubuntu 18.04.
  • El servidor web de Apache instalado en su servidor. Siga nuestra guía Cómo instalar el servidor web Apache en Ubuntu 18.04 para configurarlo en su equipo.
  • PostgreSQL instalado en su servidor. Puede configurarlo siguiendo nuestra guía Cómo instalar y utilizar PostgreSQL en Ubuntu 18.04. A medida que siga esta guía, asegúrese de crear una base de datos y un rol nuevos, ya que requerirá que ambos conecten pgAdmin a su instancia de PostgreSQL.
  • Python 3 y venv instalados en su servidor. Para instalar estas herramientas y configurar un entorno virtual, siga Cómo instalar Python 3 y configurar un entorno de programación en un servidor de Ubuntu 18.04.

Paso 1: Instalar pgAdmin y sus dependencias

A la fecha de la publicación de este artículo, la versión más reciente de pgAdmin es pgAdmin 4, mientras que la versión más reciente disponible a través de los repositorios oficiales de Ubuntu es pgAdmin 3. Ya no se ofrece asistencia para pgAdmin 3 y los responsables del proyecto recomiendan instalar pgAdmin 4. En este paso, repasaremos el proceso de instalación de la versión más reciente de pgAdmin 4 dentro de un entorno virtual (según lo recomendado por el equipo de desarrollo del proyecto) e instalaremos sus dependencias utilizando apt.

Para comenzar, actualice el índice de paquetes de su servidor si no lo hizo recientemente:

  • sudo apt update

Luego, instale las dependencias que se detallan a continuación. Entre estas se incluyen libgmp3-dev, una biblioteca aritmética de multiprecisión, libpq-dev, que incluye archivos de encabezado y una biblioteca estática que hace posible la comunicación con un backend de PostgreSQL, y libapache2-mod-wsgi-py3, un módulo de Apache que le permite alojar aplicaciones web basadas en Python dentro de Apache:

  • sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

A continuación, cree algunos directorios en los cuales pgAdmin almacenará los datos de sus sesiones, datos de almacenamiento y registros:

  • sudo mkdir -p /var/lib/pgadmin4/sessions
  • sudo mkdir /var/lib/pgadmin4/storage
  • sudo mkdir /var/log/pgadmin4

Luego, cambie la propiedad de estos directorios a su usuario y grupo no root. Esto es necesario porque actualmente pertenecen a su usuario root, pero instalaremos pgAdmin desde un entorno virtual propiedad de su usuario no root y el proceso de instalación implica la creación de algunos archivos dentro de estos directorios. Sin embargo, después de la instalación, cambiaremos la propiedad al usuario y grupo www-data para que se pueda proporcionar a la Web:

  • sudo chown -R sammy:sammy /var/lib/pgadmin4
  • sudo chown -R sammy:sammy /var/log/pgadmin4

A continuación, abra su entorno virtual. Diríjase al directorio en el que se encuentra su entorno de programación y actívelo. Siguiendo las convenciones de nomenclatura del tutorial de requisitos previos de Python 3, accederemos al directorio environments y activaremos el entorno my_env:

  • cd environments/
  • source my_env/bin/activate

A continuación, descargue el código fuente de pgAdmin 4 a su máquina. Para encontrar la versión más reciente del código fuente, diríjase a la página de descarga de pgAdmin 4 (Python Wheel) y haga clic en el enlace de la versión más reciente (3.4, al momento de la redacción) Esto lo dirigirá a una página de descargas en el sitio web de PostgreSQL. Una vez que esté en ella, copie el enlace del archivo que termina con .whl, el formato de paquete integrado estándar utilizado para las distribuciones de Python. Luego, regrese a su terminal, ejecute el siguiente comando wget y asegúrese de sustituir el enlace por el que copió en el sitio de PostgreSQL. Con esto, se descargará el archivo .whl a su servidor:

  • wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.4/pip/pgadmin4-3.4-py2.py3-none-any.whl

A continuación, instale el paquete de wheel, la implementación de referencia del estándar de empaquetado de wheel. Este paquete es una biblioteca de Python que sirve como extensión para crear wheels e incluye una herramienta de línea de comandos para trabajar con archivos .whl:

  • python -m pip install wheel

A continuación instale el paquete pgAdmin 4 con el siguiente comando:

  • python -m pip install pgadmin4-3.4-py2.py3-none-any.whl

Esto se encarga de instalar pgAdmin y sus dependencias. No obstante, antes de conectarlo a su base de datos, hay algunos cambios que deberá realizar en la configuración del programa.

Paso 2: Configurar pgAdmin 4

Aunque pgAdmin se instaló en su servidor, aún quedan algunos pasos que debe seguir a fin de asegurarse de contar con los permisos y las configuraciones necesarias para proporcionar de manera correcta la interfaz web.

El archivo de configuración principal de pgAdmin, config.py, se lee antes que cualquier otro archivo de configuración. Su contenido puede usarse como punto de referencia para ajustes de configuración adicionales que pueden especificarse en otros archivos de configuración de pgAdmin, pero para evitar errores imprevistos no debe editar el archivo config.py. Añadiremos algunos cambios de configuración a un nuevo archivo, llamado config_local.py, que se leerá después del principal.

Cree este archivo ahora utilizando su editor de texto preferido. En este caso, utilizaremos nano:

  • nano my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

En su editor, agregue el siguiente contenido:

environments/my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log' SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db' SESSION_DB_PATH = '/var/lib/pgadmin4/sessions' STORAGE_DIR = '/var/lib/pgadmin4/storage' SERVER_MODE = True 

A continuación, se muestra lo que hacen estas cinco directivas:

  • LOG_FILE: define el archivo en el que se almacenarán los registros de pgAdmin.
  • SQLITE_PATH: pgAdmin almacena datos relacionados con el usuario en una base de datos de SQLite y esta directiva orienta el software de pgAdmin a esta base de datos de configuración. Debido a que este archivo se encuentra en el directorio persistente /var/lib/pgadmin4/, los datos de su usuario no se perderán después de la actualización.
  • SESSION_DB_PATH: especifica el directorio que se utilizará para almacenar datos de sesión.
  • STORAGE_DIR: define la ubicación en la que pgAdmin almacenará otros datos, como respaldos y certificados de seguridad.
  • SERVER_MODE: cuando esta directiva se fija en True, se indica a pgAdmin que se ejecute en el modo de servidor en lugar del modo de escritorio.

Tenga en cuenta que cada una de estas rutas de archivo apunta a los directorios que creó en el paso 1.

Después de añadir estas líneas, guarde y cierre el archivo (presione CTRL + X, seguido de Y y luego ENTER). Una vez implementadas estas configuraciones, ejecute la secuencia de comandos de configuración de pgAdmin para configurar sus credenciales de inicio de sesión:

  • python my_env/lib/python3.6/site-packages/pgadmin4/setup.py

Después de ejecutar este comando, verá un mensaje en el que se solicitará su dirección de correo electrónico y una contraseña. Estas le servirán como credenciales de inicio de sesión al acceder a pgAdmin posteriormente. Por ello, asegúrese de recordar o anotar lo que ingrese aquí:

Output. . . Enter the email address and password to use for the initial pgAdmin user account:  Email address: [email protected] Password: Retype password: 

A continuación, desactive su entorno virtual:

  • deactivate

Recupere las rutas de archivo que especificó en el archivo config_local.py. Estos archivos se almacenan dentro de los directorios que creó en el paso 1, que actualmente son propiedad de su usuario no root. Sin embargo, el usuario y el grupo que ejecutan su servidor web deben poder acceder a ellos. De forma predeterminada, en Ubuntu 18.04 estos son el usuario y el grupo www-data. Por ello, debe actualizar los permisos en los siguientes directorios para otorgar la propiedad de www-data a ambos:

  • sudo chown -R www-data:www-data /var/lib/pgadmin4/
  • sudo chown -R www-data:www-data /var/log/pgadmin4/

Con esto, la configuración de pgAdmin quedará completa. Sin embargo, el programa aún no se proporciona desde su servidor. Esto hace que el acceso a él siga siendo imposible. Para resolver esto, configuraremos Apache de modo que proporcione pgAdmin y usted pueda acceder a la interfaz de usuario de este a través de un navegador web.

Paso 3: Configurar Apache

El servidor web de Apache utiliza hosts virtuales para encapsular detalles de configuración y alojar más de un dominio desde un único servidor. Si siguió el tutorial de Apache de los requisitos previos, es posible que haya configurado un archivo de ejemplo de host virtual con el nombre your_domain.conf, pero en este paso crearemos uno nuevo desde el cual podremos proporcionar la interfaz web de pgAdmin.

Para comenzar, asegúrese de estar posicionado en su directorio root:

  • cd /

Luego, cree un nuevo archivo llamado pgadmin4.conf en su directorio /sites-available/. Este será el host virtual de su servidor:

  • sudo nano /etc/apache2/sites-available/pgadmin4.conf

Agregue el siguiente contenido a este archivo y asegúrese de actualizar las partes resaltadas para adecuarlas a su propia configuración:

/etc/apache2/sites-available/pgadmin4.conf

<VirtualHost *>     ServerName your_server_ip      WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home/sammy/environments/my_env     WSGIScriptAlias / /home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/pgAdmin4.wsgi      <Directory "/home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/">         WSGIProcessGroup pgadmin         WSGIApplicationGroup %{GLOBAL}         Require all granted     </Directory> </VirtualHost> 

Guarde y cierre el archivo del host virtual. A continuación, utilice la secuencia de comandos a2dissite para desactivar el archivo de host virtual predeterminado 000-default.conf:

  • sudo a2dissite 000-default.conf

Nota: Si siguió el tutorial de Apache de los requisitos previos, es posible que ya haya desactivado 000-default.conf y creado un ejemplo de archivo de configuración de host virtual (llamado your_domain.conf en los requisitos previos). Si este es el caso, deberá desactivar el archivo del host virtual your_domain.conf con el siguiente comando:

  • sudo a2dissite your_domain.conf

Luego utilice la secuencia de comandos a2ensite para habilitar su archivo de host virtual pgadmin4.conf. Con esto, se creará un enlace simbólico del archivo de host virtual del directorio /sites-available/ al directorio /sites-enabled/:

  • sudo a2ensite pgadmin4.conf

A continuación, compruebe que la sintaxis de su archivo de configuración sea correcta:

  • apachectl configtest

Si su archivo de configuración está en orden, visualizará Syntax OK. Si ve un error en el resultado, vuelva a abrir el archivo pgadmin4.conf y vuelva a verificar que su dirección IP y sus rutas de archivo sean correctas. Luego, vuelva a ejecutar configtest.

Una vez que vea Syntax OK en su salida, reinicie el servicio de Apache para que lea su nuevo archivo de host virtual:

  • sudo systemctl restart apache2

Con esto, pgAdmin quedará completamente instalado y configurado. A continuación, repasaremos la forma de acceder a pgAdmin desde un navegador antes de conectarlo a su base de datos de PostgreSQL.

Paso 4: Acceder a pgAdmin

En su computadora local, abra su navegador web preferido y visite la dirección IP de su servidor:

http://your_server_ip 

Una vez que se cargue, se le presentará una pantalla de inicio de sesión similar a la siguiente:

Pantalla de inicio de sesión de pgAdmin

Introduzca las credenciales de inicio de sesión que definió en el paso 2. Accederá a la pantalla de bienvenida de pgAdmin:

Pantalla de bienvenida de pgAdmin

Ahora que confirmó que puede acceder a la interfaz de pgAdmin, solo queda conectar pgAdmin a su base de datos de PostgreSQL. Sin embargo, antes de hacerlo, deberá realizar un pequeño cambio en la configuración de su superusuario de PostgreSQL.

Paso 5: Configurar su usuario de PostgreSQL

Si siguió el tutorial de PostgreSQL de los requisitos previos, debería tener instalado PostgreSQL en su servidor con un nuevo rol de superusuario y base de datos configurada.

De manera predeterminada, en PostgreSQL realiza la autenticación como usuario de bases de datos utilizando el método de autenticación “Protocolo de identificación” o “ident”. Esto implica que PostgreSQL tome el nombre de usuario de Ubuntu del cliente y lo utilice como nombre de usuario de bases de datos permitido. Esto puede brindar una mayor seguridad en muchos casos, pero también causar problemas cuando desee que un programa externo, como pgAdmin, se conecte a una de sus bases de datos. Para resolver esto, configuraremos para este rol de PostgreSQL una contraseña que permitirá la conexión de pgAdmin a su base de datos.

Desde su terminal, abra la línea de comandos de PostgreSQL bajo su rol de superusuario:

  • sudo -u sammy psql

Desde la línea de comandos de PostgreSQL, actualice el perfil de usuario para contar con una contraseña segura que elija:

  • ALTER USER sammy PASSWORD 'password';

Luego, cierre la línea de comandos de PostgreSQL:

  • q

A continuación, vuelva a la interfaz de pgAdmin 4 en su navegador y localice el menú Browser ubicado en el lado izquierdo. Haga clic con el botón secundario en Servers para abrir un menú contextual, sitúe el cursor sobre Create y haga clic en Server

Menú contextual Create - Server

Esto hará que en su navegador aparezca una ventana en la que ingresará información sobre su servidor, su rol y su base de datos.

En la pestaña General, introduzca el nombre para este servidor. Puede ser cualquier cosa que desee, pero puede resultarle útil un nombre descriptivo. En nuestro ejemplo, el servidor se llama Sammy-server-1.

Pestaña General de Create - Server

A continuación, haga clic en la pestaña Connection. En el campo de Host name/address, ingrese localhost. El valor preestablecido de Port debería ser 5432, que funcionará para esta configuración, ya que es el puerto que PostgreSQL utiliza de forma predeterminada.

En el campo Maintenance database, ingrese el nombre de la base de datos a la que desee conectarse. Tenga en cuenta que esta base de datos ya debe estar creada en su servidor. Luego, ingrese el nombre de usuario y la contraseña de PostgreSQL que configuró previamente en los campos Username y Password, respectivamente.

Pestaña Connection de Create - Server

Los campos vacíos de las demás pestañas son opcionales y solo es necesario completarlos si tiene en mente una configuración específica en la que se necesiten. Haga clic en el botón Save. La base de datos aparecerá en Servers, en el menú Browser.

Con esto, habrá establecido de forma correcta la conexión entre pgAdmin4 y su base de datos de PostgreSQL. Desde el panel de pgAdmin puede realizar prácticamente cualquier acción que ejecutaría desde la línea de comandos de PostgreSQL . Para demostrar esto, crearemos una tabla de ejemplo y la completaremos con algunos datos de muestra a través de la interfaz web.

Paso 6: Crear una tabla en el panel de pgAdmin

En el panel de pgAdmin, localice el menú Browser ubicado en la parte izquierda de la ventana. Haga clic en el signo más (+) junto a Servers (1) para expandir el menú en forma árbol que se encuentra dentro. A continuación, haga clic en el signo más ubicado en el lado izquierdo del servidor que agregó en el paso anterior (Sammy-server-1 en nuestro ejemplo), luego expanda Databases, el nombre de la base de datos que agregó (sammy, en nuestro ejemplo), y después Schemas (1). Debería ver un menú en forma de árbol como el siguiente:

Menú en forma de árbol expandido de Browser

Haga clic con el botón secundario sobre el elemento de la lista Tables, luego sitúe el cursor sobre Create y haga clic en Table

Menú contextual de Create - Table

Con esto se abrirá una ventana Create-Table. En la pestaña General de esta ventana, ingrese un nombre para la tabla. Puede ser el que desee, pero por comodidad la citaremos como table-01.

Pestaña General de Create - Table

A continuación diríjase a la pestaña** Columns y haga clic en el signo **+ ubicado en la esquina superior derecha de la ventana para añadir algunas columnas. Al añadir una columna, deberá asignarle valores** Name** y Data type, y quizá deba elegir Length si lo exige el tipo de datos que seleccionó.

Además, la documentación oficial de PostgreSQL nos indica que añadir una clave primaria a una tabla suele ser la práctica recomendada. Una clave principal es una restricción que indica una columna o un conjunto de columnas específicas que puede utilizarse como identificador especial para filas de la tabla. Esto no es un requisito, pero si desea establecer una o más de sus columnas como la clave principal, cambie el ajuste del conmutador en el extremo derecho de No a Yes.

Haga clic en el botón Save para crear la tabla.

Create - Table: Pestaña Columns con clave primaria activada

A esta altura, ha creado una tabla y le agregó algunas columnas. Sin embargo, las columnas aún no contienen datos. Para agregar datos a su nueva tabla, haga clic con el botón secundario sobre el nombre de esta en el menú Browser, sitúe el cursor sobre Scripts y haga clic en INSERT Script.

Menú contextual de INSERT script

Esto abrirá una nueva sección en el panel. En la parte superior, verá una instrucción INSERT parcialmente completada, con los nombres de tabla y columna correspondientes. Sustituya los signos de interrogación (?) por algunos datos ficticios y asegúrese de que los datos que agregue coincidan con los tipos de datos que seleccionó para cada columna. Tenga en cuenta que también puede añadir varias filas de datos al agregar cada fila en un nuevo conjunto de paréntesis, con cada conjunto de paréntesis separado por una coma como se muestra en el ejemplo siguiente.

Si lo desea, puede sustituir la secuencia de comandos parcialmente completada de INSERT por este ejemplo de instrucción de INSERT:

INSERT INTO public."table-01"(     col1, col2, col3)     VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556); 

Ejemplo de instrucción INSERT

Haga clic en el icono del rayo () para ejecutar la instrucción INSERT. Para ver la tabla y todos los datos dentro de ella, haga clic de nuevo con el botón secundario sobre el nombre de su tabla en el menú Browser, sitúe el cursor sobre View/Edit Data y seleccione All Rows.

Menú contextual de View/Edit Data, All Rows

Con esto se abrirá otro panel nuevo, debajo del cual, en la pestaña Data Output del panel inferior, podrá visualizar todos los datos que se encuentran en esa tabla.

View Data: Ejemplo de resultado de datos

De esta manera, habrá creado una tabla con éxito y la habrá completado con algunos datos a través de la interfaz web de pgAdmin. Este, por supuesto, es sólo uno de los métodos que puede utilizar para crear una tabla a través de pgAdmin. Por ejemplo, es posible crear y completar una tabla utilizando SQL en lugar del método basado en la GUI que se muestra en este paso.

Conclusión

A través de esta guía, aprendió a instalar pgAdmin 4 desde un entorno virtual de Python, a configurarlo, a proporcionarlo en la Web con Apache y a conectarlo a una base de datos de PostgreSQL. Además, en esta guía se explicó un método que puede utilizarse para crear y completar una tabla, pero pgAdmin puede utilizarse para muchas más funciones que las de crear y editar tablas.

Para obtener más información sobre cómo aprovechar al máximo todas las características de pgAdmin, lo alentamos a revisar la documentación del proyecto. También puede obtener más información sobre PostgreSQL a través de nuestros tutoriales realizados por la comunidad sobre el tema.