Kaip kompiliuoti Nginx iš šaltinio Ubuntu 16.04

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.1. 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.40
  • GCC kompiliatorius

Neprivalomi reikalavimai:

Prieš tau pradedant

  1. Sukurkite įprastą vartotoją su sudoprieiga .

  2. Perjungti į naują vartotoją:

    su - <username>
    
  3. Atnaujinti sistemą:

    sudo apt update && sudo apt upgrade -y
    

Sukurkite NGINX iš šaltinio

  1. NGINX yra programa, parašyta C, todėl turime įdiegti C kompiliatorių (GCC).

    sudo apt install build-essential -y
    
  2. Atsisiųskite naujausią NGINX šaltinio kodo versiją ir ištraukite ją:

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

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

    # PCRE version 4.4 - 8.40
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz
    
    # zlib version 1.1.3 - 1.2.11
    wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
    
    # OpenSSL version 1.0.2 - 1.1.0
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
    
  4. Pašalinti visus .tar.gzfailus. Mums jų nebereikia:

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

    cd ~/nginx-1.13.1
    
  6. Jei reikia pagalbos, galite pateikti galimų konfigūracijos jungiklių sąrašą paleisdami:

    ./configure --help
    
  7. Konfigūruokite, sukompiliuokite ir įdiekite NGINX:

    ./configure --prefix=/usr/share/nginx \
                --sbin-path=/usr/sbin/nginx \
                --modules-path=/usr/lib/nginx/modules \
                --conf-path=/etc/nginx/nginx.conf \
                --error-log-path=/var/log/nginx/error.log \
                --http-log-path=/var/log/nginx/access.log \
                --pid-path=/run/nginx.pid \
                --lock-path=/var/lock/nginx.lock \
                --user=www-data \
                --group=www-data \
                --build=Ubuntu \
                --http-client-body-temp-path=/var/lib/nginx/body \
                --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
                --http-proxy-temp-path=/var/lib/nginx/proxy \
                --http-scgi-temp-path=/var/lib/nginx/scgi \
                --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
                --with-openssl=../openssl-1.1.0f \
                --with-openssl-opt=enable-ec_nistp_64_gcc_128 \
                --with-openssl-opt=no-nextprotoneg \
                --with-openssl-opt=no-weak-ssl-ciphers \
                --with-openssl-opt=no-ssl3 \
                --with-pcre=../pcre-8.40 \
                --with-pcre-jit \
                --with-zlib=../zlib-1.2.11 \
                --with-compat \
                --with-file-aio \
                --with-threads \
                --with-http_addition_module \
                --with-http_auth_request_module \
                --with-http_dav_module \
                --with-http_flv_module \
                --with-http_gunzip_module \
                --with-http_gzip_static_module \
                --with-http_mp4_module \
                --with-http_random_index_module \
                --with-http_realip_module \
                --with-http_slice_module \
                --with-http_ssl_module \
                --with-http_sub_module \
                --with-http_stub_status_module \
                --with-http_v2_module \
                --with-http_secure_link_module \
                --with-mail \
                --with-mail_ssl_module \
                --with-stream \
                --with-stream_realip_module \
                --with-stream_ssl_module \
                --with-stream_ssl_preread_module \
                --with-debug \
                --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
                --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'
    make 
    sudo make install
    
  8. Pašalinkite visus atsisiųstus failus iš namų katalogo, šiuo atveju /home/username:

    cd ~
    rm -r nginx-1.13.1/ openssl-1.1.0f/ pcre-8.40/ zlib-1.2.11/
    
  9. Patikrinkite NGINX versiją ir kompiliavimo laiko parinktis:

    sudo nginx -v && sudo nginx -V
    
    # nginx version: nginx/1.13.0 (Ubuntu)
    # built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
    # built with OpenSSL 1.1.0f  25 May 2017
    # TLS SNI support enabled
    # configure arguments: --prefix=/etc/nginx . . .
    # . . .
    # . . .
    
  10. Patikrinkite sintaksę ir galimas klaidas:

    sudo nginx -t
    # Will throw this error nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)
    # Just create directory
    mkdir -p /var/lib/nginx && sudo nginx -t
    
  11. Sukurkite NGINX sistemos vieneto failą:

    sudo vim /etc/systemd/system/nginx.service
    
  12. 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=A high performance web server and a reverse proxy server
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/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 /run/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed
    
    [Install]
    WantedBy=multi-user.target
    
  13. Paleiskite ir įjunkite NGINX paslaugą:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  14. Patikrinkite, ar NGINX bus paleistas po perkrovimo:

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

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

    sudo shutdown -r now
    
  17. Sukurkite UFW NGINX programos profilį:

    sudo vim /etc/ufw/applications.d/nginx
    
  18. Nukopijuokite / įklijuokite šį turinį:

    [Nginx HTTP]
    title=Web Server (Nginx, HTTP)
    description=Small, but very powerful and efficient web server
    ports=80/tcp
    
    [Nginx HTTPS]
    title=Web Server (Nginx, HTTPS)
    description=Small, but very powerful and efficient web server
    ports=443/tcp
    
    [Nginx Full]
    title=Web Server (Nginx, HTTP + HTTPS)
    description=Small, but very powerful and efficient web server
    ports=80,443/tcp
    
  19. Dabar patikrinkite, ar sukurti ir atpažinti UFW programų profiliai:

    sudo ufw app list
    
    # Available applications:
      # Nginx Full
      # Nginx HTTP
      # Nginx HTTPS
      # OpenSSH
    

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 pasiekiami OpenSSL 1.1.1(kuri dar nebuvo išleista).

Palikti komentarą

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.

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.

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.

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į