Las siguientes instrucciones detallan cómo instalar Microsoft SQL Server 2022 (16.x) en una instancia EC2 de AWS corriendo Ubuntu 20.04. Así mismo, muestra una aplicación de Node que utiliza Express para acceder a una base de datos de SQL Server.
La información fue tomada principalmente de las siguientes fuentes:
Desde Learner Lab ir a la consola de AWS y seleccionar EC2.
Lanzar una instancia EC2 con las siguientes características:
Ubuntu Server 20.04 LTS
t3.small
Continuar sin un par de claves
Seleccionar un grupo de seguridad existente
launch-wizard-1
15 GiB
Verificar que el puerto 8080
de la instancia EC2 esté abierto a través de la edición de las reglas del grupo de seguridad launch-wizard-1
.
Asignar una nueva dirección IP elástica del grupo de direcciones IPv4 de Amazon y asociarla a nuestra instancia EC2. Hay que tomar nota de esta dirección IP.
Conectarse a la instancia EC2 y ejecutar los siguientes comandos en la terminal para instalar los paquetes que serán requeridos para el siguiente paso:
sudo apt update
sudo apt upgrade -y
sudo apt install nodejs npm python2 pip libevent-dev -y
Hay que dejar esta terminal abierta para el siguiente paso.
En otra ventana o pestaña del navegador, en la consola de AWS ir a Cloud9 para crear un nuevo ambiente seleccionando la opción que permite asociarlo a nuestra instancia de cómputo existente. Visualizar la llave SSH y en la terminal copiarla al archivo ~/.ssh/authorized_keys
usando un editor como pico
o vim
. El nombre de usuario debe ser ubuntu
y el host debe ser la dirección IP del paso 4.
Los siguientes comandos se deben teclear en la terminal del ambiente de Cloud9 recién creado.
Importar las claves GPG del repositorio.
wget -qO- https://packages.microsoft.com/keys/microsoft.asc \ | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Registrar el repositorio de SQL Server para Ubuntu:
sudo add-apt-repository "$(wget -qO- \ https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
Actualizar los índices de los paquetes del sistema:
sudo apt-get update
Instalar SQL Server:
sudo apt-get install -y mssql-server
Configurar SQL Server. El programa solicitará la edición de SQL Server que se desea utilizar. Aquí se debe seleccionar la opcion 2 (developer). Así mismo, se debe aceptar la licencia y se debe proporcionar una contraseña para el sa (administrador del sistema):
sudo /opt/mssql/bin/mssql-conf setup
Verificar que el servicio está activo:
systemctl status mssql-server --no-pager
Registrar el repositorio de productos de Microsoft para Ubuntu:
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list \ | sudo tee /etc/apt/sources.list.d/msprod.list
Actualizar los índices de los paquetes del sistema:
sudo apt-get update
Instalar las herramientas de línea de comando de SQL Server junto con el paquete de desarrollo de ODBC para Unix. Es necesario aceptar la licencia.
NOTA: se requiere usar la tecla TAB para seleccionar el botón de “Yes” y presionar Enter para aceptar la licencia.
sudo apt-get install mssql-tools unixodbc-dev -y
Modificar la variable de entorno PATH
para añadir la ruta de las herramientas recién instaladas:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
Después de este paso es necesario cerrar la terminal y abrir una nueva para que tome efecto el nuevo valor de la variable de entorno.
sqlcmd
La utilería sqlcmd
es una aplicación de línea de comando que permite la ejecución interactiva de instrucciones para consultar las bases de datos de SQL Server. Para correr el comando se requiere proporcionar los siguientes argumentos:
-S
servidor (localhost
en nuestro caso).-U
usuario (sa
en nuestro caso).-P
contraseña. Se debe colocar entre comillas para evitar conflictos con la terminal.Por ejemplo:
sqlcmd -S localhost -U sa -P 'TuContraseña'
NOTA: Sustituir TuContraseña
por la contraseña seleccionada al momento en que se configuró SQL Server.
Si la conexión fue exitosa se obtiene el prompt de sqlcmd:
1>
A partir de ese momento ya se pueden consultar las bases de datos.
El siguiente comando permite crear la base de datos que estaremos utilizando en el código ejemplo más adelante:
CREATE DATABASE web_database; GO
Para terminar la sesión de sqlcmd teclear quit
o exit
seguido de Enter.
Actualizar Node a su versión estable más reciente:
sudo npm install n --global
sudo n stable
Después de este paso se debe cerrar la terminal y abrir una nueva para que esté disponible la versión estable más reciente de Node. Para verficar que así sea:
node -v
La salida debe ser igual o superior a:
v18.16.0
Instalar el paquete para abrir archivos de Cloud9 desde la terminal:
sudo npm install c9 --global
Modificar el archivo .bashrc
para definir como variables de entorno el usuario y constraseña de SQL Server.
c9 .bashrc
El comando anterior abre el archivo .bashrc
en el editor de Cloud9. Ir al final de dicho archivo y agregar las siguientes dos líneas:
export MSSQL_USER="sa" export MSSQL_PASSWORD="TuContraseña"
NOTA: Sustituir TuContraseña
por la contraseña seleccionada al momento en que se configuró SQL Server.
Después de este paso es necesario cerrar la terminal y abrir una nueva para que tome efecto los valores de las variables de entorno. Para verificar que así sea, teclar en la terminal:
echo $MSSQL_USER
echo $MSSQL_PASSWORD
Dichos comandos deben desplegar los valores asociados a las respectivas variables de entorno.
Instalar nodemon para correr nuestra aplicación escrita en Express:
sudo npm install nodemon --global
Descargar y descomprimir el tarball que contiene los archivos de nuestra aplicación (servidor web con los servicios web de tipo RESTful de quotations) :
wget \ https://arielortiz.info/s202311/tc2005b/rest_quotations_mssql.tgz
tar xzf rest_quotations_mssql.tgz
Cambiar el directorio actual de trabajo a rest_quotations_mssql
:
cd rest_quotations_mssql
Instalar los módulos express
y mssql
de Node requeridos por la aplicación:
npm install express mssql
Crear la tabla de quotations
ejecutando el script de SQL correspondiente:
sqlcmd -S localhost -i quotations_mssql.sql \ -U sa -P 'TuContraseña'
NOTA: Sustituir TuContraseña
por la contraseña seleccionada al momento en que se configuró SQL Server.
Editar en el archivo app.js
el valor de la constante ipAddr
colocando la dirección IP pública que se obtuvo cuando la instancia de EC2 fue creada. Posteriormente, correr la aplicación usando nodemon:
nodemon app.js
NOTA: El código contenido en app.js
muestra cómo conectarse desde Node a SQL Server y como hacer consultas (queries) a nuestra base de datos. Conviene revisar detalladamente este archivo:
Los endpoints de los servicios web disponibles son los mismos que se vieron anteriormente en clase con el ejemplo de rest_quotations
que usaba MySQL como sistema manejador de base de datos. Se recomienda usar Postman para probar su funcionamiento.
NOTA: No olvidar que el URL completo para acceder a cualquier recurso tienen la siguiente forma:
http://public-ip-address:8080/recurso
GET /quotations
GET /quotations/{ID}
POST /quotations
"author"
y "excerpt"
asociados a los valores deseados. DELETE /quotations
DELETE /quotations/{ID}
PUT /quotations/{ID}
"author"
y "excerpt"
asociados a los valores deseados.
Los siguientes recursos (contenidos en rest_quotations_mssql/public
) son documentos HTML que utilizan JavaScript del lado del cliente para acceder a varios de los servicios web descritos arriba:
/index.html
: Lista todos los recursos de la colección quotations.
/post.html
: Solicita al usuario los datos para crear un nuevo recurso de la colección quotations.
/cowsay.html
: Muestra un recurso al azar de la colección quotations.