Sådan kompileres Nginx fra kilden på Fedora 25

NGINX kan bruges som en HTTP/HTTPS-server, omvendt proxyserver, mail-proxyserver, load balancer, TLS-terminator eller caching-server. Det er ret modulopbygget. Det har indbyggede moduler og tredjepartsmoduler oprettet af fællesskabet. Skrevet i programmeringssproget C, det er et meget hurtigt og let stykke software.

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.

Installation af NGINX fra kildekoden er relativt "let" - download den seneste version af NGINX kildekoden, konfigurer, byg og installer den.

I denne tutorial vil jeg bruge mainline- versionen, som er 1.13.3 i skrivende stund. Opdater versionsnumre i overensstemmelse hermed, når nyere versioner bliver tilgængelige.

Krav til at bygge NGINX fra kilden

Obligatoriske krav:

  • OpenSSL- biblioteksversion mellem 1.0.2 - 1.1.0
  • zlib biblioteksversion mellem 1.1.3 - 1.2.11
  • PCRE- biblioteksversion mellem 4.4 - 8.41
  • GCC- kompiler

Valgfrie krav:

Før du begynder

  1. Opret almindelig bruger med sudoadgang :

  2. Skift til den nye bruger:

    su - <username>
    
  3. Opdateringssystem:

    sudo dnf check-update || sudo dnf upgrade -y
    

Byg NGINX fra kilden

  1. Installer "Udviklingsværktøjer", Vim editor, wget og gcc-c++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. Download den seneste mainline- version af NGINX-kildekoden og fjern den:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Download NGINX-afhængighedernes kildekode og udpak dem:

    NGINX depends on 3 libraries: PCRE, zlib and OpenSSL:

    # PCRE version 8.41
    wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz && tar xzvf pcre-8.41.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.0f
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
    
  4. Download og installer valgfrie NGINX-afhængigheder:

    # perl
    sudo dnf install -y perl perl-devel perl-ExtUtils-Embed
    
    # libxslt
    sudo dnf install -y libxslt libxslt-devel
    
    # libxml2
    sudo dnf install -y libxml2 libxml2-devel
    
    # libgd
    sudo dnf install -y gd gd-devel
    
    # GeoIP
    sudo dnf install -y GeoIP GeoIP-devel
    
    # Libatomic_Ops
    sudo dnf install -y libatomic_ops libatomic_ops-devel
    
  5. Fjern alle .tar.gzfiler. Vi har ikke brug for dem længere:

    rm -rf *.tar.gz
    
  6. Gå til NGINX-kildebiblioteket:

    cd ~/nginx-1.13.3
    
  7. For god ordens skyld skal du angive NGINX-kildekodefiler og -mapper:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. Kopier NGINX-manualsiden til /usr/share/man/man8/:

    sudo cp ~/nginx-1.13.3/man/nginx.8 /usr/share/man/man8/
    sudo gzip /usr/share/man/man8/nginx.8
    # Check that Man page for NGINX is working
    man nginx
    
  9. For at få hjælp kan du liste tilgængelige konfigurationskontakter ved at køre:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. Konfigurer, kompilér og installer NGINX:

    ./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 \
                --pid-path=/var/run/nginx.pid \
                --lock-path=/var/run/nginx.lock \
                --user=nginx \
                --group=nginx \
                --build=Fedora \
                --builddir=nginx-1.13.3 \
                --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=/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.41 \
                --with-pcre-jit \
                --with-zlib=../zlib-1.2.11 \
                --with-openssl=../openssl-1.1.0f \
                --with-openssl-opt=no-nextprotoneg \
                --with-debug
    
    make
    sudo make install
    
  11. Udskriv NGINX-versionen, compilerversionen og konfigurer scriptparametre:

    nginx -V
    
    # nginx version: nginx/1.13.3 (Fedora)
    # built by gcc 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx . . .
    # . . .
    
  12. Opret NGINX-systemets bruger og gruppe:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  13. Tjek 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)
    # Just create directory
    sudo mkdir -p /var/cache/nginx/ && sudo nginx -t
    
  14. Opret en systemd enhedsfil til NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Kopiér/indsæt følgende indhold:

    NOTE: The location of the PID file and the NGINX binary may be different depending on how NGINX was compiled.

    [Unit]
    Description=Nginx - A high performance web server and a reverse proxy server
    Documentation=http://nginx.org/en/docs/
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/var/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 /var/run/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed
    
    [Install]
    WantedBy=multi-user.target
    
  16. Start NGINX:

    sudo systemctl start nginx.service
    
  17. Aktiver NGINX til at starte automatisk ved opstart:

    sudo systemctl enable nginx.service
    
  18. Tjek om NGINX starter efter en genstart:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. Tjek om NGINX kører:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. Genstart din VPS for at bekræfte, at NGINX starter automatisk:

    sudo shutdown -r now
    
  21. Fjern arkaiske filer fra /etc/nginx/mappen:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. Placer syntaksfremhævningsfiler af NGINX-konfiguration til vimi ~/.vim/. Du vil blive præsenteret for flot syntaksfremhævning, når du redigerer NGINX-konfigurationsfil:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. Lav en conf.d/mappe i /etc/nginx/mappen. I denne mappe kan du placere virtuelle servere og upstreams:

    sudo mkdir /etc/nginx/conf.d/
    
  24. Fjern udpakkede mapper og filer fra din hjemmemappe:

    rm -rf nginx-1.13.3/ openssl-1.1.0f/ pcre-8.41/ zlib-1.2.11/
    

Konklusion

Det er det. Du har nu den nyeste version af NGINX installeret. Det er kompileret statisk mod nogle vigtige biblioteker som OpenSSL. Ofte er systemets OpenSSL-version forældet. Ved at bruge denne metode til at installere med en nyere version af OpenSSL, kan du drage fordel af nye cifre som CHACHA20_POLY1305og protokoller som TLS 1.3, der vil være tilgængelige i OpenSSL 1.1.1(som ikke er blevet frigivet i skrivende stund).


Sådan installeres BigTree CMS på en Fedora 26 LAMP VPS

Sådan installeres BigTree CMS på en Fedora 26 LAMP VPS

Bruger du et andet system? BigTree CMS 4.2 er et hurtigt og let, gratis og open source, enterprise-grade content management system (CMS) med omfattende

Sådan installeres Koel på Fedora 28

Sådan installeres Koel på Fedora 28

Bruger du et andet system? Koel er en simpel webbaseret personlig lydstreaming-app skrevet i Vue på klientsiden og Laravel på serversiden. Koe

Sådan installeres Grav CMS på Fedora 28

Sådan installeres Grav CMS på Fedora 28

Bruger du et andet system? Grav er et open source flad-fil CMS skrevet i PHP. Grav kildekode er offentligt hostet på GitHub. Denne vejledning viser dig, hvordan t

Installation af Akaunting på Fedora 28

Installation af Akaunting på Fedora 28

Bruger du et andet system? Akaunting er en gratis open source og online regnskabssoftware designet til små virksomheder og freelancere. Den er bygget vid

Sådan installeres Tiny Tiny RSS Reader på en Fedora 26 LAMP VPS

Sådan installeres Tiny Tiny RSS Reader på en Fedora 26 LAMP VPS

Bruger du et andet system? Tiny Tiny RSS Reader er en gratis og open source selv-hostet webbaseret nyhedsfeed (RSS/Atom) læser og aggregator, designet til at allo

Sådan installeres InvoicePlane på Fedora 28

Sådan installeres InvoicePlane på Fedora 28

Bruger du et andet system? InvoicePlane er en gratis og open source faktureringsapplikation. Dens kildekode kan findes på dette Github-lager. Denne guide

Installer en Minecraft-server på Fedora 26

Installer en Minecraft-server på Fedora 26

