Como compilar o Nginx da fonte no Fedora 25

O NGINX pode ser usado como servidor HTTP / HTTPS, servidor proxy reverso, servidor proxy de correio, balanceador de carga, terminador TLS ou servidor de cache. É bastante modular por design. Possui módulos nativos e módulos de terceiros criados pela comunidade. Escrito na linguagem de programação C, é um software muito rápido e leve.

NOTA : O NGINX possui dois fluxos de versão que são executados em paralelo - estável e linha principal . Ambas as versões podem ser usadas em um servidor de produção. É recomendável usar a versão principal na produção.

Instalar o NGINX a partir do código-fonte é relativamente "fácil" - faça o download da versão mais recente do código-fonte NGINX, configure, construa e instale-o.

Neste tutorial, usarei a versão da linha principal , que é 1.13.3 no momento da redação. Atualize os números de versão de acordo quando versões mais recentes estiverem disponíveis.

Requisitos para a criação do NGINX a partir da origem

Requisitos obrigatórios:

  • Versão da biblioteca OpenSSL entre 1.0.2 - 1.1.0
  • Versão da biblioteca zlib entre 1.1.3 - 1.2.11
  • Versão da biblioteca PCRE entre 4,4 - 8,41
  • Compilador GCC

Requisitos opcionais:

Antes de você começar

  1. Crie usuário regular com sudoacesso :

  2. Mude para o novo usuário:

    su - <username>
    
  3. Sistema de atualização:

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

Crie o NGINX a partir da fonte

  1. Instale "Ferramentas de Desenvolvimento", editor Vim, wget e gcc-c ++:

    sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
    
  2. Baixe a versão principal mais recente do código-fonte NGINX e descompacte-o:

    wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
    
  3. Faça o download do código-fonte das dependências do NGINX e extraia-os:

    O NGINX depende de 3 bibliotecas: PCRE , zlib e 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. Baixe e instale dependências opcionais do 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. Remova todos os .tar.gzarquivos. Não precisamos mais deles:

    rm -rf *.tar.gz
    
  6. Vá para o diretório de origem NGINX:

    cd ~/nginx-1.13.3
    
  7. Para uma boa medida, liste os arquivos e diretórios de código-fonte NGINX:

    ls
    # auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    
  8. Copie a página de manual do NGINX para /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. Para obter ajuda, você pode listar opções de configuração disponíveis executando:

    ./configure --help
    # To see want core modules can be build as dynamic run:
    ./configure --help | grep -F =dynamic
    
  10. Configure, compile e instale o 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. Imprima a versão NGINX, a versão do compilador e configure os parâmetros do script:

    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. Crie o usuário e o grupo do sistema NGINX:

    sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
    
  13. Verifique a sintaxe e os possíveis erros:

    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. Crie um arquivo de unidade systemd para NGINX:

    sudo vim /etc/systemd/system/nginx.service
    
  15. Copie / cole o seguinte conteúdo:

    NOTA : O local do PIDarquivo e o binário do NGINX podem ser diferentes dependendo de como o NGINX foi compilado.

    [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. Inicie o NGINX:

    sudo systemctl start nginx.service
    
  17. Habilite o NGINX para iniciar automaticamente na inicialização:

    sudo systemctl enable nginx.service
    
  18. Verifique se o NGINX será inicializado após uma reinicialização:

    sudo systemctl is-enabled nginx.service
    # enabled
    
  19. Verifique se o NGINX está em execução:

    sudo systemctl status nginx.service
    ps aux | grep nginx
    curl -I 127.0.0.1
    
  20. Reinicie seu VPS para verificar se o NGINX é iniciado automaticamente:

    sudo shutdown -r now
    
  21. Remova os arquivos arcaicos do /etc/nginx/diretório:

    sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
    
  22. Coloque a sintaxe destacando os arquivos da configuração do NGINX vimem ~/.vim/. Você verá uma sintaxe destacada ao editar o arquivo de configuração do NGINX:

    mkdir ~/.vim/
    cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
    
  23. Faça um conf.d/diretório no /etc/nginx/diretório Nesse diretório, você pode colocar servidores virtuais e upstreams:

    sudo mkdir /etc/nginx/conf.d/
    
  24. Remova diretórios e arquivos extraídos do diretório inicial:

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

Conclusão

É isso aí. Agora você tem a versão mais recente do NGINX instalada. É compilado estaticamente em algumas bibliotecas importantes como o OpenSSL. Freqüentemente, a versão do OpenSSL do sistema está desatualizada. Usando esse método de instalação com uma versão mais recente do OpenSSL, você pode tirar proveito de novas cifras CHACHA20_POLY1305e protocolos como o TLS 1.3, que estarão disponíveis no OpenSSL 1.1.1(que ainda não foi lançado).



Leave a Comment

Como ativar o TLS 1.3 no Apache no Fedora 30

Como ativar o TLS 1.3 no Apache no Fedora 30

Usando um sistema diferente? O TLS 1.3 é uma versão do protocolo TLS (Transport Layer Security) publicada em 2018 como um padrão proposto no RFC 8446

Como instalar o osTicket no Fedora 30

Como instalar o osTicket no Fedora 30

Usando um sistema diferente? o osTicket é um sistema de bilheteria de suporte ao cliente de código aberto. O código fonte do osTicket está hospedado publicamente no Github. Neste tutorial

Como instalar o WonderCMS no Fedora 29

Como instalar o WonderCMS no Fedora 29

Usando um sistema diferente? O WonderCMS é um CMS de arquivo simples, rápido e pequeno, de código aberto, escrito em PHP. O código fonte do WonderCMS está hospedado no Github. Este guia irá

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL

Como instalar o MyBB no Fedora 28

Como instalar o MyBB no Fedora 28

Usando um sistema diferente? O MyBB é um programa de fórum gratuito, de código aberto, intuitivo e extensível. O código fonte do MyBB está hospedado no GitHub. Este guia mostrará

Como instalar o Reader Self 3.5 RSS Reader em um FPS 26 LAMP VPS

Como instalar o Reader Self 3.5 RSS Reader em um FPS 26 LAMP VPS

Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel

Como instalar o RainLoop Webmail no Fedora 28

Como instalar o RainLoop Webmail no Fedora 28

Usando um sistema diferente? O RainLoop é um cliente de email simples, moderno e rápido baseado na Web. O código-fonte do RainLoop está hospedado no GitHub. Este guia irá mostrar-lhe como

Como instalar o Gitea no Fedora 29

Como instalar o Gitea no Fedora 29

Usando um sistema diferente? O Gitea é um sistema de controle de versão auto-hospedado alternativo, de código aberto, desenvolvido com o Git. Gitea está escrito em Golang e é

Como instalar a pasta 2.1 em um VPS FAMP 26 LAMP

Como instalar a pasta 2.1 em um VPS FAMP 26 LAMP

Usando um sistema diferente? O Paste 2.1 é um aplicativo pastebin simples e flexível, gratuito e de código aberto para armazenar código, texto e muito mais. Foi inicial

Como instalar o ProcessWire CMS 3.0 em um VPS FAMP 26 LAMP

Como instalar o ProcessWire CMS 3.0 em um VPS FAMP 26 LAMP

Usando um sistema diferente? O ProcessWire CMS 3.0 é um CMS (Content Management System) simples, flexível e poderoso, de código aberto e gratuito. ProcessWire CMS 3.

Como instalar o Omeka Classic 2.4 CMS no Fedora 26 LAMP VPS

Como instalar o Omeka Classic 2.4 CMS no Fedora 26 LAMP VPS

Usando um sistema diferente? Omeka Classic 2.4 CMS é uma plataforma de publicação digital de código aberto e gratuita e um Sistema de gerenciamento de conteúdo (CMS) para compartilhamento de documentos

Como instalar o MODX Revolution em um LAMP VPS do Fedora 26

Como instalar o MODX Revolution em um LAMP VPS do Fedora 26

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável, gratuito e de código aberto

Como instalar o álbum de fotos do Lychee 3.1 em um VPS FAMP 26 LAMP

Como instalar o álbum de fotos do Lychee 3.1 em um VPS FAMP 26 LAMP

Usando um sistema diferente? O Lychee 3.1 Photo Album é uma ferramenta de gerenciamento de fotos simples e flexível, gratuita e de código aberto, executada em um servidor VPS. Instala

Instale o HTMLDoc no Fedora 29

Instale o HTMLDoc no Fedora 29

Usando um sistema diferente? O HTMLDoc analisará dinamicamente documentos Postscript (PDF 1.6) a partir de Hipertexto gravado corretamente (HTML 3.2). Isso permitirá que você t

Como instalar o ImpressPages CMS 5.0 em um VPS FAMP 26 LAMP

Como instalar o ImpressPages CMS 5.0 em um VPS FAMP 26 LAMP

Usando um sistema diferente? O ImpressPages CMS 5.0 é um sistema de gerenciamento de conteúdo (CMS) simples e eficaz, gratuito e de código aberto, fácil de usar e baseado em MVC

Como instalar o Pagekit 1.0 CMS em um LAMP VPS do Fedora 26

Como instalar o Pagekit 1.0 CMS em um LAMP VPS do Fedora 26

Usando um sistema diferente? O Pagekit 1.0 CMS é um sistema de gerenciamento de conteúdo (CMS) bonito, modular, extensível e leve, gratuito e de código aberto com

Como instalar o Matomo Analytics no Fedora 28

Como instalar o Matomo Analytics no Fedora 28

Usando um sistema diferente? O Matomo (anteriormente Piwik) é uma plataforma de análise de código aberto, uma alternativa aberta ao Google Analytics. Fonte Matomo está hospedado o

Como implantar o Ghost no Fedora 25

Como implantar o Ghost no Fedora 25

Usando um sistema diferente? O Ghost é uma plataforma de blog de código aberto que está ganhando popularidade entre desenvolvedores e usuários comuns desde seu lançamento em 2013. Eu

Como instalar o Couch CMS 2.0 em um LAMP VPS do Fedora 26

Como instalar o Couch CMS 2.0 em um LAMP VPS do Fedora 26

Usando um sistema diferente? O Couch CMS é um sistema de gerenciamento de conteúdo (CMS) simples e flexível, gratuito e de código aberto que permite que os web designers

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.