Bases del sistema operativo

1

Aviso de renovación del curso

2

Lo que aprenderás sobre la administración de servidores linux

3

Distribuciones más utilizadas de Linux

4

Instalación de Ubuntu Server

5

Instrucciones para instalar CentOS

6

Gestión del árbol de directorios

7

Diferencias entre LESS, CAT, HEAD y TAIL para lectura de archivos

8

Interacción con archivos y permisos

9

Conociendo las terminales en linux

10

Manejo y monitoreo de procesos y recursos del sistema

11

Monitoreo de recursos del sistema

Instalación y manejo de software en Linux

12

Análisis de los parámetros de red

13

Administración de paquetes acorde a la distribución

14

Manejo de paquetes en sistemas basados en Debian

15

Administración de software con YUM y RPM para CentOS

16

Nagios: Desempaquetado, descompresión, compilación e instalación de paquetes

Administración de usuarios

17

Los usuarios, una tarea vital en el proceso de administración del sistema operativo

18

Creando y manejando cuentas de usuario en el sistema operativo

19

Entendiendo la membresía de los grupos

20

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

21

Autenticación de clientes y servidores sobre SSH

22

Configurando DNS con bind

23

Arranque, detención y recarga de servicios

24

NGINX y Apache en Ubuntu server

25

Instalación y configuración de NGINX

26

¿Qué es NGINX Amplify?

27

NGINX Amplify: Instalación y configuración de un servidor para producción

28

Monitoreo de MySQL con Nagios

29

Configuración de Nagios

30

Los logs, nuestros mejores amigos

31

Otros servicios de logs

Bash scripting

32

Las bases de bash

33

Las variables y su entorno de ejecución

34

Automatizando tareas desde la terminal

35

Automatizando la copia de seguridad

36

Crontab

Asegurando tu servidor

37

Entendiendo la gestión de vulnerabilidades

38

¿Qué es una superficie de ataque? Principio del menor privilegio

39

El firewall y sus reglas

40

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

41

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

42

Configuración de Node.js en un ambiente productivo

43

Configuración de NGINX para la aplicación de Node.js

Bonus: Linux en Azure

44

Aprende sobre Linux en Azure

45

Despliegue de una aplicación web MEAN

46

Crea una máquina virtual en la nube de Azure

Conclusiones

47

Lo que aprendiste sobre servidores linux

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

1D
0H
51M
9S

Configuración de NGINX para la aplicación de Node.js

43/47
Recursos

Aportes 43

Preguntas 23

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

RESUMEN DE LA CLASE
|
Configuración de NGINX para la aplicación de Node.js
|
|
Instrucciones
|

  • Cambiar el usuario a nodejs
sudo su - nodejs
  • Clonar el repositorio necesario para la clase
git clone https://github.com/edisoncast/linux-platzi
  • Cambiar el nombre a la carpeta de linux-platzi a server
  • Corregir los errores en el archivo de configuración del servicio en /lib/systemd/system/[email protected]
  • Iniciar el servicio (debemos estar en la carpeta /server/configuracion_servidor/bash)
./enable.sh
./start.sh
  • Iniciar el servicio de Nginx (Apagar antes Apache si es necesario)
sudo systemctl start nginx
  • Una vez en la carpeta /etc/nginx/sites-available/ eliminar el contenido de la configuración de Nginx
sudo truncate -s0 default
  • Editar el archivo de configuración
sudo vim default

# Una vez en el archivo, escribir lo siguiente

server  {
	listen 80 default_server;
	listen [::]:80 default_server;
	
	server_name _;
	
	location / {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $host;
		proxy_http_version 1.1;
		proxy_pass http://backend;
	}
}

upstream backend {
	server 127.0.0.1:3000;
	server 127.0.0.1:3001;
	server 127.0.0.1:3002;
	server 127.0.0.1:3003;
}
  • Validamos que la configuración establecida fue correcta
sudo nginx -t
  • Reiniciamos nginx
sudo systemctl restart nginx
  • Probamos todo haciendo un curl a localhost
curl localhost

JSJSJS en el sudo systemctl status
le ponía siempre el [email protected] y siempre me decía que no se encontraba ese proceso y resulta que siempre fué [email protected] jsjsjsjsjsjs

Tuve varios problemas para hacer esta prueba y me faltaron algunos comandos que quizas a ustedes les puedan servir

Tuve que hacer el link

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/defatul 

para validar la configuraicón y releer el conf

nginx -s reload

para que no chocara el default available site con el config.d (edite el archivo y le cambie el puerto)

edite el archivo y guarde

sudo nano /etc/nginx/conf.d/stub_status.conf

reboot a nginx

Este proceso me parecio muy complicada la explicacion

Me quede con las ganas de montar el servidor a nivel publico y no solo de mi red local jajaja

Recopilando las soluciones de mis compañeros:


Hice lo siguiente y funciona

Configuración de Nginx

  • Accedo al directorio donde se encuentra
    el archivo default de configuración de Nginx
>cd /etc/nginx/sites-available/
  • Borro el contenido del archivo de configuración default
>sudo truncate -s0 default
  • Elimino el enlace simbólico existente
>sudo rm /etc/nginx/sites-enabled/default
  • Edito el archivo /etc/nginx/sites-available/default
>sudo vim  /etc/nginx/sites-available/default
  • Agrego las siguientes líneas
server {
	listen 80 default server;
	listen [::]:80 default_server;

	server_name _;
	location / {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $host;
		proxy_http_version 1.1;
		proxy_pass https://backend ;
		(Aquí coloqué https porque me marca
		un error de enlace no seguro en el post )
	}

upstream backend {
	server 127.0.0.1:3000:
	server 127.0.0.1:3001:
	server 127.0.0.1:3002:
	server 127.0.0.1:3003:
}
  • Verifico que la configuración esté correcta
>sudo nginx -t

Para que nginx pueda detectar los cambios
hay que “publicar” los cambios hechos en la carpeta sites-enabled

  • Crear el enlace simbólico
>sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/defatul 
  • Validar la configuración y releer el conf
>sudo nginx -s reload

Para que no interfiera el ‘default’ available site con el ‘config.d’
En clases anteriores creamos un archivo
que estaba escuchando al puerto 80
este interfiere con el archivo default
que acabamos de crear,
por ello es importante cambiarle el puerto
para que no interfiera

  • Edito el archivo y lo guardo
>sudo vim /etc/nginx/conf.d/stub_status.conf

Ejemplo:

Cambiar

listen 127.0.0.1;

por

listen 127.0.0.1:81;

Debe ser cualquier puerto que no se esté utilizando

  • Detengo e inicio Nginx.
  • Verifico que me redirija al backend.
>curl localhost

Falto poner que hay que cambiar el estado de los archivos a ejecutable con chmod +x, logre hacerlo funcionar por suerte

Reto Completado! y en AWS.

Al final pude

No me funciona del todo bien.
En el navegador me sale el mensaje ok.
“El servidor de platzi está corriendo con pid 24099 y en el puerto 3000”

Pero el resultado de curl localhost, me sale el código html de
/var/www/nginx/index.nginx-debian.html

Listo node… 😃

Sería bueno ver una app de node js corriendo al final de la clase, cuando yo traté de correr una falló. Además levanté server.js pero luego necesito ver como iniciar mi aplicación. Si saben de algún tutorial de esto apreciaria que lo compartan

Genial el curso, me gustaría profundizar mas en Nginx y Apache. Saludos.

[email protected] - NOT-FOUND [email protected]
Loaded: failed

Yo no he podido.

RESUMEN CLASE 42

Cambiar de usuario

$ sudo su - nodejs

Verficar que este en /home/nodejs

$ pwd

Descargar del repositorio

$ git clone https://github.com/edisoncast/linux-platzi

Verificar el script y cambiar el nombre de la carpeta linux-platzi a server

[Unit]
Description=Balanceo de carga para platzi
Documentation=https://github.com/edisoncast/linux-platzi
After=network.target

[Service]
Environment=PORT=%i
Type=simple
User=nodejs
WorkingDirectory=/home/nodejs/server
ExecStart=/usr/bin/node /home/nodejs/server/server.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

NOTA

Asignarle permisos de ejecucion

$ chmod +x enable.sh

$ chmod +x start.sh

$ chmod +x stop.sh

Iniciar servicios ir a /linux-platzi/configuracion_servidor/bash$

y ejecutar:

$ ./enable.sh
$ ./start.sh

Verificar los servicios con el siguiente comando.

No hacer click en ENTER sino hacer dos veces TAB para que nos muestre los servicos que se estan ejecutando:

[email protected] [email protected] [email protected]
[email protected] [email protected]

$ sudo systemctl status [email protected]

Ahora verificamos el servico especifico

$ sudo systemctl status platzi@3000.service

Para verificar si el servidor de platzi se esta ejecutando con normalidad

$ curl localhost:3000

Configuracion de nuestro archivo nginx

Antes verificamos que nginx se este ejecutando

$ sudo systemctl status nginx

$ sudo netstat -tulpn

$ sudo systemctl start nginx

Ahora si configuramos el archivo de nginx

$ sudo vi /etc/nginx/sites-available/default 

$ cd /etc/nginx/sites-available/

Verificamos los permisos

$ ls -l

Borramos el contenido del archivo

$ sudo truncate -s0 default

Nuevamente abrimos el archivo para agregar contenido

$ sudo vi default

Validamos el contenido en el archivo

$ sudo nginx -t

Volvemos a iniciar nginx

$ sudo systemctl stop nginx

$ sudo systemctl start nginx

$ sudo systemctl status nginx

Ahora

$ curl localhost

Nos muestra lo siguente:

En nuestro navegador nos dirigimos la IP de nuestro localhost, podemos ver la IP con:

$ ifconfig

En el navegador nos muestra que el servidor de platzi está corriendo con pid 5932 y en el puerto 3000

Y dónde quedó Apache en todo esto? 😂. Muy buen curso, aprendí bastante!

WE ARE THE CHAMPIONS MAI FREEN

Me paso que el puerto 3000 lo estaba usando, pero no sabia que servicio estaba corriendo por allí, el siguiente comando me ayudo a identificar el nombre del programa que lo estaba ejecutando, lo detuve y volví a correr [email protected]

sudo netstat -peanut

Funcionando desde GoogleCloud!

Para evitar confusion pudo haber evitado dar tanta vuelta y decir que el servicio es [email protected] y no solo .service, asi evitamos complicar la clase

Para los que quieran tener tanto apache2 como nginx correiendo pueden poner a escuchar a apache2 en el puerto 8080 y a NGINX en el puerto 80.

Esta peor explicado que un tutorial de youtube

No logré entender que hace el balanceador de cargar en este caso.

Este video fue un Completo EJEMPLO
de lo que pasa en el mundo real.

Les dejo el archivo /lib/systemd/system/[email protected] ya corregido

Es importante respetar los espacios entre los encabezados [Unit] ya que yo tenia errores por esto

[Unit]
Description=Balanceo de carga para platzi
Documentation=https://github.com/edisoncast/linux-platzi
After=network.target

[Service]
Environment=PORT=%i
Type=simple
User=nodejs
WorkingDirectory=/home/nodejs/server
ExecStart=/usr/bin/node /home/nodejs/server/server.js
Restart-on=failure

[Install]
WantedBy=multi-user.target

Tuve problemas para correr el servidor js, les recomiendo revisar el archivo de configuración por errores ortograficos, y cambiar en SERVICE la opcion de RESTART como:

Restart=on-failure

con todo esto pude correrlo sin errores.

Aunque si hemos seguido al pie de la letra el curso, en una de las clases de la mitad para atras, cambiamos puertos, para que corriera en uno apache y en otro nginx

genial curso me gustaría que profundizar los servidores y NGINIX

🦄Me estaba desesperando porque no podía hacer funcionar los scrips pero luego recordé que hay que darles permisos de ejecución Jaja

Muy buen curso!

Para que todo funcione bien los nombres a los usuarios y servicio s es mejor darle nombres propios que ustedes recuerden.

bash: ./enable.sh: Permiso denegado me pueden apoyar a correr el servicio por favor

para los que les dio error con el config file de nginx:

sudo apt-get remove --purge nginx nginx-full nginx-common

and sudo apt-get install nginx

Prueba completada en AWS EC2

Una solución un poco mas elegante es esto:

docker pull nginx:alpine

Documentacion: https://hub.docker.com/_/nginx?tab=description

Listo!

crear un reverse proxy con nginx con un Servicio de nodejs en ek backend

Funciono y es muy interesante esta configuración.

una muy buena explicaicon

Excelente. No sabia que era posible compartir puertos o por un mismo puerto poder configurarlo para correr varios proyectos. Excelente contenido.

Excelente

El servidor de platzi está corriendo con pid 67249 y en el puerto [email protected]:~$

genial muy genial gracias buen curso

Excelente clasee,la disfrute muchooo ver al final en el navegador la web por medio del proxy,gracias