Cómo Configurar NGINX en Mac para Pruebas

¿Necesitas probar el sitio web que estás desarrollando pero solo tienes tu Mac para trabajar? No necesitas construir un servidor separado o una máquina virtual solo para probar tu sitio web. Una opción rápida es instalar NGINX en Mac, y deberías tener un servidor web funcionando directamente en tu computadora.

Sigue aquí y aprende cómo instalar y configurar NGINX en Mac. Aprenderás un par de formas diferentes de instalar NGINX, así que podrás elegir qué método funciona para ti. También aprenderás los elementos básicos de configuración para ayudarte a empezar a probar.

Prerrequisitos

Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener lo siguiente:

Instalación de NGINX en Mac

Hay dos métodos para instalar NGINX en Mac: compilando el código fuente o utilizando un gestor de paquetes. Pero un método de instalación no es mejor que el otro. La elección del método dependerá de tus necesidades.

En las siguientes secciones, aprenderás cómo realizar ambos métodos de instalación de NGINX.

Método 1: Compilación e Instalación desde el Origen

Compilar e instalar NGINX desde el origen te da la flexibilidad de incluir módulos o parches de seguridad en tu instalación de NGINX. Por ejemplo, puedes compilar NGINX para incluir el módulo de Protocolo de Mensajería en Tiempo Real (RTMP) si estás configurando un servidor de streaming.

La personalización requiere más pasos e incluye la instalación manual de dependencias. Sigue estos pasos para instalar NGINX en Mac desde la fuente.

1. Abre una terminal en tu Mac.

2. Ejecuta el siguiente comando para crear un directorio de trabajo en tu carpeta de inicio. Este directorio contendrá todos los archivos fuente que necesitas para la instalación de NGINX.

# Crea una carpeta fuente en tu directorio de inicio
mkdir ~/src && cd ~/src

3. A continuación, ejecuta los comandos siguientes para descargar (curl) y extraer (tar) la última versión de Perl Compatible Regular Expressions (PCRE). Los módulos Core y Rewrite de NGINX requieren PCRE. La última versión de PCRE en el momento de escribir esto es 8.45.

# Descarga y extrae el código fuente de PCRE
curl -OL https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
tar -xf pcre-8.45.tar.gz && rm pcre-8.45.tar.gz

4. Ejecuta cada uno de los siguientes comandos para descargar (curl) el código fuente de OpenSSL y añadir soporte para SSL. Esta adición es un ejemplo de personalización de la compilación de NGINX. La última versión de OpenSSL en el momento de escribir esto es 1.1.1m.

# Descarga y extrae los archivos fuente de OpenSSL
curl -OL http://www.openssl.org/source/openssl-1.1.1m.tar.gz
tar -xf openssl-1.1.1m.tar.gz && rm openssl-1.1.1m.tar.gz

5. Después de descargar los requisitos, ejecuta los siguientes comandos para descargar (curl) y extraer (tar) el código fuente de NGINX. La última versión estable al momento de escribir esto es 1.20.2.

# Descargar y extraer los archivos fuente de NGINX
curl -OL http://nginx.org/download/nginx-1.20.2.tar.gz
tar -xf nginx-1.20.2.tar.gz && rm nginx-1.20.2.tar.gz
# Listar los archivos/carpetas en el directorio de trabajo
ls -l

En este punto, deberías tener tres nuevos directorios en total, como se muestra a continuación.

Listing the source folders

6. Ahora, ejecuta los comandos a continuación para compilar (make) e instalar NGINX.

# Ingresar al directorio fuente de NGINX
cd nginx-1.20.2

# Crear la configuración de NGINX
## Parámetros:
## --with-pcre=../pcre-8.45/ : Especifica la ubicación del código fuente de PCRE
## --with-http_ssl_module : Habilita el soporte para HTTPS
## --with-openssl=../openssl-1.1.1m/ : Especifica la fuente de OpenSSL. Requerido por http_ssl_module
./configure --with-pcre=../pcre-8.45/ --with-http_ssl_module --with-openssl=../openssl-1.1.1m/

