Nginx van broncode bouwen op Fedora 29
Nginx (spreek uit als"engine x") is een open source webserversoftware, ontworpen met hoge concurrency in gedachten, die gebruikt kan worden alsHTTP/HTTPS server,reverse proxy server,mail proxy server,software load balancer,TLS terminator,caching server…
Het is een uiterst modulair stuk software. Zelfs sommige van de schijnbaar "ingebouwde" onderdelen van de software, zoals GZIP of SSL, zijn eigenlijk gebouwd als modules die tijdens het bouwen kunnen worden in- en uitgeschakeld.
Het heeftkern(native)modulesenmodules van derden (extern)gemaakt door de gemeenschap. Op dit moment zijn er meer dan honderd modules van derden die we kunnen gebruiken.
Geschreven in de taalC, is het een zeer snel en licht stukje software.
Nginx vanaf broncode installeren is relatief "eenvoudig" – download de nieuwste versie van de Nginx broncode, configureer, bouw en installeer hem.
Je moet kiezen of je dehoofdlijnversieof destabieleversie wilt downloaden, maar ze bouwen is precies hetzelfde.
In deze zelfstudie bouwen we Nginx met alle beschikbare modules in de open bron versie van Nginx en we gebruikenhoofdlijnversie die te vinden is op1.15.8op het moment van dit schrijven. Werk de versienummers bij als er nieuwere versies beschikbaar komen.
Stabiele vs. hoofdversie
Nginx Open Source is beschikbaar in twee versies:
Mainline– Bevat de nieuwste mogelijkheden en bug fixes en is altijd actueel. Het is betrouwbaar, maar het kan enkele experimentele modules bevatten, en het kan ook een aantal nieuwe bugs bevatten.
Stabiel– Bevat niet alle nieuwste functies, maar heeft kritieke bugfixes die altijd naar de hoofdversie teruggeplaatst worden.
Kernmodules vs. modules van derden
Nginx heeft twee soorten modules die je kunt gebruiken:kernmodulesenmodules van derden.
Core modules worden gebouwd door de core Nginx ontwikkelaars en ze maken deel uit van de software zelf.
Modules van derden worden door de gemeenschap gebouwd en je kunt ze gebruiken om de Nginx functionaliteit uit te breiden. Er zijn heel wat nuttige modules van derden, de bekendste zijn: PageSpeed, ModSecurity, RTMP, Lua enz…
Statische modules vs. dynamische modules
Statische modules bestaan in Nginx vanaf de allereerste versie. Dynamische modules werden geïntroduceerd met Nginx 1.9.11+ in februari 2016.
Bij statische modules wordt de verzameling modules die een Nginx binary vormen bij het compileren vastgelegd door het./configurescript. Statische modules gebruiken de--with-foo_bar_moduleof--add-module=PATHsyntaxis.
Om core (standaard) module als dynamisch te compileren voegen we=dynamic toe, bijvoorbeeld--with-http_image_filter_module=dynamic.
Om modules van derden als dynamisch te compileren gebruiken we--add-dynamic-module=/path/to/modulesyntaxis en dan laden we ze doorload_modulerichtlijn te gebruiken in de globale context van hetnginx.confbestand.
Vereisten voor het bouwen van Nginx vanaf broncode
In vergelijking met sommige andere UNIX/Linux software is Nginx vrij licht en heeft het niet veel bibliotheek afhankelijkheden. De standaard bouwconfiguratie is afhankelijk van slechts 3 te installeren bibliotheken:OpenSSL/LibreSSL/BoringSSL,ZlibenPCRE.
Verplichte vereisten:
GNU Compiler Collectie(GCC)
OpenSSLbibliotheekversie tussen1.0.2–1.1.1ofLibreSSLbibliotheek ofBoringSSLbibliotheek
Zlibbibliotheek versie tussen1.1.3–1.2.11
PCREbibliotheek versie tussen4.4–8.42
Optionele vereisten:
MaxMind GeoIP Legacy C Bibliotheek
Een server met Fedora 29 systeem.
Werk de pakketten van je Fedora besturingssysteem bij:
Installeer vim, curl, wget en tree pakketten:
Bouw Nginx vanaf broncode
Nginx is een programma geschreven inC, dus je zult eerst een compiler gereedschappen moeten installeren:
Download de nieuwste mainline versie van de Nginx broncode en pak hem uit. De Nginx broncode wordt verspreid als gecomprimeerd archief (gzipped tarball), zoals de meeste Unix en Linux software:
Download de broncode van de verplichte Nginx afhankelijkheden en pak ze uit:
Installeer de optionele Nginx afhankelijkheden:
Ruim alle.tar.gzbestanden op, want ze zijn niet meer nodig:
Ga de Nginx bron-directory in:
Maak voor de goede orde een lijst van mappen en bestanden waaruit de Nginx broncode bestaat mettreehulpprogramma:
Kopieer de Nginx handleiding pagina naar/usr/share/man/man8/directory:
Als hulp kun je de volledige lijst van actuele Nginx compileer-tijd opties zien door te draaien:
Configureer, compileer en installeer NGINX:
Na het bouwen van Nginx, navigeer je naar home (~) map:
Symlink/usr/lib64/nginx/modulesnaar/etc/nginx/modulesdirectory.etc/nginx/modulesis een standaard plaats voor Nginx modules:
Druk de Nginx versie af, de compiler versie, en de parameters van het configure script:
Maak Nginx systeemgroep en gebruiker aan:
Controleer Nginx syntaxis en mogelijke fouten:
Maak Nginx systemd unit bestand:
Kopieer/plak de onderstaande inhoud in/etc/systemd/system/nginx.servicebestand:
OPMERKING:De plaats van hetPIDbestand en de Nginx binary kunnen verschillen, afhankelijk van hoe Nginx gecompileerd werd.
Schakel Nginx in om bij het opstarten te starten en start Nginx onmiddellijk:
Controleer of Nginx automatisch start na een reboot:
Controleer of Nginx draait door een van de volgende commando's uit te voeren:
Je kunt ook je browser openen en naar je domein/IP adres navigeren om de standaard Nginx pagina te zien. Dat is een indicator dat Nginx draait.
Nginx genereert standaard backup.defaultbestanden in/etc/nginx. Verwijder.defaultbestanden uit/etc/nginx directory:
Plaats syntax highlighting van Nginx configuratie voor Vim editor in~/.vim:
OPMERKING: Door de bovenstaande stap te doen, krijg je een mooie syntaxis-accentuering bij het bewerken van Nginx configuratiebestanden in Vim editor.
Maakconf.d,snippets,sites-availableensites-enabledmappen in/etc/nginxmap:
Verander rechten en groepseigendom van Nginx logbestanden:
Maak logrotatie config voor Nginx.
Vul het bestand met de onderstaande tekst, sla dan op en sluit af:
Verwijder alle gedownloade bestanden uit de home directory:
Dat is het. Nu heb je de nieuwste versie van Nginx geïnstalleerd door hem vanaf de broncode te bouwen. Het wordt statisch gecompileerd tegen enkele belangrijke bibliotheken zoals OpenSSL. Vaak is de door het systeem geleverde versie van OpenSSL verouderd. Door deze methode van installeren met een nieuwere versie van OpenSSL te gebruiken, kun je gebruik maken van nieuwe cijfers alsCHACHA20_POLY1305en protocollen alsTLS 1.3die in OpenSSL 1.wordenondersteund.1.1. Ook kun je, door je eigen binary te compileren, zelf bepalen welke functionaliteit je Nginx zal bieden, wat veel flexibeler is dan een voorgebouwde binary te installeren.