Hola, en esta ocasión os voy a guiar por el proceso de cómo compilar módulos en OpenResty. Si no sabes que es OpenResty, te diré que es un Nginx tuneado con un montón de módulos pre-compilados. Esto ayuda bastante si acabas de empezar a configurar tu servidor y no quieres complicarte la vida.

Por desgracia, hay módulos que no están en la lista de pre-compilados, por lo que nos tocará compilarlos a mano. Este es el ejemplo de los módulos GeoIP2, Brotli…

Para evitar que Google me detecte los posts como contenido duplicado y por ahorrarme trabajo (para qué os voy a engañar), os enseñaré la primera parte en este post, y luego os indicaré el resto de cada módulo en su post correspondiente.

Listado de guías de módulos

Instalar requisitos para compilar módulos en OpenResty

Estos pasos los puedes también encontrar en su página oficial:

https://openresty.org/

Lo primero que tienes que hacer para compilar módulos en OpenResty, es instalar los paquetes requeridos. Sin estos paquetes la compilación fallará, por lo que son muy importantes. En mi caso he utilizado Debian 10, por lo que os guiaré por los pasos necesarios para esta versión de Linux.

El primero paso es añadir el repositorio de OpenResty, ya que incluye muchas cosas necesarias (entre ellas el propio OpenResty):

# install some prerequisites needed by adding GPG public keys (could be removed later)
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates

# import our GPG key:
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -

# add the our official APT repository:
codename=`grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release`

echo "deb http://openresty.org/package/debian $codename openresty" \
    | sudo tee /etc/apt/sources.list.d/openresty.list

# to update the APT index:
sudo apt-get update

Una vez instalado y configurado el repositorio de OpenResty, procederemos a deshabilitar el Nginx si lo tenemos instalado:

# Disable Nginx Daemon
sudo systemctl disable nginx
# Stop Nginx Daemon
sudo systemctl stop nginx

Esto parará el Nginx y lo deshabilitará para evitar problemas al instalar el OpenResty. Procederemos a instalar el OpenResty:

# Installing OpenResty
apt-get install -y openresty

Si vamos a compilar el módulo para una versión concreta, es muy importante instalar la misma versión o fallará. Para ello recuperaremos la versión instalada en el servidor donde vamos a instalar el módulo con openresty -v. Este paso lo podemos obviar si el servidor es el mismo donde vamos a compilar, ya que sería muy difícil tener una distinta.

$ openresty -v
nginx version: openresty/1.19.3.1

Entonces procederemos a instalarlo indicando la versión:

# Installing custom OpenResty Version
apt-get install openresty=1.19.3.1*

Es muy importante el asterisco del final, ya que la versión suele venir con la coletilla de la versión de Debian para la que es. Por ejemplo, en Debian 10 es 1.19.3.1-1~buster1.

Una vez instalado el OpenResty, procederemos a instalar los requisitos para la compilación:

# Installing compilation requirements
apt-get install libpcre3-dev libssl-dev perl make build-essential curl git openresty-zlib-dev

Y hasta aquí la parte básica de cómo compilar un módulo en OpenResty. Espero que os haya servido, y si os gusta no olvidéis compartirlo.

¡Un saludo!

Daniel Carrasco

DevOps con varios años de experiencia, y arquitecto cloud con experiencia en Google Cloud Platform y Amazon Web Services. En sus ratos libres experimenta con Arduino y electrónica.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.