# Compilar NGINX
make
# Instalar NGINX
sudo make install

7. A continuación, ejecuta el siguiente comando para agregar la ruta de NGINX al sistema $PATH añadiendo la ruta completa /usr/local/nginx a /etc/paths. Después de este paso, podrás ejecutar comandos de nginx sin especificar la ruta completa.

# Agrega NGINX al archivo /etc/paths
echo /usr/local/nginx/sbin | sudo tee -a /etc/paths

8. Cierra la terminal presionando CMD+Q y abre una nueva sesión de terminal para aplicar el nuevo $PATHS.

9. Ejecuta el siguiente comando nginx para iniciar NGINX, ya que el servidor NGINX no se inicia automáticamente después de la instalación.

sudo nginx

10. Por último, confirma que NGINX está en ejecución. Abre una ventana del navegador web e ingresa la dirección HTTP://localhost. Deberías ver la página de bienvenida predeterminada de NGINX como la que se muestra a continuación.

La instalación de NGINX desde la fuente establece el puerto de escucha predeterminado en 80.

Accessing the NGINX default web page

Como instalaste NGINX en Mac desde la fuente como root, necesitarás anteponer cada comando nginx con sudo de ahora en adelante.

Método 2: Instalación de NGINX usando Homebrew

Instalar NGINX con Homebrew es más conveniente y menos propenso a errores. Este método instala las dependencias automáticamente. Si no necesitas personalizar la instalación de NGINX, este método es la opción más rápida y solo requiere un comando para instalarlo.

Para instalar NGINX en Mac usando Homebrew, procede de la siguiente manera.

1. Abre una nueva sesión de terminal.

2. Ejecuta el siguiente comando brew para instalar NGINX.

brew install nginx

¿Puedes instalar NGINX como root con Homebrew? – No (no oficialmente). El comando brew install se niega a ejecutarse con el prefijo sudo. Si lo intentas, obtendrás el mensaje de error a continuación.

“Er” o: Ejecutar Homebrew como root es extremadamente peligroso y ya no es compatible. Como Homebrew no reduce los privilegios en la instalación, estarías dando acceso completo a todos los scripts de compilación a tu sistema.”

3. Después de instalar, invoca el siguiente comando para iniciar NGINX. Este comando ejecuta NGINX como un demonio en segundo plano.

De forma predeterminada, Homebrew instala NGINX en /usr/local/Cellar/nginx/<versión> y crea enlaces simbólicos en /usr/local/opt/. El binario de nginx tiene un enlace simbólico en /usr/local/bin y esta carpeta ya está incluida en la variable $PATH.

nginx

Para ejecutar NGINX sin un servicio en segundo plano, ejecuta el siguiente comando en su lugar. Este comando emite una directiva global para NO ejecutar nginx como un demonio.

nginx -g “da” mon off;”

Puedes detener NGINX presionando CTRL+C en la terminal en este modo.

4. Por último, invoca el comando curl a continuación para confirmar que NGINX está funcionando ahora.

La instalación de NGINX a través de Homebrew establece el puerto de escucha predeterminado en 8080. Esta asignación de puerto predeterminada garantiza que puedas ejecutar nginx sin sudo.

curl HTTP://localhost:8080

Como puedes ver a continuación, el comando curl descargó la página web predeterminada de NGINX, lo que indica que el servidor está en funcionamiento.

Testing NGINX with curl

Configuración de NGINX para pruebas

Hasta ahora, has instalado NGINX, pero aún está trabajando con la configuración predeterminada. Hay algunos cambios fundamentales que podrías considerar antes de comenzar a probar tu sitio web.

¿Desea que NGINX se inicie automáticamente al encender la computadora? ¿Dónde almacenará los archivos para el sitio web que está probando? ¿Debe conservar la asignación predeterminada del puerto de escucha?

Estos son algunos de los elementos que deberá configurar después de instalar NGINX, que aprenderá a configurar en las siguientes secciones.

Las secciones siguientes muestran los pasos para configurar el archivo de configuración de NGINX instalado con Homebrew, a menos que las instrucciones indiquen lo contrario.

Personalización del puerto de escucha del servidor

Dependiendo del método de instalación, el puerto de escucha predeterminado puede ser 80 o 8080. El puerto 8080 suele ser aceptable para pruebas y desarrollo. Pero es posible que aún desee cambiar el número de puerto en algunos casos, tal vez debido a un conflicto con otros servicios o simplemente porque así lo desea.

Cualquiera que sea su motivo, siga los pasos a continuación para cambiar el puerto de escucha predeterminado de NGINX.

1. Primero, ejecute el siguiente comando para enviar la señal de detención (-s stop) y asegurarse de que NGINX no esté en ejecución. nginx -s stop

nginx -s stop

2. A continuación, ejecute el comando nginx a continuación para conocer la ubicación del archivo de configuración de NGINX.

nginx -t

El resultado a continuación muestra que el archivo de configuración está en /usr/local/etc/nginx/nginx.conf.

Testing the NGINX configuration file

3. Abra el archivo de configuración en su editor de texto preferido, como nano, en el siguiente ejemplo.

nano /usr/local/etc/nginx/nginx.conf

4. Ahora, localiza la línea listen dentro del bloque server {}. Como puedes ver a continuación, el valor del puerto de escucha es 8080.

NGINX listening port number

5. Cambia el número de puerto de listen a otro valor de puerto único, como 9000, en este ejemplo. Guarda el cambio y sal del archivo.

Changing the listening port number

6. Ahora, vuelve a ejecutar el comando nginx a continuación para iniciar NGINX de nuevo.

nginx

7. Finalmente, abre una nueva ventana del navegador y navega a HTTP://localhost:9000. NGINX ahora debería servir el sitio web en el puerto 9000, como se muestra a continuación.

NGINX running on port 9000

Señalando a tu Directorio Web de Desarrollo

Por defecto, la instalación de NGINX en Mac sirve el directorio web desde /usr/share/nginx/html (Instalación desde fuente) o /usr/local/Cellar/nginx/<version>/html (Instalación con Hombrew).

Pero ¿qué pasa si tus archivos del sitio web están en otro lugar, tal vez en otro disco? No te preocupes. Sigue los pasos a continuación para señalar NGINX a tu directorio web de desarrollo.

1. Primero, ejecuta los comandos a continuación para detener NGINX y abrir el archivo de configuración en el editor de texto, como hiciste en la sección “Personalizando el Puerto de Escucha del Servidor” (pasos uno a tres).

# Detener NGINX
nginx -s stop
# Ejecutar prueba para encontrar el archivo de configuración
nginx -t
# Abrir el archivo de configuración para editar
nano /usr/local/etc/nginx/nginx.conf

2. En el editor de texto, busca la línea que dice root html; dentro del bloque server {}.

The default web directory location

3. Edite el valor de root y cámbielo a su carpeta personalizada. En este ejemplo, el directorio web está en /Volumen/DevData/testweb. Guarde los cambios y salga del editor.

El sitio web de prueba en este ejemplo es un sitio web estático llamado Dimensiones descargado desde HTML5 Up. Este sitio web de ejemplo es gratuito para descargar y usar, sujeto a La Licencia de Atribución 3.0 de Creative Commons.

Changing the default web directory location

4. Ahora, inicie el servidor NGINX nuevamente.

nginx

5. Por último, navegue hasta la dirección HTTP://localhost:9000 utilizando su navegador web. NGINX ahora está sirviendo su sitio web de prueba desde su directorio web personalizado como se muestra en la captura de pantalla a continuación.

Testing if NGINX serves a custom web directory location

Habilitar el Inicio Automático de NGINX para una Instalación Basada en Orígenes

NGINX no se inicia automáticamente de forma predeterminada, independientemente del método de instalación elegido. En desarrollo o pruebas, el inicio automático de NGINX puede no ser un requisito. Pero si es necesario, puede configurar NGINX para que se ejecute en el arranque utilizando el proceso launchd.

Puedes habilitar que NGINX se inicie automáticamente tanto para la instalación basada en la fuente como para la basada en Homebrew. Pero para esta demostración, comencemos con la instalación basada en la fuente.

Para habilitar que NGINX se inicie automáticamente en una instalación basada en la fuente, sigue estos pasos.

1. Ejecuta el comando touch a continuación para crear un nuevo archivo de Lista de Propiedades (PLIST) para NGINX.

La ubicación /Library/LaunchDaemons almacena los daemons globales que se ejecutan en nombre del root o de un usuario especificado. El nombre del archivo puede ser cualquier cosa que desees, pero sería útil que el nombre del archivo contenga el nombre del daemon que estás creando.

sudo touch /Library/LaunchDaemons/ata.nginx.plist

2. Ahora, abre el archivo PLIST para editarlo.

sudo nano /Library/LaunchDaemons/ata.nginx.plist

3. Copia el código a continuación y pégalo en el editor de texto. Guarda el archivo y sal del editor.

En resumen, el código a continuación define un daemon con el nombre ata.nginx. El programa a ejecutar es /usr/local/nginx/sbin/nginx y el valor RunAtLoad significa que el programa se ejecutará durante el inicio del ordenador.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>ata.nginx</string>
				<key>Program</key>
				<string>/usr/local/nginx/sbin/nginx</string>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

4. Por último, ejecuta el siguiente comando launchctl para load el daemon. Este comando inicia NGINX de inmediato. Y a partir de este momento, NGINX se iniciará automáticamente después de cada reinicio del ordenador.

sudo launchctl load -w /Library/LaunchDaemons/ata.nginx.plist

Suponga que cambia de opinión y prefiere desactivar el inicio automático de NGINX, ejecute el siguiente comando. Este comando detiene y deshabilita el inicio automático del demonio de NGINX.

sudo launchctl unload -w /Library/LaunchDaemons/ata.nginx.plist

Habilitar el inicio automático de NGINX para una instalación basada en Homebrew

A diferencia de la instalación basada en la fuente, para la instalación de NGINX basada en Homebrew, solo necesita ejecutar un comando para habilitar o deshabilitar el comportamiento de inicio automático de NGINX. ¿No es conveniente?

Ejecute el siguiente comando para habilitar el inicio automático de NGINX. El comando start inicia NGINX inmediatamente y lo registra para que se inicie en el arranque.

sudo brew services start nginx

Después de ejecutar el comando, obtendrá una salida similar a la imagen a continuación.

Starting the NGNIX service

Para desactivar el estado de inicio automático de NGINX, ejecute el siguiente comando. Como puede ver, la única parte del comando que cambia es de start a stop. Este comando también cierra el servidor NGINX de manera elegante de inmediato.

sudo brew services stop nginx

Conclusión

¡Ahí lo tiene! Configurar NGINX en Mac es una manera infalible de tener un servidor web funcionando en poco tiempo para realizar pruebas. Tiene opciones de instalación según sus requisitos de configuración, y personalizar sus ajustes es rápido a través de archivos de configuración de texto plano, no se necesitan herramientas especiales.

NGINX no limita las pruebas y ejecuciones a un solo sitio web. Puede ejecutar múltiples dominios y sitios web de desarrollo simultáneamente sin interferir entre sí. O si se siente aventurero, ¡también podría ejecutar NGINX en Docker en Mac!

Source:
https://adamtheautomator.com/nginx-on-mac/