Com compilar Nginx des de la font a Debian 10

Introducció

Nginx és un programari de servidor web de codi obert dissenyat tenint en compte una gran concurrència, que es pot utilitzar com a servidor HTTP/HTTPS, servidor intermediari invers, servidor intermediari de correu, equilibrador de càrrega de programari, terminador TLS, servidor de memòria cau i molt més!

És una peça de programari molt modular. Fins i tot algunes de les parts aparentment "integrades" del programari, com ara GZIP o SSL, es creen realment com a mòduls que es poden activar i desactivar durant el temps de creació.

Té mòduls bàsics (natius) i mòduls de tercers (externs) creats per la comunitat. Ara mateix, hi ha més d'un centenar de mòduls de tercers que podem utilitzar.

Escrit en C, és un programari ràpid i lleuger.

Instal·lar Nginx des del codi font és relativament fàcil: descarregueu la darrera versió del codi font de Nginx, configureu-lo, creeu-lo i instal·leu-lo.

Haureu de triar si voleu descarregar la versió principal o una versió estable, però la creació d'ells és el mateix.

En aquesta guia, compilarem una versió principal de Nginx a Debian 10 (buster). Utilitzarem tots els mòduls disponibles a la versió de codi obert de Nginx.

Per què compilar i instal·lar Nginx des de la font

Probablement us pregunteu per què es compilaria Nginx des d'una font quan podeu utilitzar paquets preparats. Aquests són alguns dels motius pels quals potser voldreu compilar programari específic per vosaltres mateixos:

  • Per controlar les opcions de configuració.
  • Per instal·lar el programari on vulgueu. Fins i tot podeu instal·lar diverses versions diferents del mateix programari.
  • Per controlar la versió que instal·leu. Les distribucions no sempre es mantenen al dia amb les últimes versions de tots els paquets, especialment els complements als paquets de programari.
  • Per entendre millor com funciona el programari.

Versió estable enfront de la línia principal

Nginx Open Source està disponible en dues versions:

  • Mainline: inclou les últimes funcions i correccions d'errors i està sempre actualitzada. És fiable, però pot incloure alguns mòduls experimentals i també pot tenir alguns errors nous.
  • Estable: no inclou totes les característiques més recents, però té correccions d'errors crítiques que sempre es retroporten a la versió principal.

Mòduls bàsics versus mòduls de tercers

Nginx té dos tipus de mòduls que podeu utilitzar: mòduls bàsics i mòduls de tercers.

Els desenvolupadors bàsics de Nginx creen mòduls bàsics i formen part del propi programari.

La comunitat crea mòduls de tercers i podeu utilitzar-los per ampliar la funcionalitat. Hi ha molts mòduls útils de tercers.

Mòduls estàtics vs. mòduls dinàmics

Els mòduls estàtics existeixen a Nginx des de la primera versió. Els mòduls dinàmics es van introduir amb Nginx 1.9.11+ el febrer de 2016.

Amb els mòduls estàtics, l' ./configurescript fixa un conjunt de mòduls que constitueixen un binari Nginx en temps de compilació . Ús --with-foo_bar_moduleo --add-module=PATHsintaxi de mòduls estàtics .

Per compilar un mòdul bàsic (estàndard) com a dinàmic, afegim =dynamic, per exemple --with-http_image_filter_module=dynamic.

Per compilar un mòdul de tercers com a dinàmic, fem servir la --add-dynamic-module=/path/to/modulesintaxi i després els carreguem utilitzant la load_moduledirectiva en el context global del nginx.conffitxer.

Requisits per crear Nginx des de la font

En comparació amb algun altre programari UNIX/Linux, Nginx és bastant lleuger i no té moltes dependències de biblioteca. La configuració de compilació per defecte depèn només de 3 biblioteques a instal·lar: OpenSSL/LibreSSL/BoringSSL, Zlib i PCRE.

NOTA : Nginx també es pot compilar amb biblioteques de criptografia LibreSSL i BoringSSL en lloc d'OpenSSL.

Abans que comencis

Comproveu la versió de Debian.

lsb_release -ds # Debian GNU/Linux 10 (buster)

Creeu un usuari habitual amb sudoaccés.

adduser johndoe --gecos "John Doe" usermod -aG sudo johndoe

NOTA : Substituïu-lo johndoepel vostre nom d'usuari .

Canvia a un usuari nou.

su - johndoe

Configura la zona horària.

sudo dpkg-reconfigure tzdata

Actualitzeu el programari del vostre sistema operatiu.

sudo apt update && sudo apt upgrade -y

Instal·leu els paquets necessaris.

sudo apt install -y software-properties-common ufw

Creeu Nginx des de la font

Nginx és un programa escrit en C, de manera que primer haureu d'instal·lar una eina compiladora. Instal·lar build-essential, giti tree.

sudo apt install -y build-essential git tree

Baixeu la darrera versió principal del codi font de Nginx i desempaqueteu l'arxiu del codi font. El codi font de Nginx es distribueix com un arxiu comprimit, com la majoria del programari Unix i Linux.

wget https://nginx.org/download/nginx-1.17.2.tar.gz && tar zxvf nginx-1.17.2.tar.gz

Baixeu el codi font obligatori de les dependències de Nginx i extreu-lo.

# PCRE version 8.43 wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz && tar xzvf pcre-8.43.tar.gz # zlib version 1.2.11 wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz # OpenSSL version 1.1.1c wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar xzvf openssl-1.1.1c.tar.gz

Instal·leu dependències opcionals de Nginx.

sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev

Netegeu tots els .tar.gzfitxers. Ja no els necessitem.

rm -rf *.tar.gz

Introduïu el directori font de Nginx.

cd ~/nginx-1.17.2

Per a una bona mesura, llista directoris i fitxers que componen el codi font de Nginx amb tree.

tree -L 2 .

Copieu la pàgina del manual a /usr/share/man/man8/.

sudo cp ~/nginx-1.17.2/man/nginx.8 /usr/share/man/man8 sudo gzip /usr/share/man/man8/nginx.8 ls /usr/share/man/man8/ | grep nginx.8.gz # Check that man page for Nginx is working man nginx

Per obtenir ajuda, podeu veure una llista completa d'opcions de compilació actualitzades de Nginx executant el següent.

./configure --help # To see want core modules can be built as dynamic run: ./configure --help | grep -F =dynamic

Configureu, compileu i instal·leu Nginx.

./configure --prefix=/etc/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 \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --build=Debian \ --builddir=nginx-1.17.2 \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_perl_module=dynamic \ --with-perl_modules_path=/usr/share/perl/5.26.1 \ --with-perl=/usr/bin/perl \ --http-log-path=/var/log/nginx/access.log \ --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 \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre=../pcre-8.43 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-openssl=../openssl-1.1.1c \ --with-openssl-opt=no-nextprotoneg \ --with-debug make sudo make install

Després de la compilació, navegueu al vostre ~directori d' inici ( ).

cd ~

Enllaç simbòlic /usr/lib/nginx/modulesa /etc/nginx/modules. Aquest és un lloc estàndard per als mòduls Nginx.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

Imprimiu la versió de Nginx, la versió del compilador i configureu els paràmetres de l'script.

sudo nginx -V # nginx version: nginx/1.17.2 (Debian) # built by gcc 8.3.0 (Debian 8.3.0-6) # built with OpenSSL 1.1.1c 28 May 2019 # TLS SNI support enabled # configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules . . . # . . . # . . .

Creeu un grup i un usuari del sistema Nginx.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx # Check that user and group are created sudo tail -n 1 /etc/passwd /etc/group /etc/shadow

Comproveu la sintaxi de Nginx i els possibles errors.

sudo nginx -t # Will throw this error -> nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory) # Create NGINX cache directories and set proper permissions sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp sudo chmod 700 /var/cache/nginx/* sudo chown nginx:root /var/cache/nginx/* # Re-check syntax and potential errors. sudo nginx -t

Creeu un fitxer d'unitat Nginx systemd.

sudo vim /etc/systemd/system/nginx.service

Omple el /etc/systemd/system/nginx.servicefitxer amb el contingut següent.

[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target

Habiliteu Nginx perquè s'iniciï a l'arrencada i inicieu Nginx immediatament.

sudo systemctl enable nginx.service sudo systemctl start nginx.service

Comproveu si Nginx s'iniciarà automàticament després d'un reinici.

sudo systemctl is-enabled nginx.service # enabled

Comproveu l'estat.

sudo systemctl status nginx.service

NOTA : Podeu verificar que Nginx s'està executant si aneu al domini o a l'adreça IP del vostre lloc en un navegador web. Veureu la pàgina de benvinguda de Nginx. Això és un indicador que Nginx està en funcionament al vostre VPS.

Creeu un perfil d'aplicació UFW Nginx.

sudo vim /etc/ufw/applications.d/nginx

Copieu/enganxeu el contingut següent al /etc/ufw/applications.d/nginxfitxer.

[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

Valideu que els perfils d'aplicació UFW es creïn i es reconeguin.

sudo ufw app list # Available applications: # Nginx Full # Nginx HTTP # Nginx HTTPS # OpenSSH

Nginx, per defecte, genera .defaultfitxers de còpia de seguretat en /etc/nginx. Elimina .defaultfitxers del /etc/nginxdirectori.

sudo rm /etc/nginx/*.default

Col·loqueu el ressaltat de sintaxi de la configuració de Nginx per a l'editor Vim a ~/.vim.

# For regular non-root user mkdir ~/.vim/ cp -r ~/nginx-1.17.2/contrib/vim/* ~/.vim/ # For root user sudo mkdir /root/.vim/ sudo cp -r ~/nginx-1.17.2/contrib/vim/* /root/.vim/

NOTA : En fer el pas anterior, obtindreu un bon ressaltat de sintaxi quan editeu els fitxers de configuració de Nginx a l'editor Vim.

Crear conf.d, snippets, sites-availablei sites-enableddirectoris a /etc/nginx.

sudo mkdir /etc/nginx/{conf.d,snippets,sites-available,sites-enabled}

Canvieu els permisos i la propietat del grup dels fitxers de registre de Nginx.

sudo chmod 640 /var/log/nginx/* sudo chown nginx:adm /var/log/nginx/access.log /var/log/nginx/error.log

Creeu una configuració de rotació de registre per a Nginx.

sudo vim /etc/logrotate.d/nginx

Omple el fitxer amb el text següent, després desa i surt.

/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }

Elimina tots els fitxers baixats del directori d'inici.

cd ~ rm -rf nginx-1.17.2/ openssl-1.1.1c/ pcre-8.43/ zlib-1.2.11/

Resum

Això és. Ara, teniu instal·lada la darrera versió de Nginx. Es compila estàticament amb algunes biblioteques importants com OpenSSL. Sovint, la versió d'OpenSSL subministrada pel sistema està obsoleta. Mitjançant aquest mètode d'instal·lació amb una versió més nova d'OpenSSL, podeu aprofitar els xifratges moderns com CHACHA20_POLY1305ara TLS 1.3 que estan disponibles a OpenSSL 1.1.1. A més, compilant el vostre propi binari, podreu adaptar quina funcionalitat proporcionarà el vostre Nginx, que és molt més flexible que instal·lar un binari preconstruït.


Com configurar actualitzacions desateses a Debian 9 (Stretch)

Com configurar actualitzacions desateses a Debian 9 (Stretch)

Utilitzeu un sistema diferent? Si compres un servidor Debian, sempre hauríeu de tenir els darrers pedaços i actualitzacions de seguretat, tant si esteu adormit com si no.

Configura el teu propi servidor DNS a Debian/Ubuntu

Configura el teu propi servidor DNS a Debian/Ubuntu

Aquest tutorial explica com configurar un servidor DNS amb Bind9 a Debian o Ubuntu. Al llarg de l'article, substituïu el vostre-nom-domini.com en conseqüència. Al th

Compileu i instal·leu Nginx amb el mòdul PageSpeed ​​a Debian 8

Compileu i instal·leu Nginx amb el mòdul PageSpeed ​​a Debian 8

En aquest article, veurem com compilar i instal·lar la línia principal de Nginx des de les fonts oficials de Nginx amb el mòdul PageSpeed, que us permet

Com instal·lar Kanboard a Debian 9

Com instal·lar Kanboard a Debian 9

Utilitzeu un sistema diferent? Introducció Kanboard és un programa de gestió de projectes gratuït i de codi obert dissenyat per facilitar i visualitzar

Com instal·lar Gitea a Debian 9

Com instal·lar Gitea a Debian 9

Utilitzeu un sistema diferent? Gitea és un sistema alternatiu de control de versions autoallotjat i de codi obert impulsat per Git. Gitea està escrit en Golang i ho és

Instal·leu Lynis a Debian 8

Instal·leu Lynis a Debian 8

Introducció Lynis és una eina gratuïta d'auditoria de sistemes de codi obert que utilitzen molts administradors de sistemes per verificar la integritat i endurir els seus sistemes. jo

Com instal·lar Thelia 2.3 a Debian 9

Com instal·lar Thelia 2.3 a Debian 9

Utilitzeu un sistema diferent? Thelia és una eina de codi obert per crear llocs web de negocis electrònics i gestionar contingut en línia escrit en PHP. Codi font de Thelia i

Creació duna xarxa de servidors de Minecraft amb BungeeCord a Debian 8, Debian 9 o CentOS 7

Creació duna xarxa de servidors de Minecraft amb BungeeCord a Debian 8, Debian 9 o CentOS 7

Què necessitareu Un Vultr VPS amb almenys 1 GB de RAM. Accés SSH (amb privilegis d'arrel/administrador). Pas 1: instal·lació de BungeeCord Primer de tot

Com instal·lar Golang 1.8.3 a CentOS 7, Ubuntu 16.04 i Debian 9

Com instal·lar Golang 1.8.3 a CentOS 7, Ubuntu 16.04 i Debian 9

Golang és un llenguatge de programació desenvolupat per Google. Gràcies a la seva versatilitat, senzillesa i fiabilitat, Golang s'ha convertit en un dels més populars

Restableix la contrasenya darrel de MySQL a Debian/Ubuntu

Restableix la contrasenya darrel de MySQL a Debian/Ubuntu

Si heu oblidat la vostra contrasenya d'arrel de MySQL, podeu restablir-la seguint els passos d'aquest article. El procés és bastant senzill i funciona en aquests

Configuració de Counter Strike: font a Debian

Configuració de Counter Strike: font a Debian

En aquesta guia, configurarem un servidor de jocs Counter Strike: Source a Debian 7. Aquestes ordres es van provar a Debian 7, però també haurien de funcionar o

Com instal·lar Unturned 2.2.5 a Debian 8

Com instal·lar Unturned 2.2.5 a Debian 8

En aquesta guia, aprendràs a configurar un servidor Unturned 2.2.5 en un Vultr VPS amb Debian 8. Nota: Aquesta és una versió editada d'Unturned que no

Com instal·lar Cachet a Debian 8

Com instal·lar Cachet a Debian 8

En aquest tutorial, aprendràs a instal·lar Cachet a Debian 8. Cachet és un potent sistema de pàgines d'estat de codi obert. Instal·lació Aquest tutorial està en marxa

Còpia de seguretat de múltiples bases de dades MySQL o MariaDB automàticament

Còpia de seguretat de múltiples bases de dades MySQL o MariaDB automàticament

Introducció En aquest escrit, expliqueu com fer una còpia de seguretat de múltiples bases de dades MySQL o MariaDB que es troben a la mateixa màquina mitjançant un script bash personalitzat.

Configuració dun Chroot a Debian

Configuració dun Chroot a Debian

Aquest article us ensenyarà com configurar una presó chroot a Debian. Suposo que utilitzeu Debian 7.x. Si esteu executant Debian 6 o 8, això pot funcionar, però

Com instal·lar Reader Self 3.5 RSS Reader en un VPS Debian 9 LAMP

Com instal·lar Reader Self 3.5 RSS Reader en un VPS Debian 9 LAMP

Utilitzeu un sistema diferent? Reader Self 3.5 és una alternativa senzilla i flexible, gratuïta i de codi obert, lector RSS autoallotjat i alternativa a Google Reader. Lector Sel

Com instal·lar Backdrop CMS 1.8.0 en un VPS Debian 9 LAMP

Com instal·lar Backdrop CMS 1.8.0 en un VPS Debian 9 LAMP

Utilitzeu un sistema diferent? Backdrop CMS 1.8.0 és un sistema de gestió de continguts (CMS) senzill i flexible, adaptat per a mòbils, gratuït i de codi obert que ens permet

Com instal·lar SteamCMD al vostre VPS

Com instal·lar SteamCMD al vostre VPS

En aquest tutorial instal·larem SteamCMD. SteamCMD es pot utilitzar per descarregar i instal·lar molts servidors de jocs Steam, com ara Counter-Strike: Global Offensiv

Actualitzeu Python a Debian

Actualitzeu Python a Debian

Com ja sabeu, els dipòsits de Debian s'actualitzen molt lentament. En el moment d'escriure, les versions del llançament de Python es troben a la 2.7.12 i la 3.5.2, però al repositori Debian 8

Com configurar Samba amb emmagatzematge de blocs a Debian 9

Com configurar Samba amb emmagatzematge de blocs a Debian 9

Samba és una solució de codi obert que permet als usuaris configurar fitxers compartits i imprimir de manera ràpida i segura. En aquest article, explicaré com configurar Samba wit

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació