Sådan kompileres Nginx fra kilden på Debian 10

Introduktion

Nginx er en open source webserversoftware designet med høj samtidighed i tankerne, der kan bruges som en HTTP/HTTPS-server, omvendt proxyserver, mailproxyserver, softwarebelastningsbalancer, TLS-terminator, cachingserver og mere!

Det er et meget modulært stykke software. Selv nogle af de tilsyneladende "indbyggede" dele af softwaren, såsom GZIP eller SSL, er faktisk skabt som moduler, der kan aktiveres og deaktiveres under byggetiden.

Det har kernemoduler (native) og tredjepartsmoduler (eksterne) skabt af fællesskabet. Lige nu er der over hundrede tredjepartsmoduler, som vi kan bruge.

Skrevet i C, det er et hurtigt og let stykke software.

Det er relativt nemt at installere Nginx fra kildekoden - download den nyeste version af Nginx-kildekoden, konfigurer, byg og installer den.

Du skal vælge, om du vil downloade hovedlinjen eller en stabil version, men det er det samme at bygge dem.

I denne guide vil vi kompilere en hovedversion af Nginx på Debian 10 (buster). Vi vil bruge alle tilgængelige moduler i open source-versionen af ​​Nginx.

Hvorfor kompilere og installere Nginx fra kilden

Du spørger sikkert, hvorfor man kompilerer Nginx fra en kilde, når du kan bruge forberedte pakker. Her er nogle grunde til, at du måske vil kompilere specifik software selv:

  • For at kontrollere konfigurationsmuligheder.
  • For at installere softwaren hvor som helst du vil. Du kan endda installere flere forskellige versioner af den samme software.
  • For at kontrollere den version, du installerer. Distributioner forbliver ikke altid opdaterede med de nyeste versioner af alle pakker, især tilføjelser til softwarepakker.
  • For bedre at forstå, hvordan softwaren fungerer.

Stabil vs. mainline version

Nginx Open Source er tilgængelig i to versioner:

  • Mainline – Indeholder de nyeste funktioner og fejlrettelser og er altid opdateret. Det er pålideligt, men det kan indeholde nogle eksperimentelle moduler, og det kan også have et antal nye fejl.
  • Stabil – Indeholder ikke alle de nyeste funktioner, men har kritiske fejlrettelser, der altid er backporteret til mainline-versionen.

Kernemoduler vs. tredjepartsmoduler

Nginx har to typer moduler, som du kan bruge: kernemoduler og tredjepartsmoduler.

De centrale Nginx-udviklere bygger kernemoduler, og de er en del af selve softwaren.

Fællesskabet bygger tredjepartsmoduler, og du kan bruge dem til at udvide funktionaliteten. Der er en masse nyttige tredjepartsmoduler.

Statiske moduler vs. dynamiske moduler

Statiske moduler findes i Nginx fra den allerførste version. Dynamiske moduler blev introduceret med Nginx 1.9.11+ i februar 2016.

Med statiske moduler er et sæt moduler, der udgør en Nginx-binær, fastsat på kompileringstidspunktet af ./configurescriptet. Statiske moduler brug --with-foo_bar_moduleeller --add-module=PATHsyntaks.

For at kompilere et kernemodul (standard) som dynamisk tilføjer vi =dynamicf.eks --with-http_image_filter_module=dynamic.

For at kompilere et tredjepartsmodul som dynamisk, bruger vi --add-dynamic-module=/path/to/modulesyntaks, og derefter indlæser vi dem ved at bruge load_moduledirektivet i nginx.conffilens globale kontekst .

Krav til at bygge Nginx fra kilden

I sammenligning med noget andet UNIX/Linux-software er Nginx ret let og har ikke mange biblioteksafhængigheder. Standard build-konfigurationen afhænger af kun 3 biblioteker, der skal installeres: OpenSSL/LibreSSL/BoringSSL, Zlib og PCRE.

BEMÆRK : Nginx kan også kompileres mod LibreSSL og BoringSSL kryptobiblioteker i stedet for OpenSSL.

Før du begynder

Tjek Debian-versionen.

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

Opret en almindelig bruger med sudoadgang.

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

BEMÆRK : Erstat johndoemed dit brugernavn .

Skift til en ny bruger.

su - johndoe

Indstil tidszonen.

sudo dpkg-reconfigure tzdata

Opdater dit operativsystems software.

sudo apt update && sudo apt upgrade -y

Installer de nødvendige pakker.

sudo apt install -y software-properties-common ufw

Byg Nginx fra kilden

Nginx er et program skrevet i C, så du skal først installere et compilerværktøj. Installer build-essential, gitog tree.

sudo apt install -y build-essential git tree

Download den seneste mainline-version af Nginx-kildekoden og pak kildekodearkivet ud. Nginx-kildekoden distribueres som et komprimeret arkiv, som de fleste Unix- og Linux-software.

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

Download de obligatoriske Nginx-afhængigheders kildekode og udtræk den.

# 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

Installer valgfri Nginx-afhængigheder.

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

Ryd op i alle .tar.gzfiler. Vi har ikke brug for dem længere.

rm -rf *.tar.gz

Indtast Nginx-kildebiblioteket.

cd ~/nginx-1.17.2

For godt mål, liste mapper og filer, der komponerer Nginx kildekode med tree.

tree -L 2 .

Kopier manualsiden til /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

For at få hjælp kan du se en komplet liste over opdaterede Nginx kompileringsmuligheder ved at køre følgende.

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

Konfigurer, kompilér og installer 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

Efter kompileringen skal du navigere til din hjemmemappe ( ~).

cd ~

Symlink /usr/lib/nginx/modulestil /etc/nginx/modules. Dette er et standardsted for Nginx-moduler.

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

Udskriv Nginx-versionen, compilerversionen, og konfigurer scriptparametre.

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 . . . # . . . # . . .

Opret en Nginx-systemgruppe og bruger.

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

Tjek Nginx-syntaks og potentielle fejl.

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

Opret en Nginx systemd enhedsfil.

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

Udfyld /etc/systemd/system/nginx.servicefilen med følgende indhold.

[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

Aktiver Nginx til at starte ved opstart og start Nginx med det samme.

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

Tjek, om Nginx automatisk starter efter en genstart.

sudo systemctl is-enabled nginx.service # enabled

Tjek status.

sudo systemctl status nginx.service

BEMÆRK : Du kan bekræfte, at Nginx kører ved at gå til dit websteds domæne eller IP-adresse i en webbrowser. Du vil se Nginx-velkomstsiden. Det er en indikator for, at Nginx er oppe og køre på din VPS.

Opret en UFW Nginx-applikationsprofil.

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

Kopier/indsæt følgende indhold i /etc/ufw/applications.d/nginxfilen.

[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

Bekræft, at UFW-applikationsprofiler er oprettet og genkendt.

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

Nginx genererer som standard sikkerhedskopifiler .defaulti /etc/nginx. Fjern .defaultfiler fra /etc/nginxmappen.

sudo rm /etc/nginx/*.default

Placer syntaksfremhævning af Nginx-konfiguration til Vim-editor i ~/.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/

BEMÆRK : Ved at udføre ovenstående trin får du en flot syntaksfremhævning, når du redigerer Nginx-konfigurationsfiler i Vim editor.

Opret conf.d, snippets, sites-availableog sites-enabledmapper i /etc/nginx.

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

Skift tilladelser og gruppeejerskab af Nginx-logfiler.

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

Opret en logrotationskonfiguration for Nginx.

sudo vim /etc/logrotate.d/nginx

Udfyld filen med følgende tekst, gem og afslut.

/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 }

Fjern alle downloadede filer fra hjemmebiblioteket.

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

Resumé

Det er det. Nu har du den nyeste version af Nginx installeret. Det er kompileret statisk mod nogle vigtige biblioteker som OpenSSL. Ofte er den systemleverede version af OpenSSL forældet. Ved at bruge denne metode til at installere med en nyere version af OpenSSL, kan du drage fordel af moderne cifre som CHACHA20_POLY1305og protokoller som TLS 1.3, der er tilgængelige i OpenSSL 1.1.1. Desuden, ved at kompilere din egen binære, er du i stand til at skræddersy, hvilken funktionalitet din Nginx vil levere, hvilket er meget mere fleksibelt end at installere en forudbygget binær.


Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan konfigureres uovervågede opgraderinger på Debian 9 (Stretch)

Sådan konfigureres uovervågede opgraderinger på Debian 9 (Stretch)

Bruger du et andet system? Hvis du køber en Debian-server, bør du altid have de nyeste sikkerhedsrettelser og opdateringer, uanset om du sover eller ej

Opsæt din egen DNS-server på Debian/Ubuntu

Opsæt din egen DNS-server på Debian/Ubuntu

Denne vejledning forklarer, hvordan man opsætter en DNS-server ved hjælp af Bind9 på Debian eller Ubuntu. Gennem hele artiklen skal du erstatte dit-domænenavn.com i overensstemmelse hermed. Ved th

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Installer Lynis på Debian 8

Installer Lynis på Debian 8

Introduktion Lynis er et gratis, open source-systemrevisionsværktøj, der bruges af mange systemadministratorer til at verificere integriteten og hærde deres systemer. jeg

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Oprettelse af et netværk af Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Oprettelse af et netværk af Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Hvad skal du bruge En Vultr VPS med mindst 1 GB RAM. SSH-adgang (med root/administrative rettigheder). Trin 1: Installation af BungeeCord Første ting først

Sådan installeres Golang 1.8.3 på CentOS 7, Ubuntu 16.04 og Debian 9

Sådan installeres Golang 1.8.3 på CentOS 7, Ubuntu 16.04 og Debian 9

Golang er et programmeringssprog udviklet af Google. Takket være sin alsidighed, enkelhed og pålidelighed er Golang blevet en af ​​de mest populære

Nulstil MySQL Root Password på Debian/Ubuntu

Nulstil MySQL Root Password på Debian/Ubuntu

Hvis du har glemt din MySQL root-adgangskode, kan du nulstille den ved at følge trinene i denne artikel. Processen er ret enkel og fungerer på disse

Oprettelse af netværksshares ved hjælp af Samba på Debian

Oprettelse af netværksshares ved hjælp af Samba på Debian

Der er tidspunkter, hvor vi skal dele filer, der skal kunne ses af Windows-klienter. Da Fuse-baserede systemer kun virker på Linux, må du godt introducere

Opsætning af Counter Strike: Source på Debian

Opsætning af Counter Strike: Source på Debian

I denne vejledning vil vi opsætte en Counter Strike: Source-spilserver på Debian 7. Disse kommandoer blev testet på Debian 7, men de burde også virke o

Sådan installeres Unturned 2.2.5 på Debian 8

Sådan installeres Unturned 2.2.5 på Debian 8

I denne vejledning lærer du, hvordan du opsætter en Unturned 2.2.5-server på en Vultr VPS, der kører Debian 8. Bemærk: Dette er en redigeret version af Unturned, der ikke

Sådan installeres Cachet på Debian 8

Sådan installeres Cachet på Debian 8

I denne vejledning lærer du, hvordan du installerer Cachet på Debian 8. Cachet er et kraftfuldt open source-statussidesystem. Installation Denne vejledning er i gang

Sikkerhedskopier flere MySQL- eller MariaDB-databaser automatisk

Sikkerhedskopier flere MySQL- eller MariaDB-databaser automatisk

Introduktion I denne skrive-up, gå godt igennem, hvordan du sikkerhedskopierer flere MySQL- eller MariaDB-databaser, der sidder på den samme maskine ved hjælp af et brugerdefineret bash-script

Opsætning af Chroot på Debian

Opsætning af Chroot på Debian

Denne artikel vil lære dig, hvordan du opsætter et chroot-fængsel på Debian. Jeg går ud fra, at du bruger Debian 7.x. Hvis du kører Debian 6 eller 8, kan dette virke, men

Sådan installeres Reader Self 3.5 RSS Reader på en Debian 9 LAMP VPS

Sådan installeres Reader Self 3.5 RSS Reader på en Debian 9 LAMP VPS

Bruger du et andet system? Reader Self 3.5 er en enkel og fleksibel, gratis og open source, selvhostet RSS-læser og Google Reader-alternativ. Læser Sel

Sådan installeres Backdrop CMS 1.8.0 på en Debian 9 LAMP VPS

Sådan installeres Backdrop CMS 1.8.0 på en Debian 9 LAMP VPS

Bruger du et andet system? Backdrop CMS 1.8.0 er et enkelt og fleksibelt, mobilvenligt, gratis og open source Content Management System (CMS), der giver os mulighed for

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere