Servidor dedicado en AWS
En este Post vamos a crear una máquina virtual o ec2 en Amazon Web Services que actuará como servidor dedicado a una base de datos, en este caso PostgreSQL.
Los requerimientos para toda esta ejecución son los siguientes :
El primero y más importante es tener una cuenta activa en AWS la cuál os podéis abrir desde este link https://aws.amazon.com/es/
El segundo es descargarnos el entorno gráfico de PgAdmin4 el cuál podéis conseguir en la siguiente dirección https://www.pdadmin.org/
Una vez cumplimos con los requisitos podemos empezar a «jugar». El primer paso es crearnos una ec2 en aws para poder conectarnos a ella mediante nuestra cmd y los pasos son:
-Vamos al servicio EC2 de Amazon Web Services, clicamos en Launch Instances o Lanzar Instancia, seleccionamos la capa gratuita, dejamos todo por defecto hasta llegar a las etiquetas, donde le pondremos un nombre especifico a la ec2, a continuación creamos un grupo nuevo si no queremos utilizar cualquier otro existente, descargamos la clave de acceso o el archivo .pem y lanzamos la instancia o máquina virtual.
Sí tenéis dudas de los pasos anteriores podéis consultar el video tutorial.
A continuación debemos otorgarle los permisos necesarios al archivo que nos acabamos de descargar para que podamos acceder a nuestra ec2 recién lanzada.
Una vez hemos concedido los permisos necesarios al archivo nos conectamos a través de SSH a nuestra VM/EC2 de AWS con la siguiente línea: ssh -i «Post-Tajamar.pem» ec2-user@ec2-3-86-47-76.compute-1.amazonaws.com la cual sacamos de AWS haciendo click en el boton de conectar o connect dentro de nuestra ec2 que ya esta disponible y corriendo.
Introducimos el comando sudo su para hacernos super usuario en la maquina ec2. El siguiente paso es descargarnos el servidor PostgreSQL de Amazon Linux extras con las siguientes ordenes:
sudo amazon-linux-extras | grep postgre con el cuál vemos la store de Amazon.
amazon-linux-extras install postgresql11 vim epel dado que es la versión mas estable actualmente en la tienda de Amazon Linux extras.
Ahora instalamos el server de PostgreSQL:
yum install -y postgresql-server postgresql-devel
Ya estaría instalado, ahora es el momento de arrancar los servicios y configurar la base de datos:
/usr/bin/postgresql-setup –initdb
arranca la bbdd, que no es lo mismo que el servicio de escucha, es como crear index en apache, por ejemplo
Arrancamos el servicio de BBDD para su escucha.
systemctl enable postgresql
systemctl start postgresql
Vemos el estado del servicio
systemctl status postgresql
Ya nos podemos conectar a la BBDD.
La primera vez, debemos configurar la contraseña para el usuario principal de Postgres,dicho usuario es postgres y vamos a poner la misma contraseña postgres
Nos conectamos con el usuario Admin de Postgres:
sudo su – postgres
Cambiamos la password de nuestro usuario de la base de datos:
psql -c «alter user postgres with password ‘Postgres'»
Creamos nuestra bbdd para el ejemplo Mundo:
createdb Mundo;
Por defecto, se crea una base de datos default llamada como el usuario postgres
Nos conectamos a dicha bbdd
psql -U postgres
Cambiamos a la nueva base de datos Mundo
psql postgres=#\c Mundo;
Creamos una Tabla para la base de datos que acabamos de crear
CREATE TABLE «Countries»
(«IdCity» int primary key not null,
«CNAME» char(50),
«LOC» char(50),
«LANG» char(50));
insert into «Countries» values (1, ‘MADRID EC2′,’SPAIN’,’SPANISH’);
insert into «Countries» values (2, ‘LONDON EC2’, ‘UK’,’ENGLISH’);
insert into «Countries» values (3, ‘PEKIN EC2’, ‘CHINA’,’CHINESE’);
insert into «Countries» values (4, ‘NEW YORK EC2’, ‘EEUU’,’AMERICAN ENGLISH’);
SELECT * FROM «Countries»;
Nos conectamos al entorno grafico de PgAdmin4
Es el momento de conectarnos con nuestro server remoto de PostgresSQL que contiene la ec2 con la IP Publica
Al intentar conectar, nos indica que no conoce nuestra IP porque aun necesitamos abrir el puerto de PosgreSQL en el grupo de seguridad en aws
Debemos configurar los accesos de PostgreSQL dentro de la ec2:
Podemos permitir que el acceso sea de una sola IP pública (externa): Acceso a otra máquina dedicada con un Web Server por ejemplo.
Podemos permitir que el acceso sea solo de IP Privada: Grupo de Seguridad o para una aplicación que consume directamente desde la propia máquina (Web Server en la misma máquina EC2).
Para averiguar si me puedo conectar, existe un comando dentro de la máquina virtual
psql -U postgres -h IPNUMBER
Necesitamos acceder al archivo de configuración de Postgre, para ellos tenemos que salir del servidor de Postgre con el comando \q
cd /var/lib/pgsql/data
En el archivo postgresql.conf debemos indicar que direcciones podrán escuchar utilizando el editor por defecto nano con la siguiente línea de comandos:
sudo nano postgresql.conf
Indicamos las direcciones que deseamos que se puedan comunicar
sudo nano pg_hba.conf
Reiniciamos el servidor de Postgres:
systemctl restart postgresql
Verificamos el estado del servidor:
systemctl status postgresql
Nos conectamos con el entorno grafico de PgAdmin4 a la ec2 la cual contiene PostgreSQL
Ya tendríamos nuestra ec2 dedicada a una base de datos.
En caso de querer conectar una app a esta bbdd mediante la Ip privada solo tendríamos que repetir los pasos de configuración de los archivos, pero con la Ip privada en esta ocasión y con trust en vez de con md5, de la app o de la propia ec2 para que solo se puedan conectar aplicaciones internas, reiniciaríamos el servidor, comprobaríamos su estado y verificaríamos el acceso según como lo hayamos configurado.
Autor/a: Enrique Javier Muñoz Romera
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2020-2021
Recursos utilizados
https://aws.amazon.com/es/rds/postgresql/what-is-postgresql/
https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-amazon-ec2.html