Как да компилирам Nginx от източник на Fedora 25

NGINX може да се използва като HTTP/HTTPS сървър, обратен прокси сървър, имейл прокси сървър, балансьор на натоварване, TLS терминатор или кеш сървър. Той е доста модулен по дизайн. Той има собствени модули и модули на трети страни, създадени от общността. Написан на езика за програмиране C, това е много бърз и лек софтуер.

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 от изходния код е сравнително "лесно" - изтеглете най-новата версия на изходния код на NGINX, конфигурирайте, изградете и инсталирайте.

В този урок ще използвам основната версия, която е 1.13.3 към момента на писане. Актуализирайте съответно номерата на версиите, когато станат налични по-нови версии.

Изисквания за изграждане на NGINX от източник

Задължителни изисквания:

  • Версия на библиотеката OpenSSL между 1.0.2 - 1.1.0
  • версия на библиотеката zlib между 1.1.3 - 1.2.11
  • Версия на библиотеката PCRE между 4.4 - 8.41
  • GCC компилатор

Изисквания по избор:

Преди да започнеш

  1. Създайте обикновен потребител с sudoдостъп :

  2. Превключете към новия потребител:

    su - <username>
    
  3. Актуализиране на системата:

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

Създайте NGINX от източник

  1. Инсталирайте "инструменти за разработка", редактор на Vim, wget и gcc-c++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. Изтеглете най-новата основна версия на изходния код на NGINX и го разархивирайте:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Изтеглете изходния код на зависимостите на NGINX и ги извлечете:

    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. Изтеглете и инсталирайте незадължителни NGINX зависимости:

    # 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. Премахнете всички .tar.gzфайлове. Вече не ни трябват:

    rm -rf *.tar.gz
    
  6. Отидете в изходната директория на NGINX:

    cd ~/nginx-1.13.3
    
  7. За добра мярка избройте файловете и директориите с изходен код на NGINX:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. Копирайте страницата с ръководството на NGINX на /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. За помощ можете да изброите наличните превключватели за конфигурация, като изпълните:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. Конфигурирайте, компилирайте и инсталирайте 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. Отпечатайте версията на NGINX, версията на компилатора и конфигурирайте параметрите на скрипта:

    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. Създайте потребителя и групата на системата NGINX:

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

    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. Създайте файл systemd единица за NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Копирайте/поставете следното съдържание:

    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. Стартирайте NGINX:

    sudo systemctl start nginx.service
    
  17. Разрешете NGINX да стартира автоматично при стартиране:

    sudo systemctl enable nginx.service
    
  18. Проверете дали NGINX ще се стартира след рестартиране:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. Проверете дали NGINX работи:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. Рестартирайте вашия VPS, за да проверите дали NGINX се стартира автоматично:

    sudo shutdown -r now
    
  21. Премахнете архаичните файлове от /etc/nginx/директорията:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. Поставете файловете за подчертаване на синтаксиса на конфигурацията на NGINX за vimв ~/.vim/. Ще ви бъде представено хубаво подчертаване на синтаксиса, когато редактирате конфигурационния файл на NGINX:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. Направете conf.d/директория в /etc/nginx/директорията. В тази директория можете да поставите виртуални сървъри и възходящи:

    sudo mkdir /etc/nginx/conf.d/
    
  24. Премахнете извлечените директории и файлове от вашата домашна директория:

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

Заключение

Това е. Вече имате инсталирана най-новата версия на NGINX. Той се компилира статично срещу някои важни библиотеки като OpenSSL. Често версията на OpenSSL на системата е остаряла. Като използвате този метод за инсталиране с по-нова версия на OpenSSL, можете да се възползвате от нови шифри CHACHA20_POLY1305и протоколи като TLS 1.3, които ще бъдат налични в OpenSSL 1.1.1(който не е бил пуснат към момента на писане).


Как да инсталирате BigTree CMS на Fedora 26 LAMP VPS

Как да инсталирате BigTree CMS на Fedora 26 LAMP VPS

Използване на различна система? BigTree CMS 4.2 е бърза и лека, безплатна и с отворен код, корпоративна система за управление на съдържанието (CMS) с обширна

Как да инсталирате Koel на Fedora 28

Как да инсталирате Koel на Fedora 28

Използване на различна система? Koel е просто уеб-базирано лично приложение за стрийминг на аудио, написано на Vue от страна на клиента и Laravel от страна на сървъра. Кое

Как да инсталирате Grav CMS на Fedora 28

Как да инсталирате Grav CMS на Fedora 28

Използване на различна система? Grav е CMS с плосък файл с отворен код, написан на PHP. Изходният код на Grav се хоства публично на GitHub. Това ръководство ще ви покаже как т

Инсталиране на Akaunting на Fedora 28

Инсталиране на Akaunting на Fedora 28

Използване на различна система? Akaunting е безплатен, отворен код и онлайн счетоводен софтуер, предназначен за малки фирми и служители на свободна практика. Изградено е остроумно

