Sådan kompileres Nginx fra kilden på CentOS 7

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.2 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.40
  • 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 yum check-update || sudo yum update -y
    

Byg NGINX fra kilden

  1. Installer "Udviklingsværktøjer" og Vim editor:

    sudo yum groupinstall -y 'Development Tools' && sudo yum install -y vim
    
  2. Installer ekstra pakker til Enterprise Linux (EPEL):

    sudo yum install -y epel-release
    
  3. Download og installer valgfrie NGINX-afhængigheder:

    sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
    
  4. Download den seneste mainline- version af NGINX-kildekoden og udpak den:

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

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

    # PCRE version 8.40
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.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
    
  6. Fjern alle .tar.gzfiler. Vi har ikke brug for dem længere:

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

    cd ~/nginx-1.13.2
    
  8. For god ordens skyld skal du angive nginx-kildekodefiler og mapper:

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

    sudo cp ~/nginx-1.13.2/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
    
  10. For at få hjælp kan du liste de 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
    
  11. 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=CentOS \
                --builddir=nginx-1.13.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 \
                --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.40 \
                --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
    
  12. Symlink /usr/lib64/nginx/modulestil /etc/nginx/modulesmappe, så du kan indlæse dynamiske moduler i nginx-konfiguration som denne load_module modules/ngx_foo_module.so;:

    sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
    
  13. Udskriv NGINX-versionen, compilerversionen og konfigurer scriptparametre:

    sudo nginx -V
    
    # nginx version: nginx/1.13.2 (CentOS)
    # built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
    # . . .
    # . . .
    
  14. Opret NGINX-systemets bruger og gruppe:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  15. 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
    
  16. Opret en systemd enhedsfil til nginx:

    sudo vim /usr/lib/systemd/system/nginx.service
    
  17. 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 - 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
    
  18. Start og aktiver NGINX-tjenesten:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  19. Tjek om NGINX starter efter en genstart:

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

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

    sudo shutdown -r now
    
  22. Fjern arkaiske filer fra /etc/nginxmappen:

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

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.2/contrib/vim/* ~/.vim/
    
  24. Fjern alle .defaultsikkerhedskopifiler fra /etc/nginx/:

    sudo rm /etc/nginx/*.default
    

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

CentOS, Linux Guides, System Admin, Webservere

Efterlad en kommentar

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.

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.

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.

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