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).

Deixar um comentário

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.