La pila MERN es una configuración con MongoDB, Express, React y Node.js. Esta es una de las variantes de MEAN stack. MongoDB es la base de datos, Express con Node.js se usa para el backend que se comunica con la base de datos, React es el lado del cliente o frontend. Usaremos el proxy inverso Nginx para el servidor Node.js y configuraremos Let'sEncrypt SSL.
En esta guía, aprenderá cómo configurar la pila MERN en su servidor Ubuntu 20.04.
Esta configuración se prueba en Google Cloud, por lo que debería funcionar bien en otros VPS, servidores en la nube que ejecutan Ubuntu 20.04 o Ubuntu 18.04.
Requisitos
- Un servidor Ubuntu con acceso sudo.
- Un nombre de dominio dirigido a su servidor.
Índice
- Instalar MongoDB.
- Configurar MongoDB.
- Instalar Node.js con NVM.
- Instalar React.js.
- Instala Express.js.
- Configure PM2 para ejecutar Node.js en el backend.
- Instala Nginx y configúralo.
- Instala Let'sEncrypt SSL.
Configuración inicial del servidor
Comience por actualizar los paquetes del servidor a la última versión disponible.
sudo apt update sudo apt dist-upgrade -y
Ahora puede proceder a configurar la pila MERN.
Instalar MongoDB
Aquí instalaremos MongoDB Community Edition con LTS usando el apt
paquete gestionado. La última versión actual de MongoDB en el momento de este artículo es 5.0.5.
Es posible que deba instalar gnupg
para importar la clave.
sudo apt install gnupg
Importa la clave pública usando el siguiente comando.
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
Agregue el repositorio de MongoDB a la lista de fuentes.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Actualice los paquetes e instale MongoDB.
sudo apt update sudo apt install -y mongodb-org
Una vez completada la instalación, habilite MongoDB para que se inicie al iniciar el sistema.
sudo systemctl enable mongod
Inicie el servidor MongoDB.
sudo service mongod start
Puede ver el estado con el siguiente comando.
sudo service mongod status Output ● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-01-16 22:08:26 UTC; 7h ago Docs: https://docs.mongodb.org/manual Main PID: 1942 (mongod) Memory: 164.5M CGroup: /system.slice/mongod.service └─1942 /usr/bin/mongod --config /etc/mongod.conf Jan 16 22:08:26 staging systemd[1]: Started MongoDB Database Server.
Configurar MongoDB
Ahora podemos asegurar MongoDB, configurar MongoDB para aceptar conexiones remotas y también crear una nueva base de datos.
MongoDB seguro
Edite el archivo de configuración de MongoDB.
sudo nano /etc/mongod.conf
Desplácese hacia abajo hasta la sección de seguridad #security
y descoméntelo y habilite la autorización. La edición final debería verse como se muestra a continuación.
security: authorization: enabled
Habilitar conexiones remotas
Para habilitar las conexiones remotas, debe editar el mismo archivo y agregar su IP interna o privada a las interfaces de red. Su configuración debería parecerse a la siguiente.
net: port: 27017 bindIp: 127.0.0.1,10.128.10.1
Reemplace 10.128.10.1 con su dirección IP.
Abra el firewall, si lo hay, para el puerto 27017.
Reinicie MongoDB.
sudo systemctl restart mongod
Confirme si MongoDB permite conexiones remotas usando el siguiente comando.
sudo lsof -i | grep mongo
Debería recibir un resultado similar al siguiente.
mongod 1942 mongodb 11u IPv4 31550 0t0 TCP instance_name.c.project_id.internal:27017 (LISTEN)
mongod 1942 mongodb 12u IPv4 31551 0t0 TCP localhost:27017 (LISTEN)
Crear usuario administrador de MongoDB
Conéctese al shell MongoDB usando mongosh
comando.
mongosh
Cambiar a la base de datos de administración.
use admin
Cree un usuario administrador con todos los privilegios y contraseña de configuración.
db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}]})
Introduzca la contraseña cuando se le solicite.
Introduce exit
para salir del caparazón.
Ahora puede usar la siguiente cadena de conexión para conectarse a MongoDB.
mongodb://admin:password@External-IP:27017/database
Instalar Node.js con NVM
Usaremos Node Version Manager (NVM) para instalar Node.js. Con esto, puede cambiar fácilmente entre diferentes versiones de Node.js.
Descargue y ejecute el script de instalación de NVM usando wget
.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Ahora cargue el comando nvm en la sesión de shell actual.
source ~/.bashrc
Para enumerar todas las versiones disponibles de Node.js, puede usar el siguiente comando.
nvm ls-remote
Instale la versión de Node.js que necesita con la siguiente sintaxis.
nvm install v16.13.2
Una vez instalado, puede consultar las versiones de Node.js y NPM.
node -v v16.13.2 npm -v 6.14.13
Instalar React.js
Instale y cree la interfaz React.js usando npx
comando.
Navegue a la carpeta donde desea instalar la aplicación React y ejecute el siguiente comando.
npx create-react-app frontend
Esto tomará algún tiempo para instalar todos los paquetes de React. Una vez que se complete la instalación, verá un frontend
carpeta creada con todos los scripts básicos de React.
Navegue al directorio frontend y active la compilación usando npm
.
cd frontend npm run build
Esto creará una salida estática con archivos HTML, CSS y JS para su interfaz.
Puede apuntar su servidor web Nginx a este directorio de compilación para servir su interfaz.
Instalar Express.js
Instale la generación expresa usando el npx
comando.
npx express-generator
Una vez que se complete la instalación, cree su aplicación de back-end usando express
comando.
cd ~/ express backend
Ahora debería crearse su Express. Puede instalar todos los módulos de nodo e iniciar el servidor Express utilizando PM2 en segundo plano, como se menciona en la sección a continuación.
cd backend npm install
Conviértase en un desarrollador web completo con especialización en React . Curso completo de desarrollo web
Configurar PM2 para ejecutar Node.js en segundo plano
PM2 es un administrador de procesos de nodos que es muy útil para iniciar servidores de nodos en segundo plano.
Navegue a su aplicación Express y ejecute el siguiente comando.
cd ~/backend pm2 start npm --name "backend" -- start
Ahora su servidor Express se inicia en segundo plano y escucha en el puerto 3000.
Configure PM2 para iniciar la aplicación Express al inicio.
pm2 startup
Se le proporcionará un comando largo para ejecutar. Una vez que se ejecuta el comando, puede guardar la configuración.
pm2 save
A continuación, puede configurar el proxy inverso de Nginx a través de este puerto en un subdominio o una subcarpeta según su deseo.
Instalar Nginx y configurarlo
Nginx es uno de los mejores servidores web para trabajar con aplicaciones basadas en Node.js.
Instala Nginx.
sudo apt install nginx
Eliminar configuraciones predeterminadas
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nginx/sites-enabled/default
Crear nueva configuración de Nginx
sudo nano /etc/nginx/sites-available/application.conf
Pega lo siguiente. En esta configuración, estamos apuntando la ruta del dominio principal al directorio de salida de compilación de la aplicación React.js y el /api
ruta para la aplicación Express.js.
server { listen [::]:80; listen 80; server_name domainname.com www.domainname.com; root /home/cloudbooklet/backend/build/; index index.html; location / { try_files $uri $uri/ =404; } location /api/ { proxy_pass http://127.0.0.1:3001; proxy_http_version 1.1; proxy_set_header Connection ''; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; } }
Guarde y salga del archivo.
Habilite su configuración creando un enlace simbólico.
sudo ln -s /etc/nginx/sites-available/application.conf /etc/nginx/sites-enabled/application.conf
Verifique su configuración de Nginx y reinicie Nginx
sudo nginx -t sudo service nginx restart
Instalar Let'sEncrypt SSL
Podemos usar Certbot para instalar el certificado SSL Let's Encrypt gratuito para su dominio.
sudo apt install python3-certbot-nginx
Ejecute el siguiente comando para instalar el certificado y configurar el redireccionamiento a HTTPS automáticamente.
sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com
Ahora debería recibir el certificado SSL y se configurará automáticamente.
Configurar la renovación automática.
sudo certbot renew --dry-run
Ahora puede buscar su dominio en su navegador para ver el resultado.
Conclusión
Ahora ha aprendido a instalar y configurar la pila MERN en Ubuntu 20.04.
Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.