Bruger du et andet system? I denne tutorial vil jeg guide dig gennem opsætning af en Minecraft-server på en højtydende SSD VPS hos Vultr. Du vil lære ho

Sådan kompileres Nginx fra kilden på Fedora 25

Sådan kompileres Nginx fra kilden på Fedora 25

Bruger du et andet system? NGINX kan bruges som en HTTP/HTTPS-server, omvendt proxyserver, mailproxyserver, load balancer, TLS-terminator eller cachin

Sådan installeres Pagekit 1.0 CMS på en Fedora 26 LAMP VPS

Sådan installeres Pagekit 1.0 CMS på en Fedora 26 LAMP VPS

Bruger du et andet system? Pagekit 1.0 CMS er et smukt, modulært, udvideligt og let, gratis og open source Content Management System (CMS) med

Sådan installeres Subrion 4.1 CMS på en Fedora 26 LAMP VPS

Sådan installeres Subrion 4.1 CMS på en Fedora 26 LAMP VPS

Bruger du et andet system? Subrion 4.1 CMS er et kraftfuldt og fleksibelt open source Content Management System (CMS), der bringer et intuitivt og klart indhold

Installer TaskServer (taskd) på Fedora 26

Installer TaskServer (taskd) på Fedora 26

Bruger du et andet system? TaskWarrior er et open source-tidsstyringsværktøj, der er en forbedring af Todo.txt-applikationen og dens kloner. På grund af th

Sådan installeres CMS Made Simple 2.2 på en Fedora 26 LAMP VPS

Sådan installeres CMS Made Simple 2.2 på en Fedora 26 LAMP VPS

Bruger du et andet system? CMS Made Simple 2.2 er et fleksibelt og udvidelsesvenligt, gratis og open source Content Management System (CMS) intelligent designet til at b.

Installerer Bro IDS på Fedora 25

Installerer Bro IDS på Fedora 25

Bruger du et andet system? Introduktion Bro er en open source netværkstrafikanalysator. Det er primært en sikkerhedsmonitor, der inspicerer al trafik på en linie

Sådan installeres X-Cart 5 på Fedora 31

Sådan installeres X-Cart 5 på Fedora 31

Bruger du et andet system? X-Cart er en ekstremt fleksibel open source e-handelsplatform med tonsvis af funktioner og integrationer. X-Cart kildekoden er vært

Sådan installeres Matomo Analytics på Fedora 28

Sådan installeres Matomo Analytics på Fedora 28

Bruger du et andet system? Matomo (tidligere Piwik) er en open source-analyseplatform, et åbent alternativ til Google Analytics. Matomo-kilden er vært o

Sådan installeres MyBB på Fedora 28

Sådan installeres MyBB på Fedora 28

Bruger du et andet system? MyBB er et gratis og open source, intuitivt og udvidelsesvenligt forumprogram. MyBB-kildekoden er hostet på GitHub. Denne guide vil sho

Sådan installeres og konfigureres TaskBoard på Fedora 30

Sådan installeres og konfigureres TaskBoard på Fedora 30

Bruger du et andet system? Introduktion TaskBoard er et gratis og open source-værktøj, der kan bruges til at holde styr på ting, der skal gøres. Det giver

Sådan installeres LimeSurvey CE på Fedora 28

Sådan installeres LimeSurvey CE på Fedora 28

Bruger du et andet system? LimeSurvey er et open source-undersøgelsesprogram skrevet i PHP. LimeSurvey-kildekoden er hostet på GitHub. Denne guide vil vise dig

Sådan installeres Backdrop CMS 1.8.0 på en Fedora 26 LAMP VPS

Sådan installeres Backdrop CMS 1.8.0 på en Fedora 26 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

Sådan installeres Craft CMS på Fedora 29

Sådan installeres Craft CMS på Fedora 29

Bruger du et andet system? Craft CMS er et open source CMS skrevet i PHP. Craft CMS-kildekoden er hostet på GitHub. Denne vejledning viser dig, hvordan du installerer

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