Как да инсталирате Tiny Tiny RSS Reader на Fedora 26 LAMP VPS

Как да инсталирате Tiny Tiny RSS Reader на Fedora 26 LAMP VPS

Използване на различна система? Tiny Tiny RSS Reader е безплатен четец и агрегатор с отворен код, самостоятелно хостван уеб базиран новинарски канал (RSS/Atom), предназначен да

Как да инсталирате InvoicePlane на Fedora 28

Как да инсталирате InvoicePlane на Fedora 28

Използване на различна система? InvoicePlane е безплатно приложение за фактуриране с отворен код. Неговият изходен код може да бъде намерен в това хранилище на Github. Това ръководство

Инсталирайте сървър на Minecraft на Fedora 26

Инсталирайте сървър на Minecraft на Fedora 26

Използване на различна система? В този урок ще ви насоча как да настроите сървър на Minecraft на високопроизводителен SSD VPS във Vultr. Ще научиш хо

Как да компилирам Nginx от източник на Fedora 25

Как да компилирам Nginx от източник на Fedora 25

Използване на различна система? NGINX може да се използва като HTTP/HTTPS сървър, обратен прокси сървър, имейл прокси сървър, балансьор на натоварване, TLS терминатор или cachin

Как да инсталирате Pagekit 1.0 CMS на Fedora 26 LAMP VPS

Как да инсталирате Pagekit 1.0 CMS на Fedora 26 LAMP VPS

Използване на различна система? Pagekit 1.0 CMS е красива, модулна, разширяема и лека, безплатна система за управление на съдържанието (CMS) с отворен код с

Как да инсталирате Subrion 4.1 CMS на Fedora 26 LAMP VPS

Как да инсталирате Subrion 4.1 CMS на Fedora 26 LAMP VPS

Използване на различна система? Subrion 4.1 CMS е мощна и гъвкава система за управление на съдържанието (CMS) с отворен код, която носи интуитивно и ясно съдържание

Инсталирайте TaskServer (taskd) на Fedora 26

Инсталирайте TaskServer (taskd) на Fedora 26

Използване на различна система? TaskWarrior е инструмент за управление на времето с отворен код, който е подобрение на приложението Todo.txt и неговите клонинги. Поради th

Как да инсталирате CMS Made Simple 2.2 на Fedora 26 LAMP VPS

Как да инсталирате CMS Made Simple 2.2 на Fedora 26 LAMP VPS

Използване на различна система? CMS Made Simple 2.2 е гъвкава и разширяема, безплатна система за управление на съдържанието (CMS) с отворен код, интелигентно проектирана да

Инсталиране на Bro IDS на Fedora 25

Инсталиране на Bro IDS на Fedora 25

Използване на различна система? Въведение Bro е анализатор на мрежов трафик с отворен код. Това е преди всичко монитор за сигурност, който инспектира целия трафик по линия

Как да инсталирате X-Cart 5 на Fedora 31

Как да инсталирате X-Cart 5 на Fedora 31

Използване на различна система? X-Cart е изключително гъвкава платформа за електронна търговия с отворен код с множество функции и интеграции. Изходният код на X-Cart е хост

Как да инсталирате Matomo Analytics на Fedora 28

Как да инсталирате Matomo Analytics на Fedora 28

Използване на различна система? Matomo (бивш Piwik) е платформа за анализи с отворен код, отворена алтернатива на Google Analytics. Източникът на Matomo се хоства o

Как да инсталирате MyBB на Fedora 28

Как да инсталирате MyBB на Fedora 28

Използване на различна система? MyBB е безплатна програма с отворен код, интуитивна и разширяема форумна програма. Изходният код на MyBB се хоства на GitHub. Това ръководство ще шо

Как да инсталирате и конфигурирате TaskBoard на Fedora 30

Как да инсталирате и конфигурирате TaskBoard на Fedora 30

Използване на различна система? Въведение TaskBoard е безплатен инструмент с отворен код, който може да се използва за проследяване на нещата, които трябва да се направят. Осигурява

Как да инсталирате LimeSurvey CE на Fedora 28

Как да инсталирате LimeSurvey CE на Fedora 28

Използване на различна система? LimeSurvey е програма за проучване с отворен код, написана на PHP. Изходният код на LimeSurvey се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате Backdrop CMS 1.8.0 на Fedora 26 LAMP VPS

Как да инсталирате Backdrop CMS 1.8.0 на Fedora 26 LAMP VPS

Използване на различна система? Backdrop CMS 1.8.0 е проста и гъвкава, удобна за мобилни устройства, безплатна система за управление на съдържанието (CMS) с отворен код, която ни позволява

Как да инсталирате Craft CMS на Fedora 29

Как да инсталирате Craft CMS на Fedora 29

Използване на различна система? Craft CMS е CMS с отворен код, написан на PHP. Craft CMS изходния код се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече