Kaip kompiliuoti Nginx iš šaltinio Fedora 25

NGINX gali būti naudojamas kaip HTTP/HTTPS serveris, atvirkštinis tarpinis serveris, pašto tarpinis serveris, apkrovos balansavimo priemonė, TLS terminatorius arba talpyklos serveris. Pagal dizainą jis yra gana modulinis. Jame yra vietinių modulių ir trečiųjų šalių modulių, kuriuos sukūrė bendruomenė. Parašyta C programavimo kalba, tai labai greita ir lengva programinė įranga.

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.

Įdiegti NGINX iš šaltinio kodo yra gana „lengva“ – atsisiųskite naujausią NGINX šaltinio kodo versiją, sukonfigūruokite, sukurkite ir įdiekite.

Šioje pamokoje naudosiu pagrindinę versiją, kuri rašymo metu yra 1.13.3. Atitinkamai atnaujinkite versijų numerius, kai pasirodys naujesnės versijos.

Reikalavimai NGINX kūrimui iš šaltinio

Privalomi reikalavimai:

  • OpenSSL bibliotekos versija nuo 1.0.2 iki 1.1.0
  • zlib bibliotekos versija nuo 1.1.3 iki 1.2.11
  • PCRE bibliotekos versija nuo 4.4 iki 8.41
  • GCC kompiliatorius

Neprivalomi reikalavimai:

Prieš tau pradedant

  1. Sukurkite įprastą vartotoją, turintį sudoprieigą :

  2. Perjungti į naują vartotoją:

    su - <username>
    
  3. Atnaujinti sistemą:

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

Sukurkite NGINX iš šaltinio

  1. Įdiekite „Kūrimo įrankius“, Vim redaktorių, wget ir gcc-c++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. Atsisiųskite naujausią pagrindinės NGINX šaltinio kodo versiją ir pašalinkite ją:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Atsisiųskite NGINX priklausomybių šaltinio kodą ir ištraukite juos:

    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. Atsisiųskite ir įdiekite pasirenkamas NGINX priklausomybes:

    # 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. Pašalinti visus .tar.gzfailus. Mums jų nebereikia:

    rm -rf *.tar.gz
    
  6. Eikite į NGINX šaltinio katalogą:

    cd ~/nginx-1.13.3
    
  7. Kad būtų geriau, išvardykite NGINX šaltinio kodo failus ir katalogus:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. Nukopijuokite NGINX vadovo puslapį į /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. Jei reikia pagalbos, galite pateikti galimų konfigūracijos jungiklių sąrašą paleisdami:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. Konfigūruokite, sukompiliuokite ir įdiekite 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. Išspausdinkite NGINX versiją, kompiliatoriaus versiją ir sukonfigūruokite scenarijaus parametrus:

    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. Sukurkite NGINX sistemos vartotoją ir grupę:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  13. Patikrinkite sintaksę ir galimas klaidas:

    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. Sukurkite NGINX sistemos vieneto failą:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Nukopijuokite / įklijuokite šį turinį:

    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. Paleiskite NGINX:

    sudo systemctl start nginx.service
    
  17. Įgalinti NGINX automatiškai paleisti įkrovos metu:

    sudo systemctl enable nginx.service
    
  18. Patikrinkite, ar NGINX bus paleistas po perkrovimo:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. Patikrinkite, ar veikia NGINX:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. Iš naujo paleiskite VPS, kad patikrintumėte, ar NGINX paleidžiamas automatiškai:

    sudo shutdown -r now
    
  21. Pašalinkite archajiškus failus iš /etc/nginx/katalogo:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. Įdėkite NGINX konfigūracijos sintaksės paryškinimo failus vimį ~/.vim/. Redaguojant NGINX konfigūracijos failą, jums bus pateiktas gražus sintaksės paryškinimas:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. Sukurkite conf.d/katalogą /etc/nginx/kataloge. Šiame kataloge galite patalpinti virtualius serverius ir aukštesnius srautus:

    sudo mkdir /etc/nginx/conf.d/
    
  24. Pašalinkite ištrauktus katalogus ir failus iš savo namų katalogo:

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

Išvada

Viskas. Dabar įdiegta naujausia NGINX versija. Jis statiškai kompiliuojamas su kai kuriomis svarbiomis bibliotekomis, tokiomis kaip OpenSSL. Dažnai sistemos OpenSSL versija yra pasenusi. Naudodami šį diegimo metodą su naujesne OpenSSL versija, galite pasinaudoti naujais šifrais, CHACHA20_POLY1305pvz., TLS 1.3 , ir protokolais , kurie bus prieinami OpenSSL 1.1.1(kuris nebuvo išleistas rašant).


Kaip įdiegti „BigTree CMS“ Fedora 26 LAMP VPS

Kaip įdiegti „BigTree CMS“ Fedora 26 LAMP VPS

Naudojate kitą sistemą? BigTree CMS 4.2 yra greita ir lengva, nemokama ir atviro kodo, įmonės lygio turinio valdymo sistema (TVS), turinti platų

Kaip įdiegti „Koel“ „Fedora 28“.

Kaip įdiegti „Koel“ „Fedora 28“.

Naudojate kitą sistemą? „Koel“ yra paprasta žiniatinklio asmeninė garso transliacijos programa, parašyta „Vue“ kliento pusėje ir „Laravel“ serverio pusėje. Koe

Kaip įdiegti „Grav CMS“ „Fedora 28“.

Kaip įdiegti „Grav CMS“ „Fedora 28“.

Naudojate kitą sistemą? Grav yra atvirojo kodo plokščių failų TVS, parašyta PHP. „Grav“ šaltinio kodas viešai priglobtas „GitHub“. Šis vadovas parodys, kaip t

„Akaunting“ diegimas „Fedora 28“.

„Akaunting“ diegimas „Fedora 28“.

Naudojate kitą sistemą? Akaunting yra nemokama atvirojo kodo ir internetinė apskaitos programinė įranga, skirta mažoms įmonėms ir laisvai samdomiems darbuotojams. Jis pastatytas sąmojingai

Kaip įdiegti mažytį RSS skaitytuvą Fedora 26 LAMP VPS

Kaip įdiegti mažytį RSS skaitytuvą Fedora 26 LAMP VPS

Naudojate kitą sistemą? Tiny Tiny RSS Reader yra nemokama ir atviro kodo savarankiškai priglobta žiniatinklio naujienų kanalo (RSS/Atom) skaitytuvas ir kaupiklis, skirtas

Kaip įdiegti „InvoicePlane“ „Fedora 28“.

Kaip įdiegti „InvoicePlane“ „Fedora 28“.

Naudojate kitą sistemą? „InvoicePlane“ yra nemokama atvirojo kodo sąskaitų faktūrų išrašymo programa. Jo šaltinio kodą galite rasti šioje „Github“ saugykloje. Šis vadovas

Įdiekite „Minecraft“ serverį „Fedora 26“.

Įdiekite „Minecraft“ serverį „Fedora 26“.

Naudojate kitą sistemą? Šioje pamokoje aš padėsiu jums nustatyti „Minecraft“ serverį didelio našumo SSD VPS „Vultr“. Jūs išmoksite ho

Kaip kompiliuoti Nginx iš šaltinio Fedora 25

Kaip kompiliuoti Nginx iš šaltinio Fedora 25

Naudojate kitą sistemą? NGINX gali būti naudojamas kaip HTTP/HTTPS serveris, atvirkštinis tarpinis serveris, pašto tarpinis serveris, apkrovos balansavimo priemonė, TLS terminatorius arba talpykla.

Kaip įdiegti Pagekit 1.0 CMS Fedora 26 LAMP VPS

Kaip įdiegti Pagekit 1.0 CMS Fedora 26 LAMP VPS

Naudojate kitą sistemą? Pagekit 1.0 TVS yra graži, modulinė, išplečiama ir lengva, nemokama ir atviro kodo turinio valdymo sistema (TVS) su

Kaip įdiegti Subrion 4.1 CMS Fedora 26 LAMP VPS

Kaip įdiegti Subrion 4.1 CMS Fedora 26 LAMP VPS

Naudojate kitą sistemą? Subrion 4.1 TVS yra galinga ir lanksti atvirojo kodo turinio valdymo sistema (TVS), kuri suteikia intuityvų ir aiškų turinį

Įdiekite TaskServer (taskd) Fedora 26

Įdiekite TaskServer (taskd) Fedora 26

Naudojate kitą sistemą? TaskWarrior yra atvirojo kodo laiko valdymo įrankis, kuris yra Todo.txt programos ir jos klonų patobulinimas. Dėl th

Kaip įdiegti CMS Made Simple 2.2 Fedora 26 LAMP VPS

Kaip įdiegti CMS Made Simple 2.2 Fedora 26 LAMP VPS

Naudojate kitą sistemą? CMS Made Simple 2.2 yra lanksti ir išplečiama, nemokama ir atvirojo kodo turinio valdymo sistema (TVS), sumaniai sukurta

„Bro IDS“ diegimas „Fedora 25“.

„Bro IDS“ diegimas „Fedora 25“.

Naudojate kitą sistemą? Įvadas Bro yra atvirojo kodo tinklo srauto analizatorius. Tai visų pirma saugos monitorius, kuris tikrina visą eismą linijoje

Kaip įdiegti „Matomo Analytics“ „Fedora 28“.

Kaip įdiegti „Matomo Analytics“ „Fedora 28“.

Naudojate kitą sistemą? „Matomo“ (anksčiau „Piwik“) yra atvirojo kodo analizės platforma, atvira „Google Analytics“ alternatyva. Matomo šaltinis yra o

Kaip įdiegti „MyBB“ „Fedora 28“.

Kaip įdiegti „MyBB“ „Fedora 28“.

Naudojate kitą sistemą? MyBB yra nemokama atvirojo kodo, intuityvi ir išplečiama forumo programa. „MyBB“ šaltinio kodas yra „GitHub“. Šis vadovas padės

Kaip įdiegti ir konfigūruoti užduočių lentą „Fedora 30“.

Kaip įdiegti ir konfigūruoti užduočių lentą „Fedora 30“.

Naudojate kitą sistemą? Įvadas TaskBoard yra nemokamas atvirojo kodo įrankis, kurį galima naudoti norint sekti dalykus, kuriuos reikia atlikti. Tai suteikia

Kaip įdiegti „LimeSurvey CE“ „Fedora 28“.

Kaip įdiegti „LimeSurvey CE“ „Fedora 28“.

Naudojate kitą sistemą? LimeSurvey yra atvirojo kodo apklausų programa, parašyta PHP. LimeSurvey šaltinio kodas yra priglobtas GitHub. Šis vadovas jums parodys

Kaip įdiegti Backdrop CMS 1.8.0 Fedora 26 LAMP VPS

Kaip įdiegti Backdrop CMS 1.8.0 Fedora 26 LAMP VPS

Naudojate kitą sistemą? Backdrop CMS 1.8.0 yra paprasta ir lanksti, mobiliesiems pritaikyta nemokama ir atvirojo kodo turinio valdymo sistema (TVS), kuri leidžia mums

Kaip įdiegti „Craft CMS“ „Fedora 29“.

Kaip įdiegti „Craft CMS“ „Fedora 29“.

Naudojate kitą sistemą? Craft CMS yra atvirojo kodo TVS, parašyta PHP. „Craft CMS“ šaltinio kodas yra „GitHub“. Šis vadovas parodys, kaip įdiegti

Kaip įdiegti „Gitea“ „Fedora 29“.

Kaip įdiegti „Gitea“ „Fedora 29“.

Naudojate kitą sistemą? Gitea yra alternatyvi atvirojo kodo, savarankiškai priglobta versijų valdymo sistema, kurią maitina Git. Gitea parašyta golangu ir yra

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį