Како компајлирати Нгинк из извора на ЦентОС 7

НГИНКС се може користити као ХТТП/ХТТПС сервер, обрнути прокси сервер, маил проки сервер, балансатор оптерећења, ТЛС терминатор или сервер за кеширање. По дизајну је прилично модуларан. Има изворне модуле и модуле треће стране које је креирала заједница. Написан у програмском језику Ц, то је веома брз и лаган комад софтвера.

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.

Инсталирање НГИНКС-а из изворног кода је релативно „лако“ – преузмите најновију верзију изворног кода НГИНКС-а, конфигуришите је, направите и инсталирајте.

У овом туторијалу користићу главну верзију, која је 1.13.2 у време писања. Ажурирајте бројеве верзија у складу са тим када новије верзије постану доступне.

Захтеви за прављење НГИНКС-а из извора

Обавезни захтеви:

  • Верзија библиотеке ОпенССЛ између 1.0.2 - 1.1.0
  • верзија злиб библиотеке између 1.1.3 - 1.2.11
  • Верзија ПЦРЕ библиотеке између 4.4 - 8.40
  • ГЦЦ Цомпилер

Опциони захтеви:

Пре него што почнете

  1. Креирајте редовног корисника са sudoприступом .
  2. Пређите на новог корисника:

    su - <username>
    
  3. Систем ажурирања:

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

Направи НГИНКС из извора

  1. Инсталирајте „Алатке за развој“ и Вим едитор:

    sudo yum groupinstall -y 'Development Tools' && sudo yum install -y vim
    
  2. Инсталирајте додатне пакете за Ентерприсе Линук (ЕПЕЛ):

    sudo yum install -y epel-release
    
  3. Преузмите и инсталирајте опционе НГИНКС зависности:

    sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
    
  4. Преузмите најновију главну верзију НГИНКС изворног кода и распакујте га:

    wget https://nginx.org/download/nginx-1.13.2.tar.gz && tar zxvf nginx-1.13.2.tar.gz
    
  5. Преузмите изворни код НГИНКС зависности и распакујте их:

    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. Уклоните све .tar.gzдатотеке. Не требају нам више:

    rm -rf *.tar.gz
    
  7. Идите у изворни директоријум НГИНКС:

    cd ~/nginx-1.13.2
    
  8. За добру меру, наведите датотеке и директоријуме нгинк изворног кода:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  9. Копирајте страницу приручника за НГИНКС на /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. За помоћ, можете навести доступне конфигурационе прекидаче тако што ћете покренути:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  11. Конфигуришите, компајлирајте и инсталирајте НГИНКС:

    ./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. Симболичка веза /usr/lib64/nginx/modulesдо /etc/nginx/modulesдиректоријума, тако да можете учитати динамичке модуле у нгинк конфигурацији овако load_module modules/ngx_foo_module.so;:

    sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
    
  13. Одштампајте верзију НГИНКС-а, верзију компајлера и конфигуришите параметре скрипте:

    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. Креирајте корисника и групу НГИНКС система:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  15. Проверите синтаксу и потенцијалне грешке:

    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. Направите системску јединичну датотеку за нгинк:

    sudo vim /usr/lib/systemd/system/nginx.service
    
  17. Копирајте/налепите следећи садржај:

    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. Покрените и омогућите НГИНКС услугу:

    sudo systemctl start nginx.service && sudo systemctl enable nginx.service
    
  19. Проверите да ли ће се НГИНКС покренути након поновног покретања:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  20. Проверите да ли је НГИНКС покренут:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  21. Поново покрените свој ВПС да бисте проверили да ли се НГИНКС покреће аутоматски:

    sudo shutdown -r now
    
  22. Уклоните архаичне датотеке из /etc/nginxдиректоријума:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  23. Поставите истицање синтаксе НГИНКС конфигурације за vimу ~/.vim/. Добићете лепо истицање синтаксе када уређујете НГИНКС конфигурациону датотеку:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.2/contrib/vim/* ~/.vim/
    
  24. Уклоните све .defaultдатотеке резервних копија са /etc/nginx/:

    sudo rm /etc/nginx/*.default
    

Закључак

То је то. Сада имате инсталирану најновију верзију НГИНКС-а. Саставља се статички у односу на неке важне библиотеке као што је ОпенССЛ. Често је системска ОпенССЛ верзија застарела. Коришћењем овог метода инсталирања са новијом верзијом ОпенССЛ-а, можете искористити предности нових шифара CHACHA20_POLY1305и протокола попут ТЛС 1.3 који ће бити доступни у ОпенССЛ-у 1.1.1(који није објављен у време писања).

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више