Cómo implementar aplicaciones Node.js en Ubuntu usando pm2 y Nginx
Ubuntu 16.04 - 64 bits
Permisos de root
Paso 1: instalar Node.js LTS
En esta guía, comenzaremos nuestro experimento desde cero. Primero, necesitamos instalar Node.js en el servidor. Usaré la versión Nodejs LTS 6.x, que se puede instalar desde el repositorio de nodesource.
Instale el paquete python-software-properties desde el repositorio de Ubuntu y agregue el repositorio Nodejs "nodesource".
sudo apt-get install -y python-software-properties
curl -sL /setup_6.x | sudo -E bash -
Instala la última versión Nodejs LTS:
sudo apt-get install -y nodejs
Una vez completada la instalación, verifique las versiones de nodo y npm.
node -v
npm -v
Paso 2: generar la aplicación de muestra Express
Usaré el paquete express-generator Genere un marco de aplicación web simple para una instalación de muestra. express-generator se puede instalar usando el comando npm.
Utilice npm para instalar express-generator:
npm install express-generator -g
-g: instala el paquete de software dentro del sistema.
Ejecutaría la aplicación como un usuario normal, no como root o superusuario. Primero necesitamos crear un nuevo usuario.
Cree un usuario llamado yume:
useradd -m -s /bin/bash yume
passwd yume
Utilice el comando su para inicie sesión con el nuevo usuario:
su - yume
A continuación, use el comando express para generar una nueva aplicación web simple:
express hakase-app< El comando /p>
creará un nuevo directorio de proyecto hakase-app.
Vaya al directorio del proyecto e instale todas las dependencias requeridas por la aplicación.
cd hakase-app
npm install
Luego prueba e inicia una nueva aplicación simple con el siguiente comando:
DEBUG =myapp :* npm start
De forma predeterminada, nuestra aplicación express se ejecutará en el puerto 3000. Ahora acceda a la dirección IP del servidor: 192.168.33.10:3000:
Este sencillo marco de aplicación web ahora se ejecuta en el puerto 3000 como usuario 'yume'.
Paso 3: instalar pm2
pm2 es un paquete de software de nodo que se puede instalar usando el comando npm. (Utilice privilegios de root, si todavía está conectado como usuario yume, ejecute el comando exit para volver a ser root):
npm install pm2 -g
Ahora podemos configurar el configuración para nuestra aplicación web Utilice pm2.
Ingresa al directorio de la aplicación hakase-app:
su - yume
cd ~/hakase-app/
Aquí puedes ver Un archivo llamado package.json, use el comando cat para mostrar su contenido.
cat package.json
Puedes ver que la línea de inicio tiene un comando nodejs para iniciar la aplicación express. Usaremos este comando con el administrador de procesos pm2.
Utilice el comando pm2 para ejecutar la aplicación express así:
pm2 start ./bin/www
Ahora puede ver el resultado así:
Nuestra aplicación express se ejecuta en pm2, con el nombre www y id 0. Puede utilizar la opción show show nodeid|name para obtener más información sobre las aplicaciones que se ejecutan en pm2.
pm2 show www
Si desea ver los registros de nuestra aplicación, puede utilizar la opción de registros. Incluye registros de acceso y errores, y también puede ver el estado HTTP de su aplicación.
pm2 logs www
Puedes ver nuestro programa en ejecución. Ahora, hagamos que se inicie automáticamente al arrancar.
sistema de inicio pm2
systemd: Ubuntu 16 usa systemd.
Verás un mensaje para ejecutar el comando como usuario root. Utilice el comando de salida para volver a la raíz y ejecutar el comando.
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 inicio systemd -u yume --hp /home/yume
it Se genera un archivo de configuración systemd para la aplicación de inicio. Cuando reinicie el servidor, la aplicación se ejecutará automáticamente.
Paso 4: Instalar y configurar Nginx como proxy inverso
En esta guía, usaremos Nginx como proxy inverso para aplicaciones de nodo. Nginx está disponible en el repositorio de Ubuntu. Utilice el comando apt para instalarlo:
sudo apt-get install -y nginx
El siguiente paso, vaya al directorio de sitios disponibles y cree. un nuevo documento de configuración de host virtual.
cd /etc/nginx/sites-available/
vim hakase-app
Pegue la siguiente configuración:
upstream hakase- aplicación {
# Aplicación Nodejs upstream
servidor 127.0.0.1:3000;
keepalive 64;
}
# Servidor en el puerto 80
servidor {
escucha 80;
nombre_servidor hakase-node.co;
raíz /home /yume/hakase-app;
ubicación / {
# configuración de Proxy_pass
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Actualizar $http_upgrade;
proxy_set_header Conexión "actualización";
proxy_max_temp_file_size 0;
proxy_pass http://hakase-app/;
proxy_redirect desactivado;
proxy_read_timeout 240s;
}
}
Guarde el archivo y salga de vim.
En la configuración:
La aplicación del nodo se ejecuta utilizando el nombre de dominio hakase-node.co.
Todo el tráfico de nginx se reenviará a la aplicación del nodo que se ejecuta en el puerto 3000.
Pruebe la configuración de Nginx para asegurarse de que no haya errores.
nginx -t
Habilite Nginx y haga que se inicie automáticamente en el arranque.
systemctl start nginx
systemctl enable nginx
Paso 5 - Prueba
Abra su navegador web y acceda al nombre de dominio (I is ): http://hakase-app.co.
Puedes ver que la aplicación express se está ejecutando en el servidor web Nginx.
El siguiente paso, reinicia tu servidor para asegurarte de que tu aplicación de nodo pueda iniciarse automáticamente en el arranque:
pm2 save
sudo reboot
Si vuelve a iniciar sesión en su servidor, verifique el proceso de la aplicación del nodo. Ejecute el siguiente comando como usuario yume.
su - yume
estado pm2 www