paint-brush
Un tutorial para implementar la aplicación Node.Js en el servidor Nginxpor@sarrahpitaliya
107,426 lecturas
107,426 lecturas

Un tutorial para implementar la aplicación Node.Js en el servidor Nginx

por Sarrah Pitaliya9m2022/02/08
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow
ES

Demasiado Largo; Para Leer

Al usar tecnologías basadas en la nube, puede implementar una aplicación de diferentes maneras. Si contrata a desarrolladores experimentados de Node.Js, es posible que aseguren muchos servicios como Microsoft Azure, Google Cloud o AWS para alojar su aplicación web. Además, usted y su equipo pueden usar servicios PaaS como Heroku para una implementación rápida y sencilla. En esta guía, explicaré paso a paso el proceso de implementación de su primera aplicación Node.J en un servidor Linux simple en la nube. Es difícil encontrar la configuración y la pila de tecnologías correctas.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Un tutorial para implementar la aplicación Node.Js en el servidor Nginx
Sarrah Pitaliya HackerNoon profile picture

¡¡Uf!!

Has trabajado duro y has puesto todo el esfuerzo en crear una aplicación Node.Js de ensueño para tu proyecto. Después de numerosas horas de codificación y depuración, finalmente ha llegado a un producto final. Ahora ha llegado el momento de lanzar su producto al mercado donde cualquiera pueda verlo y usarlo. ¡¡Yuppie!!

Emocionado, ¿no es así?

En esta guía, explicaré paso a paso el proceso de implementación de su primera aplicación Node.Js en el servidor.

Entonces, ¡comencemos ahora!

Empezando

Bueno, al usar tecnologías basadas en la nube, puede implementar una aplicación de diferentes maneras. Si contrata a desarrolladores experimentados de NodeJs , es posible que aseguren muchos servicios como Microsoft Azure, Google Cloud o AWS para alojar su aplicación web. Además, usted y su equipo pueden usar servicios PaaS como Heroku para una implementación rápida y sencilla.

Además, implementar su aplicación Node.Js en un servidor Linux simple en la nube es difícil de encontrar la configuración y la pila de tecnologías correctas que cumplan con sus expectativas.

Hay muchos servidores privados virtuales: VPS que puede encontrar en diferentes plataformas confiables. Pero, aquí, vamos a utilizar Hostinger, ya que es rentable y fácil de configurar con diferentes complementos.

Aquí, estoy usando la última versión de Ubuntu: 20.04.

Por lo tanto, siga los pasos necesarios para implementar su aplicación Node.Js en un servidor básico.

  • Configuración de DBMS: aquí, usaremos MySQL (según los requisitos de la aplicación)
  • Configure un proxy inverso: para volver a visitar las solicitudes HTTP a nuestro servidor interno de Node.Js, usaremos Nginx .
  • Instalar Nodo y NPM.
  • Instale PM2 Node.Js Process Manager.
  • Desde el control de versiones, presiona/clona tu código.
  • Configure el proxy inverso y ejecute un servidor local.

Siga los pasos anteriores para acceder a la IP o nombre de dominio de su servidor en el PUERTO 80 a través de su aplicación Node.Js. Además, como puerto predeterminado, el 80 se considera para servir HTTP.

Ahora, debe tener un SSH en su servidor mientras usa Hostinger. Podrá ver la dirección IP del servidor en el lado derecho. Puede mantener SSH como root.


 ssh root@ 42.35 .40 .01

Desde Hostinger Cpanel, puedes cambiar la contraseña de SSH.

Instalar base de datos MySQL

Su proceso de instalación es el mismo que el de otros paquetes de Debian (Ubuntu) en todo el apt.

 sudo apt update sudo apt install mysql-server

Cuando ejecuta el script de configuración, debe asegurarse de haber aceptado todos los permisos necesarios del servidor. Ahora configure el servidor MySQL Deamon. Brindará seguridad estricta en un entorno listo para la producción.

 sudo mysql_secure_installation

Después de dar un comando al servidor, puede cambiar algunas de las opciones de seguridad de MySQL.

Sin embargo, debe configurar el complemento Validar contraseña en la primera ventana. De esta manera, puede verificar la seguridad de su contraseña de MySQL.

Para la segunda ventana, debe configurar la contraseña de usuario root de MySQL.

Una vez que haya terminado con la ventana, deberá presionar Y e Intro para aceptar los valores predeterminados para todas las preguntas posteriores.

Ahora, ningún usuario anónimo puede atravesarlo. Además, también deshabilitará los inicios de sesión raíz remotos, borrará la base de datos de prueba e integrará estas nuevas reglas. MySQL se adaptará a los cambios inmediatamente.

No olvide verificar si el servidor MySQL se está ejecutando o no con el comando dado.

 systemctl status mysql

Si ve un estado Activo o en ejecución, esto significa que su servidor se inició correctamente sin ningún problema.

Ahora, conecte el servidor con el cliente MySQL.

 mysql -u root

¡Guau!

Ahora, hemos configurado con éxito el servidor de la base de datos sin ningún error.

 mysql quit

Proxy inverso Nginx

Aquí, usamos el proxy inverso Nginx para recibir múltiples solicitudes de clientes y enviarlas a diferentes servidores. Usaremos el servidor Nodejs aquí.

Según mi experiencia, Nginx es un servidor HTTP sorprendente y confiable. Se usa comúnmente para servir archivos HTML estáticos y proxy inverso.

Proporciona acceso interno a un servidor oa aquellos recursos que están detrás de un firewall.

Aquí, en nuestro caso, ejecutaremos la aplicación NodeJs en el puerto 3000 detrás de un firewall. Solo a través de localhost, podemos acceder a él. Ahora, vincule el proxy inverso de Nginx al puerto 80, disponible para el público. Luego, puede servir al servidor localhost Nodejs.

Ahora es el momento de instalar Nginx.

 sudo apt update sudo apt install nginx

Ahora, apache2 está instalado con Hostinger. Está completamente configurado para el servidor HTTP en el PUERTO 80. Por lo tanto, tenemos que deshabilitar apache2 de nuestro servidor.

 sudo apt-get remove apache2*

Después de usar el comando, todos los paquetes y subpaquetes de apache2 no estarán disponibles.

Ahora configure su servidor Nginx con una simple página web de prueba.

Pero antes de continuar, debemos instalar un firewall para proteger nuestro servidor.

Entonces, instalemos ufw (cortafuegos sin complicaciones).

 sudo apt install ufw

Para acceder a su servidor en el futuro, debe asegurarse de que todas las conexiones SSH pasen solo a través del firewall.

 ufw allow ssh

Debe escribir un código determinado para verificar qué aplicación de red está disponible y tiene acceso a través del firewall.

 ufw app list > Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
  • Nginx Full: abre el puerto 80 (tráfico web normal y sin cifrar) y el puerto 443 (tráfico cifrado con TLS/SSL)
  • Nginx HTTP: abre solo el puerto 80
  • Nginx HTTPS: abre solo el puerto 443

Como necesitamos HTTP a través de ufw, permitamos Nginx.

Permita Nginx HTTPS o Nginx Full.

 sudo ufw allow 'Nginx HTTP'
> Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Si puede ver Permitir en el cuadro de acción de OpenSSH y Nginx HTTP, está en el camino correcto.

Como podemos suponer, también es compatible con el protocolo IPV6.

Con un código escrito a continuación, verifique el estado de Nginx.

 sudo systemctl status nginx

Mantenga activo el estado de Nginx. Si no se ha iniciado automáticamente, hágalo manualmente.

 sudo systemctl start nginx

Después de completar esto, tenemos que configurar Nginx Server Block. Desde nuestros servidores dados o múltiples dominios independientes, puede servir subdominios.

  • Dirección de configuración de Nginx: /etc/nginx/
  • Dirección raíz del servidor principal de Nginx : /var/www/

Ahora, vamos a crear la dirección IP principal o la raíz de la página de servicio del dominio.

 sudo mkdir -p / var /www/servername.com/html

Asegúrese de que el permiso de la raíz web sea correcto con el código proporcionado.

 sudo chmod -R 755 / var /www/servername.com

Aquí, -R (recursivo) definirá todos los subdirectorios servername.com que tienen el mismo permiso que el directorio principal.

Luego, escribe un código dado. Este código asignará la propiedad del directorio que tiene el usuario existente llamado variable de entorno $USER:

 sudo chown -R $USER:$USER / var /www/example.com/html

Ahora, hagamos una página web index.html simple con fines de prueba. Luego integre el proxy del servidor Nginx a nuestro host local que ejecuta la aplicación NodeJs.

 nano / var /www/servername.com/html/index.html

Escriba el código HTML que se indica a continuación en el interior.

 <html>     < head > 
        < title > Welcome to servername.com! </ title > 
    </ head > 
    < body > 
        < h1 > 

Success! The servername.com server block is working successfully!
        </ h1 > 
        
 < b > Meow Meow! </ b > 
 
    </ body > 
</html>

Ahora cierre el editor de texto Nano después de guardar.

Además, debemos agregar la configuración en /etc/nginx/sites-disponible para que Nginx sirva este contenido.

 sudo nano /etc/nginx/sites-available/servername.com

Debe mantener el archivo de configuración igual que su nombre de dominio para que sea fácil de mantener.

Para una configuración simple de Nginx, aquí está el código.

 server { listen 80 ; listen [::]: 80 ; root / var /www/servername.com/html; index index.html index.htm index.nginx-debian.html; #Here, you can put your domain name for ex: www.servername.com server_name 42.35 .40 .01 ; location / { try_files $uri $uri/ = 404 ; } }

/etc/nginx/sites-disponible solo está disponible para almacenar su configuración. Si tiene que activarlo, cree un enlace a la configuración del directorio habilitado para sitios para ver el efecto en el servidor.

 sudo ln -s /etc/nginx/sites-available/servername.com /etc/nginx/sites-enabled/

Si desea verificar los errores en la nueva configuración de agregar, ejecute el siguiente código.

 nginx -t

Ahora, reinicie Nginx para la nueva configuración para la modificación.

 sudo systemctl restart nginx

Ahora, intente buscar la dirección de la IP del servidor o el nombre de dominio. Podrá ver la página de prueba de la página web de muestra que se le devolvió. Entonces, el servidor Nginx se está ejecutando correctamente detrás del firewall ufw.

Instalar nodo

Aquí, usaremos NVM , que puede descargar desde GitHub . En general, puede instalar Node desde el administrador de paquetes apt, pero no le permitirá instalar la última versión.

 sudo apt install wget wget -qO-https: //raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

Considerará el script install.sh y lo ejecutará con bash para instalar NVM.

Para aplicar cambios en el entorno, debe ejecutar .profile o .bashrc desde su carpeta de inicio. Y esto depende completamente de sus requisitos y configuración.

 source ~/.bashrc source ~/.profile

Ahora ejecute el comando nvm . Funcionará como un encanto.

 nvm -v 0.34

Ahora instale Node y NPM usando NVM con el siguiente código.

 nvm install 11.0

Luego, los comandos Node y NPM estarán disponibles en la línea de comandos.

 node -v 11.0

Instale PM2 y Cloning Repo

PM2 es un administrador de procesos de NodeJs. Realiza un seguimiento de su proceso de Nodo en ejecución para facilitar la depuración. Además, muestra los archivos de registro de las aplicaciones en ejecución.

Vamos a instalarlo.

 npm install pm2 -g

Es muy fácil de instalar, como el proceso PM2.

Ahora, existe un requisito del código de la aplicación Node.Js en el servidor. Entonces, usaremos Git Version Control para enviar y luego clonar el repositorio.

 git add . git commit -m "Initial Commit" 
git remote add origin "https://github.com/username/your_repo" 
git push origin master

Ahora clone el repositorio con el código dado.

 mkdir repos cd repos git clone https: //github.com/username/your_repo

Suponga que el marco se basa en un servidor Node.Js o Express simple con app.js, entonces necesita usar PM2 para iniciar el proceso.

 cd /repos/your_repo

Utilice PM2 ahora.

 pm2 start server app.js

Aquí, usaremos la instancia de app.js con PM2. Lo llamamos "servidor" para que podamos identificar fácilmente nuestra aplicación.

Una vez que haya terminado con este proceso, obtendrá una tabla que muestra las aplicaciones en ejecución/detenidas y el uso de la CPU.

Configurar proxy inverso

La configuración de Nginx ya está agregada con una página index.html simple.

Ahora vincúlelo a una dirección localhost, que representa la dirección de la aplicación NodeJs en ejecución existente.

Aquí es donde un Nginx toma su lugar para un proxy inverso.

Ahora abra la configuración de servername.com y realice los cambios esenciales para que funcione como un proxy inverso.

 server { listen 80 ; server_name 42.35 .40 .01 ; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX- Proxy true ; proxy_pass http: //localhost:3000/;
 proxy_redirect http: //localhost:3000/ https://$server_name/;
 } }

Una vez que implemente el código anterior, todas sus preguntas de Nginx se redirigirán a http://localhost:3000 . Y ese es el lugar donde encontrará el servidor NodeJs ejecutándose.

Ahora cambie el host y el puerto de su aplicación NodeJs existente.

Los encabezados personalizados proporcionados se enviarán con la solicitud de proxy a nuestros servidores NodeJs: $remote_addr y $host. Estos representan la dirección IP real de aquellos usuarios que realizaron las solicitudes inicialmente.

Finalmente, todo está cubierto y la configuración está completa.

Puede acceder a la dirección IP o el nombre de dominio de su servidor en el navegador donde el servidor NodeJs maneja la solicitud. ¿No es genial? jaja!!

De todos modos, es genial usar un proxy inverso y el puerto 3000 (puerto del servidor NodeJs). Sin embargo, esto asegura su servidor web o aplicación.

¡Golpear!

Ha implementado una aplicación NodeJs en el servidor.

Además, si planea desarrollar una aplicación NodeJs rica en funciones, siempre puede tener a su lado una empresa de desarrollo de NodeJs con experiencia . Eso te ayudaría a liderar el mundo con tus ideas y sus ejecuciones.