open source

Script de actualización automática de Nginx.

por Lógico (@logico_ar)

PUBLICADO 21:00
14.2.2020

Mantené Nginx en su última versión con este script.

Esté artículo es una continuación espiritual del post NGINX turbo con HTTP2 + ALPN + Brotli.
. Si seguiste ese post te habrás dado cuenta que hay que para mantener el servidor actualizado tenés que revisar el sitio de Nginx, luego descargar el código fuente y recompilar todo de vuelta. Pero ya no más. Acá te compartimos un script que hace todo eso autómaticamente.

El funcionamiento es simple:

  1. Chequea la última versión mainline.
  2. Si es igual a la actual, finaliza.
  3. Si no, continua actualizando el repo de ngx_brotli.
  4. Luego descarga el código fuente de nginx.
  5. Elimina el código fuente de versiones anteriores.
  6. Descomprime el código fuente de la versión descargada.
  7. Setea las opciones de compilación.
  8. Compila e instala nginx.
  9. Reinicia el servicio para aplicar los cambios.

Los requerimientos y ubicaciones son las mismas que usamos en el post anteriormente mencionado. Si el source code lo descargaste en otra ubicación podés modificarlo en SOURCE_DIR. Es necesario ademas tener openssl 1.1.1d y el módulo de brotli en el mismo directorio.

#!/bin/sh

LOCAL_VER="$(nginx -v 2>&1 | awk -F/ '{print $2}')"
VER="$(wget -qO - http://nginx.org/en/CHANGES | head -2 | grep Changes | awk '{print $4}')"
SOURCE_DIR="/usr/local/src"

if [ "$LOCAL_VER" = "$VER" ];
then
        echo "Nginx está actualizado ver. $VER"
        exit 0
fi


cd "$SOURCE_DIR"/ngx_brotli/
git pull
cd "$SOURCE_DIR"
rm -rvf /"$SOURCE_DIR"/nginx-"$VER".tar.*
wget http://nginx.org/download/nginx-"$VER".tar.gz
rm -rvf "$SOURCE_DIR"/nginx-"$VER"
tar -zxf nginx-"$VER".tar.gz

cd "$SOURCE_DIR"/nginx-"$VER"

./configure  --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module="$SOURCE_DIR"/ngx_brotli --with-openssl="$SOURCE_DIR"/openssl-1.1.1d/


make
make install

service nginx restart

exit 0

Portada.

unsplash-logoJoshua Naidoo


Comentarios desactivados en la versión móvil.