Kuidas kompileerida Nginxi allikast Fedora 25-s

NGINX-i saab kasutada HTTP/HTTPS-serverina, pöördpuhverserverina, meilipuhverserverina, koormuse tasakaalustajana, TLS-i lõpetajana või vahemällu salvestava serverina. See on disainilt üsna modulaarne. Sellel on kogukonna loodud algmoodulid ja kolmanda osapoole moodulid. Programmeerimiskeeles C kirjutatud on see väga kiire ja kerge tarkvara.

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.

NGINX-i installimine lähtekoodist on suhteliselt "lihtne" – laadige alla NGINX-i lähtekoodi uusim versioon, seadistage, koostage ja installige.

Sel juhendaja ma kasutada põhilistele versioon, mis on 1.13.3 ajal kirjalikult. Värskendage versiooninumbreid vastavalt, kui uuemad versioonid on saadaval.

Nõuded NGINX-i allikast ehitamiseks

Kohustuslikud nõuded:

  • OpenSSL-i teegi versioon vahemikus 1.0.2–1.1.0
  • zlib teegi versioon vahemikus 1.1.3–1.2.11
  • PCRE teegi versioon vahemikus 4.4–8.41
  • GCC kompilaator

Valikulised nõuded:

Enne alustamist

  1. Looge tavakasutaja, kellel on sudojuurdepääs :

  2. Lülitumine uuele kasutajale:

    su - <username>
    
  3. Uuenda süsteemi:

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

Ehitage NGINX allikast

  1. Installige "Arendustööriistad", Vimi redaktor, wget ja gcc-c++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. Lae alla uusim põhilistele versioon nginx lähtekoodi ja Ekstrakti see:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Laadige alla NGINX-i sõltuvuste lähtekood ja eraldage need:

    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. Laadige alla ja installige valikulised NGINX-i sõltuvused:

    # 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. Eemaldage kõik .tar.gzfailid. Me ei vaja neid enam:

    rm -rf *.tar.gz
    
  6. Minge NGINX-i lähtekataloogi:

    cd ~/nginx-1.13.3
    
  7. Hea mõõtmise huvides loetlege NGINX-i lähtekoodifailid ja kataloogid:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. Kopeerige NGINX-i käsiraamatu leht asukohta /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. Abi saamiseks saate loetleda saadaolevad konfiguratsioonilülitid, käivitades:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. Konfigureerige, kompileerige ja installige 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. Printige NGINX-i versioon, kompilaatori versioon ja konfigureerige skripti parameetrid:

    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. Looge NGINX süsteemi kasutaja ja rühm:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  13. Kontrollige süntaksit ja võimalikke vigu:

    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. Looge NGINX-i jaoks süsteemiüksuse fail:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Kopeerige/kleepige järgmine sisu:

    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. Käivitage NGINX:

    sudo systemctl start nginx.service
    
  17. Lubage NGINX-i käivitamisel automaatselt käivituda:

    sudo systemctl enable nginx.service
    
  18. Kontrollige, kas NGINX käivitub pärast taaskäivitamist:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. Kontrollige, kas NGINX töötab:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. Taaskäivitage oma VPS, et kontrollida, kas NGINX käivitub automaatselt:

    sudo shutdown -r now
    
  21. Eemaldage /etc/nginx/kataloogist arhailised failid :

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. Koht süntaksi esiletõstmise faile nginx konfiguratsiooni vimarvesse ~/.vim/. NGINX konfiguratsioonifaili redigeerimisel kuvatakse teile kena süntaksi esiletõst:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. Tee conf.d/kataloogis /etc/nginx/kataloog. Sellesse kataloogi saate paigutada virtuaalservereid ja ülesvoolu:

    sudo mkdir /etc/nginx/conf.d/
    
  24. Eemaldage oma kodukataloogist ekstraktitud kataloogid ja failid:

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

Järeldus

See on kõik. Nüüd on teil installitud NGINX-i uusim versioon. See kompileeritakse staatiliselt mõne olulise teeki, näiteks OpenSSL-i vastu. Sageli on süsteemi OpenSSL-i versioon aegunud. Kasutades seda OpenSSL-i uuema versiooniga installimise meetodit, saate kasutada uusi šifreid, CHACHA20_POLY1305nagu TLS 1.3 , ja protokolle, mis on saadaval OpenSSL-is 1.1.1(mida pole kirjutamise ajal välja antud).

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit