Bases del sistema operativo

1

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

2

Distribuciones más utilizadas de Linux

3

Instalación de Ubuntu Server

4

Instrucciones para instalar CentOS

5

Gestión del árbol de directorios

6

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

7

Interacción con archivos y permisos

8

Conociendo las terminales en linux

9

Manejo y monitoreo de procesos y recursos del sistema

10

Monitoreo de recursos del sistema

Instalación y manejo de software en Linux

11

Análisis de los parámetros de red

12

Administración de paquetes acorde a la distribución

13

Manejo de paquetes en sistemas basados en Debian

14

Administración de software con YUM y RPM para CentOS

15

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

Administración de usuarios

16

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

17

Creando y manejando cuentas de usuario en el sistema operativo

18

Entendiendo la membresía de los grupos

19

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

20

Autenticación de clientes y servidores sobre SSH

21

Configurando DNS con bind

22

Arranque, detención y recarga de servicios

23

NGINX y Apache en Ubuntu server

24

Instalación y configuración de NGINX

25

¿Qué es NGINX Amplify?

26

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

27

Monitoreo de MySQL con Nagios

28

Configuración de Nagios

29

Los logs, nuestros mejores amigos

30

Otros servicios de logs

Bash scripting

31

Las bases de bash

32

Las variables y su entorno de ejecución

33

Automatizando tareas desde la terminal

34

Automatizando la copia de seguridad

35

Crontab

Asegurando tu servidor

36

Entendiendo la gestión de vulnerabilidades

37

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

38

El firewall y sus reglas

39

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

40

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

41

Configuración de Node.js en un ambiente productivo

42

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

Bonus: Linux en Azure

43

Aprende sobre Linux en Azure

44

Despliegue de una aplicación web MEAN

45

Crea una máquina virtual en la nube de Azure

Conclusiones

46

Lo que aprendiste sobre servidores linux

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

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

42/46
Recursos

Aportes 39

Preguntas 19

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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

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

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

Reto Completado! y en AWS.

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.

Listo node… 😃

Funcionando desde GoogleCloud!

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

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.

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

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

WE ARE THE CHAMPIONS MAI FREEN

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 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

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

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

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

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

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

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