GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar MERN Stack con Nginx en Debian 11

Cómo instalar la pila MERN con Nginx en Debian 11. 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 Debian 11.

Esta configuración se prueba en Google Cloud, por lo que debería funcionar bien en otros VPS, servidores en la nube que ejecutan Debian 11.

Requisitos

  • Un servidor Debian 11 con acceso sudo.
  • Un nombre de dominio dirigido a su servidor.

Tabla de contenido

  1. Instalar MongoDB.
  2. Configurar MongoDB.
  3. Instalar Node.js con NVM.
  4. Instalar React.js.
  5. Instala Express.js.
  6. Configure PM2 para ejecutar Node.js en el backend.
  7. Instala Nginx y configúralo.
  8. 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. Usaremos el repositorio de buster porque al momento de escribir este artículo, MongoDB Community Edition no tiene un repositorio separado para Debian Bullseye.

El repositorio Buster está en desarrollo activo y es compatible con Bullseye.

echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | 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 Fri 2022-02-18 09:11:56 UTC; 3m 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

Feb 18 09:11:56 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 Debian 11.

Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.


Linux
  1. Cómo instalar MongoDB 4.4 / 4.2 en Debian 9

  2. Cómo instalar Nginx en Debian 8 (Jessie)

  3. Cómo instalar y configurar MERN Stack con Nginx en Ubuntu 20.04

  4. Cómo instalar MongoDB en Debian 11

  5. Cómo instalar MERN Stack con Nginx en Debian 11

Cómo instalar la pila LEMP en Debian 10

Cómo instalar Nginx con PHP-FPM en Debian 10

Cómo instalar WordPress con LEMP Stack en Debian 11 Bullseye

Cómo instalar la pila LEMP en Debian 11

Cómo instalar MongoDB en Debian 11

Cómo instalar la pila ELK en Debian 8