Ako skompilovať Nginx zo zdroja na CentOS 7

NGINX je možné použiť ako HTTP/HTTPS server, reverzný proxy server, poštový proxy server, vyrovnávač zaťaženia, TLS terminátor alebo cachovací server. Dizajnovo je dosť modulárny. Má natívne moduly a moduly tretích strán vytvorené komunitou. Je napísaný v programovacom jazyku C a je to veľmi rýchly a ľahký softvér.

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.

Inštalácia NGINX zo zdrojového kódu je pomerne „jednoduchá“ – stiahnite si najnovšiu verziu zdrojového kódu NGINX, nakonfigurujte, zostavte a nainštalujte.

V tomto návode budem používať hlavnú verziu, ktorá je v čase písania 1.13.2. Aktualizujte čísla verzií podľa toho, keď budú k dispozícii novšie verzie.

Požiadavky na zostavenie NGINX zo zdroja

Povinné požiadavky:

  • Verzia knižnice OpenSSL medzi 1.0.2 - 1.1.0
  • Verzia knižnice zlib medzi 1.1.3 - 1.2.11
  • Verzia knižnice PCRE medzi 4.4 - 8.40
  • Kompilátor GCC

Voliteľné požiadavky:

Predtým ako začneš

  1. Vytvorte bežného používateľa s sudoprístupom .
  2. Prepnúť na nového používateľa:

    su - <username>
    
  3. Aktualizovať systém:

    sudo yum check-update || sudo yum update -y
    

Zostavte NGINX zo zdroja

  1. Nainštalujte "Development Tools" a editor Vim:

    sudo yum groupinstall -y 'Development Tools' && sudo yum install -y vim
    
  2. Inštalácia extra balíkov pre Enterprise Linux (EPEL):

    sudo yum install -y epel-release
    
  3. Stiahnite si a nainštalujte voliteľné závislosti NGINX:

    sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
    
  4. Stiahnite si najnovšiu hlavnú verziu zdrojového kódu NGINX a rozbaľte ho:

    wget https://nginx.org/download/nginx-1.13.2.tar.gz && tar zxvf nginx-1.13.2.tar.gz
    
  5. Stiahnite si zdrojový kód závislostí NGINX a extrahujte ich:

    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. Odstráňte všetky .tar.gzsúbory. Už ich nepotrebujeme:

    rm -rf *.tar.gz
    
  7. Prejdite do zdrojového adresára NGINX:

    cd ~/nginx-1.13.2
    
  8. Pre dobrú mieru uveďte zoznam súborov a adresárov zdrojového kódu nginx:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  9. Skopírujte manuálovú stránku NGINX do /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. Ak potrebujete pomoc, môžete uviesť zoznam dostupných konfiguračných prepínačov spustením:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  11. Nakonfigurujte, skompilujte a nainštalujte 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. Symbolický odkaz /usr/lib64/nginx/modulesna /etc/nginx/modulesadresár, aby ste mohli načítať dynamické moduly v konfigurácii nginx takto load_module modules/ngx_foo_module.so;:

    sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
    
  13. Vytlačte verziu NGINX, verziu kompilátora a nakonfigurujte parametre skriptu:

    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. Vytvorte používateľa a skupinu systému NGINX:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  15. Skontrolujte syntax a potenciálne chyby:

    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. Vytvorte súbor systemd unit pre nginx:

    sudo vim /usr/lib/systemd/system/nginx.service
    
  17. Skopírujte/prilepte nasledujúci obsah:

    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. Spustite a povoľte službu NGINX:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  19. Skontrolujte, či sa NGINX spustí po reštarte:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  20. Skontrolujte, či je spustený NGINX:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  21. Reštartujte svoj VPS a overte, či sa NGINX spustí automaticky:

    sudo shutdown -r now
    
  22. Odstráňte archaické súbory z /etc/nginxadresára:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  23. Umiestnite zvýraznenie syntaxe konfigurácie NGINX pre vimdo ~/.vim/. Pri úprave konfiguračného súboru NGINX získate pekné zvýraznenie syntaxe:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.2/contrib/vim/* ~/.vim/
    
  24. Odstráňte všetky .defaultzáložné súbory z /etc/nginx/:

    sudo rm /etc/nginx/*.default
    

Záver

To je všetko. Teraz máte nainštalovanú najnovšiu verziu NGINX. Je kompilovaný staticky proti niektorým dôležitým knižniciam, ako je OpenSSL. Verzia systému OpenSSL je často zastaraná. Použitím tejto metódy inštalácie s novšou verziou OpenSSL môžete využiť nové šifry ako CHACHA20_POLY1305a protokoly ako TLS 1.3, ktoré budú dostupné v OpenSSL 1.1.1(ktoré v čase písania tohto článku nebolo vydané).

Zanechať komentár

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.

Útoky DDOS: Stručný prehľad

Útoky DDOS: Stručný prehľad

Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.

Funkcionality vrstiev referenčnej architektúry veľkých dát

Funkcionality vrstiev referenčnej architektúry veľkých dát

Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.

Vývoj ukladania dát – Infografika

Vývoj ukladania dát – Infografika

Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac