Requisits per crear NGINX des de la font
Abans que comencis
Creeu NGINX des de la font
Conclusió
NGINX es pot utilitzar com a servidor HTTP/HTTPS, servidor intermediari invers, servidor intermediari de correu, equilibrador de càrrega, terminador TLS o servidor de memòria cau. És bastant modular pel seu disseny. Disposa de mòduls natius i de tercers creats per la comunitat. Escrit en llenguatge de programació C, és un programari molt ràpid i lleuger.
NOTE: NGINX has two version streams that run in parallel - stable and mainline. Both versions can be used on a production server. It is recommended to use the mainline version in production.
Instal·lar NGINX des del codi font és relativament "fàcil": descarregueu la darrera versió del codi font NGINX, configureu-lo, creeu-lo i instal·leu-lo.
En aquest tutorial faré servir la versió principal , que és la 1.13.1 en el moment d'escriure. Actualitzeu els números de versió en conseqüència quan estiguin disponibles versions més noves.
Requisits per crear NGINX des de la font
Requisits obligatoris:
- Versió de la biblioteca OpenSSL entre 1.0.2 - 1.1.0
- Versió de la biblioteca Zlib entre 1.1.3 - 1.2.11
- Versió de la biblioteca PCRE entre 4.4 - 8.40
- Compilador GCC
Requisits opcionals:
Abans que comencis
Crea un usuari habitual amb sudoaccés .
Canvia al nou usuari:
su - <username>
Actualització del sistema:
sudo apt update && sudo apt upgrade -y
Creeu NGINX des de la font
NGINX és un programa escrit en C, per tant hem d'instal·lar el compilador C (GCC).
sudo apt install build-essential -y
Baixeu la darrera versió del codi font NGINX i extreu-lo:
wget https://nginx.org/download/nginx-1.13.1.tar.gz && tar zxvf nginx-1.13.1.tar.gz
Baixeu el codi font de les dependències NGINX i extreu-los:
NGINX depends on 3 libraries: PCRE, zlib and OpenSSL:
# PCRE version 4.4 - 8.40
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz
# zlib version 1.1.3 - 1.2.11
wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
# OpenSSL version 1.0.2 - 1.1.0
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
Elimina tots els .tar.gzfitxers. Ja no els necessitem:
rm -rf *.tar.gz
Aneu al directori font de NGINX:
cd ~/nginx-1.13.1
Per obtenir ajuda, podeu llistar els commutadors de configuració disponibles executant:
./configure --help
Configureu, compileu i instal·leu NGINX:
./configure --prefix=/usr/share/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/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=/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=www-data \
--group=www-data \
--build=Ubuntu \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--with-openssl=../openssl-1.1.0f \
--with-openssl-opt=enable-ec_nistp_64_gcc_128 \
--with-openssl-opt=no-nextprotoneg \
--with-openssl-opt=no-weak-ssl-ciphers \
--with-openssl-opt=no-ssl3 \
--with-pcre=../pcre-8.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--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_slice_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-http_secure_link_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-debug \
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
--with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'
make
sudo make install
Elimina tots els fitxers baixats del directori d'inici, en aquest cas /home/username:
cd ~
rm -r nginx-1.13.1/ openssl-1.1.0f/ pcre-8.40/ zlib-1.2.11/
Comproveu la versió de NGINX i les opcions de temps de compilació:
sudo nginx -v && sudo nginx -V
# nginx version: nginx/1.13.0 (Ubuntu)
# built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
# built with OpenSSL 1.1.0f 25 May 2017
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx . . .
# . . .
# . . .
Comproveu la sintaxi i els possibles errors:
sudo nginx -t
# Will throw this error nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)
# Just create directory
mkdir -p /var/lib/nginx && sudo nginx -t
Creeu un fitxer d'unitat de sistema per a NGINX:
sudo vim /etc/systemd/system/nginx.service
Copieu/enganxeu el contingut següent:
NOTE: The location of the PID file and the NGINX binary may be different depending on how NGINX was compiled.
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
Inicieu i activeu el servei NGINX:
sudo systemctl start nginx.service && sudo systemctl enable nginx.service
Comproveu si NGINX s'iniciarà després d'un reinici:
sudo systemctl is-enabled nginx.service
# enabled
Comproveu si NGINX s'està executant:
sudo systemctl status nginx.service
ps aux | grep nginx
curl -I 127.0.0.1
Reinicieu el vostre Ubuntu VPS per verificar que NGINX s'iniciï automàticament:
sudo shutdown -r now
Crea un perfil d'aplicació UFW NGINX:
sudo vim /etc/ufw/applications.d/nginx
Copieu/enganxeu el contingut següent:
[Nginx HTTP]
title=Web Server (Nginx, HTTP)
description=Small, but very powerful and efficient web server
ports=80/tcp
[Nginx HTTPS]
title=Web Server (Nginx, HTTPS)
description=Small, but very powerful and efficient web server
ports=443/tcp
[Nginx Full]
title=Web Server (Nginx, HTTP + HTTPS)
description=Small, but very powerful and efficient web server
ports=80,443/tcp
Ara, comproveu que els perfils d'aplicacions UFW es creïn i es reconeguin:
sudo ufw app list
# Available applications:
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH
Conclusió
Això és. Ara teniu instal·lada la versió més recent de NGINX. Es compila estàticament amb algunes biblioteques importants com OpenSSL. Sovint, la versió del sistema OpenSSL està obsoleta. Mitjançant aquest mètode d'instal·lació amb una versió més nova d'OpenSSL, podeu aprofitar nous xifratges CHACHA20_POLY1305i protocols com TLS 1.3 que estaran disponibles a OpenSSL 1.1.1(que no s'ha publicat).