Cuando haya terminado de escribir código para su sitio web o aplicación web, necesitará colocarlo en un lugar donde pueda ejecutarse y entregar contenido a sus usuarios. Aquí es donde entra en juego el software de servidor web. Una simple búsqueda en Google de software de servidor web le traerá una gran lista de soluciones para elegir.
En este tutorial, nos centramos en Nginx; y específicamente en cómo puede ejecutarlo en Ubuntu 18.04. Nginx es uno de los softwares de servidor web más populares del mundo. De hecho, ocupa un lugar entre los cinco primeros en Opensource.com clasificaciones. Es responsable de garantizar la disponibilidad y escalabilidad de los sitios de mayor tráfico en Internet. Garantiza la seguridad y puede usarlo como proxy inverso. Entonces, ¿cómo puedes instalar Nginx en Ubuntu 18.04?
Requisitos previos
Por supuesto, ya tiene un equipo que ejecuta Ubuntu 18.0.4; y tiene un usuario no root con privilegios sudo. Si no, diríjase a este enlace para descargar Ubuntu 18.0.4, luego siga las guías sobre la configuración inicial del servidor con Ubuntu para crear una cuenta que no sea root. Una vez que tenga una cuenta, debe iniciar sesión como usuario no root, y luego podemos continuar con los siguientes pasos.
Paso 1-Instalar Nginx
Ubuntu está basado en Debian. Para instalar paquetes deb desde la línea de comandos, puede usar comandos apt o dpkg. Usaremos el comando apt ya que es más popular. El comando Apt permite a los usuarios instalar paquetes que están disponibles en los repositorios predeterminados de la distribución Linux específica que están ejecutando. En este caso, tenemos Nginx disponible en los repositorios predeterminados de Ubuntu 18.04, por lo que podemos proceder. Como regla general, ahora y al instalar cualquier paquete en una distribución Linux, primero debe actualizar; ingrese el siguiente comando en el terminal a actualizar:
sudo apt update
Luego para instalar Nginx, ingrese el siguiente comando:
sudo apt install nginx
Siga las instrucciones y Nginx se instalará en su servidor junto con las dependencias necesarias.
Paso 2-Ajuste el cortafuegos
La herramienta de configuración de cortafuegos predeterminada para Ubuntu es UFW. UFW significa cortafuegos sin complicaciones y está desarrollado para facilitar la configuración del cortafuegos. De forma predeterminada, Nginx se registra como un servicio con UFW después de la instalación, lo que facilita la configuración de acceso a Nginx. En primer lugar, active la UFW, ingresando el siguiente comando:
sudo ufw enable
El siguiente comando muestra la configuración de la aplicación que UFW permite:
sudo ufw app list
Aquí es un screengrab de lo que el terminal podría ser así:
muestra 3 perfiles disponibles para Nginx. Se describen a continuación:
- Nginx Full-abre los puertos 80 y 443. El puerto 80 es para tráfico normal / no cifrado, es decir, http. El puerto 443 es para tráfico cifrado TLS / SSL. es decir, https.
- Nginx HTTP: abre solo el puerto 80.
- Nginx HTTPS: abre solo el puerto 443.
Como recomendación, solo debe habilitar el perfil que permitirá el tráfico que ha configurado para su aplicación web. En este caso, iremos con Nginx HTTP (puerto 80) ya que no hemos configurado SSL. El siguiente comando lo habilita:
sudo ufw allow 'Nginx HTTP'sudo ufw allow 'OpenSSH'
Para verificar el cambio, ingrese el siguiente comando:
sudo ufw status
Su terminal debería mostrar algo similar a la pantalla de abajo. Observe que el tráfico HTTP está permitido en todas partes:
Paso 3 – Comprobación de su servidor Web
Después de instalar Nginx en Ubuntu 18.04, el servicio se inicia automáticamente. Puede probar esto introduciendo el siguiente comando en su terminal:
systemctl status nginx
Su terminal debería mostrar algo como esto:
Esto muestra que el servicio se inicia automáticamente y que se está ejecutando. Como ya sabes, el propósito principal del software de servidor es servir contenido. Para probar este propósito, deberá solicitar una página. Puede hacer esto accediendo a la dirección IP de su servidor desde el navegador, que debería mostrar la página de destino predeterminada de Nginx. Si no conoce la dirección IP de su servidor, a continuación se muestran algunos comandos para ayudarlo a obtenerla:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
A continuación hay otro comando que puede usar. Le da la dirección IP pública como se ve desde ubicaciones en Internet:
curl -4 icanhazip.com
El primer comando le obtiene una dirección como se muestra en el terminal a continuación. A continuación, cópielo y pruébelo en su navegador:
Su navegador carga la página Nginx predeterminada que se parece a la siguiente captura de pantalla. Muestra que su servidor Nginx se está ejecutando:
Paso 4-Comandos básicos de administración de Nginx
Ya ha visto el comando que comprueba el estado de Nginx:
systemctl status nginx
Ahora que tenemos el servidor en funcionamiento, aquí hay algunos comandos más que debe tener a mano para administrar el servicio Nginx. Estos comandos funcionan no solo en Ubuntu 18.04, sino también en todas las distribuciones de Linux.
Para detener el servidor, ingrese el siguiente comando:
sudo systemctl stop nginx
Para iniciar el servidor, ingrese el siguiente comando:
sudo systemctl start nginx
Siempre que realice modificaciones significativas, como cambiar puertos o interfaces, debe reiniciar el servidor web. El siguiente comando reinicia el servidor:
sudo systemctl restart nginx
Siempre que realice cambios de configuración menores, como editar bloques de servidor, Nginx puede recargar sin soltar conexiones. Aquí está el comando para recargar:
sudo systemctl reload nginx
Nginx inicia automáticamente el servidor cuando se inicia su sistema operativo Ubuntu. Sin embargo, si desea cambiar esta configuración, puede deshabilitar el servicio ingresando el comando a continuación:
sudo systemctl disable nginx
Y puede volver a habilitar el servicio para que se inicie automáticamente la próxima vez que arranque su máquina ingresando:
sudo systemctl enable nginx
Paso 5-Configuración de bloques de servidor
Es posible que desee alojar varios sitios web (dominios) en un servidor web. Los bloques de servidor le ayudarían a lograr esto. Si ha usado Apache anteriormente, los bloques de servidor en Nginx se pueden comparar con los Vhost de Apache. Listo para usar, Nginx viene con un bloque de servidor configurado para ejecutarse desde el directorio /var/www/html, el que cargó la página de Nginx predeterminada en una sección anterior. Este bloque de servidor está bien cuando se ejecuta un solo sitio. Sin embargo, ejecutar muchos sitios será un problema.
Queremos crear otro sitio en el mismo servidor y llamarlo samplesite.com (esto es solo un ejemplo, debe reemplazarlo con su propio nombre de dominio).
Dentro del directorio /var/www/, cree otro directorio para samplesite.com. Deje el /var/www/html predeterminado para servir solicitudes que no coincidan con ningún otro sitio. El siguiente comando crea el directorio para samplesite.com como hemos descrito. El indicador-p es para asegurarse de que el comando crea los directorios principales necesarios:
sudo mkdir -p /var/www/samplesite.com/html
Para permitir el acceso al directorio, debe asignar la propiedad con la variable de entorno USER USER:
sudo chown -R $USER:$USER /var/www/samplesite.com/html
Para verificar que los permisos para sus raíces web son correctos, ingrese el siguiente comando:
sudo chmod -R 755 /var/www/samplesite.com
intenta crear un índice simple.html en el samplesite.com directorio. Puede abrir el editor nano como:
nano /var/www/samplesite.com/html/index.html
El comando abre un editor en su terminal, añadir el siguiente código:
<html><head><title>Welcome to samplesite.com!</title></head><body><h1>Success! The samplesite.com server block is running fine!</h1></body></html>
Escriba Ctrl + O, luego presione Entrar para guardar el archivo. Escriba Ctrl + X para cerrar el editor.
Después de eso, puede crear el bloque de servidor. En lugar de editar y desordenar el archivo de configuración predeterminado, se recomienda crear uno nuevo en /etc/nginx/sites-available/samplesite.com. Introduzca el siguiente comando para abrir el nano editor:
sudo nano /etc/nginx/sites-available/samplesite.com
En el editor, introduzca el siguiente código, modificado para el directorio que ha creado. Nota el nombre de la raíz y server_name coincide con nuestro directorio y el dominio que desea servir:
server { listen IP_ADDRESS:80; listen :80; root /var/www/samplesite.com/html; index index.html index.htm index.nginx-debian.html; server_name samplesite.com samplesite.com; location / { try_files $uri $uri/ =404; }}
a continuación, guarde y cierre el archivo.
Nginx lee los archivos de configuración del directorio habilitado para sitios, por lo que debe crear un enlace simbólico desde el nuevo bloque de servidor al directorio habilitado para sitios. El siguiente comando lo hará:
sudo ln -s /etc/nginx/sites-available/samplesite.com /etc/nginx/sites-enabled/
Ahora tiene dos bloques de servidor que pueden servir a dos sitios web en un servidor Nginx.
El siguiente comando responde a las solicitudes en los dominios samplesite.com y www.samplesite.com.
curl samplesite.com
Y el predeterminado responderá a cualquier solicitud que llegue al puerto 80 y que no coincida con ninguno de los dos bloques de servidor:Es probable que su servidor Nginx experimente un problema de memoria de cubo hash al agregar bloques de servidor adicionales. Para evitar esto, debe ajustar un solo archivo en nginx.conf archivo. A continuación, abra el archivo con el editor nano:
sudo nano /etc/nginx/nginx.conf
Luego, busque la directiva: server_names_hash_bucket_size y elimine el símbolo # para descomentarlo, de modo que se vea así:
http { server_names_hash_bucket_size 64;}
A continuación, guarde y cierre el archivo.
Para probar que todos sus archivos Nginx no tienen errores, debe ingresar el siguiente comando:
sudo nginx -t
Si todo está bien, debe ver algo como esto:
Para que los cambios de configuración surtan efecto, primero debe iniciar el servidor Nginx utilizando el comando a continuación:
sudo systemctl restart nginx
Ahora, ingrese el dominio y debería ver la página html que creamos.
Paso 6 – Archivos y Directorios Nginx importantes que debe conocer
- Directorio de contenido principal
– / var / www / html: La página nginx predeterminada se almacena en este directorio. Es el contenido real que ves cuando accedes a la dirección IP de tu servidor. Puede cambiar este comportamiento alterando los archivos de configuración de Nginx.
- Directorios de configuración de Nginx
– / etc / nginx: El directorio principal que contiene todos los archivos de configuración de Nginx.
– / etc / nginx / nginx.conf: El archivo de configuración principal de Nginx que se puede modificar para realizar cambios globales en el servidor Nginx.
– / etc/nginx/ sites-available/: Es el directorio donde se almacenan los bloques de servidor por sitio. Todos los bloques de servidor están en esta carpeta. Un enlace simbólico los vinculará al directorio habilitado para sitios. Si listamos el contenido de este director, deberíamos ver el bloque de servidor que creamos, así como el bloque de servidor Nginx predeterminado.
– / etc/nginx/ sites-enabled/: Los bloques de servidor enable por sitio existen en este directorio. Están vinculados a los archivos de configuración reales en el directorio sites-available.
– / etc / nginx / snippets/: El directorio donde se almacenan los fragmentos de configuración que se pueden incluir en otras configuraciones, p. ej. fragmentos de configuración repetitivos.
- Registros del servidor
– / var/log/nginx / access.registro: Este archivo registra cada solicitud que llega a su servidor, a menos que haya configurado Nginx para almacenar en otro archivo o hacer otra cosa.
– /var/log/nginx / error.registro: Este archivo registra todos los errores de Nginx. Aquí es donde llegará a solucionar problemas cuando su servidor no se esté ejecutando como se esperaba.
Conclusión
Hemos llegado al final del viaje. Ha instalado Nginx en Ubuntu 18.04, cortafuegos configurados, bloques de servidor configurados y se aseguró de que los sitios sean accesibles en su navegador. ¡Felicitaciones! Ahora depende de ti averiguar qué contenido quieres servir a tus usuarios.
¡Informática feliz!