Como instalar um servidor web com Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [2ª parte: Nginx]

Algum tempo atrás Eu falei sobre esta série de tutoriais, sobre como instalar e configurar um servidor para hospedagem de alta demanda. Este artigo abordará a instalação e configuração do Nginx:

nginx:

Já falamos sobre o Nginx anteriormente neste artigo Nginx: uma alternativa interessante para o Apache, aí falamos que é um servidor web como Apache, LightHttpd ou Cherokee, mas comparado ao Apache ele se destaca pelo desempenho e baixo consumo de hardware, justamente por isso que muitos sites grandes como Facebook, MyOpera.com, DropBox ou mesmo WordPress .com usa Nginx em vez de Apache. No mundo do Linux DesdeLinux Não é o único que usa Nginx, até onde eu sei, emsLinux e MuyLinux também usam :)

Minha experiência pessoal com o Nginx remonta a vários anos, quando por necessidade comecei a procurar alternativas leves para o Apache. Naquela época, o Nginx estava indo para a versão 0.6 e sua compatibilidade com sites de alta demanda feitos em PHP não era das melhores, no entanto, hoje a partir da versão 0.9 (v1.2.1 disponível no Debian Stable, v1.4.2 disponível no ArchLinux) melhorou muito, a tal ponto que com uma configuração adequada e união do Nginx + PHP tudo funcionará perfeitamente.

Nesta série de tutoriais Vou usar o Nginx versão 1.2.1-2.2, disponível nos repositórios Debian Stable (Wheezy).

Este tutorial trata única e exclusivamente sobre Nginx, não sobre Nginx + PHP, a união de Nginx + PHP, bem como sua otimização ou configuração necessária será abordada no próximo passo a passo

1. Instalação:

Começaremos com a primeira coisa, instalar o Nginx de nossos repositórios.

Todos os comandos que serão executados são executados com permissões de root, seja colocando sudo no início de cada linha ou fazendo login como root

Se em seu servidor você usa uma distribuição como Debian, Ubuntu ou algum derivado no terminal, você deve colocar o seguinte e pressionar Entrar :

aptitude install nginx

aptitude não é instalado por padrão no Ubuntu, no entanto eu recomendo que você instale e use em vez do apt-get, pois o aptitude faz um melhor gerenciamento de dependências em certas ocasiões

Caso você use outra distribuição em seu servidor como CentOS, Red Hat, Fedora, basta instalar o pacote: nginx do repositório oficial

Pessoalmente, não recomendo nenhum derivado do Debian, nem mesmo Ubuntu para servidores, ao longo dos anos minhas experiências não foram inteiramente satisfatórias. Minha primeira escolha para sistemas operacionais de servidor é Debian, então eu pensaria em CentOS, finalmente algum BSD

2. Configuração:

Já temos o Nginx instalado, mas obviamente precisamos configurá-lo. Preparei um arquivo compactado em FTP que contém todas as configurações que são utilizadas nos servidores. DesdeLinux, tanto para PHP, Nginx, etc. Vamos baixar e descompactar esse arquivo:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

Isso criará uma pasta chamada nginx-spawn-fastcgi, a partir dela precisaremos de dois arquivos para Nginx puro (ou seja, sem vinculá-lo ao PHP):

  • nginx.conf - »Arquivo de configuração principal do Nginx (falaremos sobre seu conteúdo mais tarde)
  • index.html - »Um arquivo html simples que usaremos para ver se o Nginx realmente funciona para nós em sua forma mais básica
  • mywebsite.net - »Arquivo de configuração de um site simples, um VHost (Virtual Host) que configurará o acesso ao html anterior

Vamos primeiro ir para a pasta de configurações do Nginx:

cd /etc/nginx/

Então, vamos remover sua configuração padrão e colocar nossa própria:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

Este, como disse, é o principal arquivo de configuração do Nginx, nele já defini o seguinte:

dados www do usuário; worker_processes 4; pid /var/run/nginx.pid;

Acesso do usuário ao sistema de arquivos (com o qual o nginx acessará em qualquer lugar), número de processos para trabalhar e também o PID (id do processo nginx).

Também temos ali um pequeno bloco denominado events (configurações para eventos) que contém uma linha que indica o número máximo de conexões permitidas por evento. Abaixo está o bloco denominado http.

Este bloco http é aquele que contém quase tudo relacionado a hospedagem, pelo menos muitas coisas que irão interessar a você. Por exemplo, o tempo máximo de vida ou espera (timeout), onde estarão nossos logs gerais (access.log e error.log), compressão de dados usando gzip, bem como outras regras que podem ser úteis no futuro.

Assim que o arquivo de configuração principal estiver no lugar, vamos copiar o arquivo do nosso VHost para a pasta disponível nos sites

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

Além disso, devemos fazer um link simbólico deste arquivo para a pasta habilitada para sites.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

Eu explico a utilidade de ter sites habilitados e disponíveis.

Eles vão encontrar momentos em que devem ter vários arquivos vhost prontos e configurados, pois nesse servidor eles vão colocar online, digamos, 5 sites. Porém, acontece que ainda não é o momento de habilitar 2 desses 5 vhosts, mas eles devem estar com os arquivos prontos para que quando necessário estejam online no menor tempo possível. Você pode colocar quantos vhosts quiser em sites-available (sites-available), porque aqueles que o Nginx lê para colocar online são apenas aqueles com sites-enabled (sites-enabled), ele também funcionaria na direção oposta, caso queira colocar offline (temporariamente por exemplo) um site, não há necessidade de deletar arquivos do seu servidor (arquivos que precisaremos posteriormente), basta remover o link simbólico dos sites habilitados e pronto. A utilidade de ter links simbólicos e não simplesmente copiar o arquivo de uma pasta para outra, é que quando queremos editar um vhost, não importa se editarmos aquele localizado em habilitado ou disponível, no final é o mesmo
arquivo.

O arquivo mywebsite.net como falei antes, um vhost que serve de exemplo, ou seja, ou seja, devemos modificar o mywebsite.net e estabelecer nossas configurações.

Devemos mudar o seguinte:

  • access_log (linha 3): Este será o caminho do arquivo de log de acesso a este site
  • error_log (linha 4): Este será o caminho do arquivo de log de erros para este site
  • server_name (linha 5): A URL, domínio que está hospedado naquela pasta, por exemplo, se fosse o fórum DesdeLinux seria: forum server_name.desdelinux.net
  • root (linha 6): O caminho para a pasta onde estão os arquivos html, vamos deixar em / var / www / pois será apenas um teste
Obviamente eles devem ter apontado em seus registros de DNS de seu provedor de hospedagem (utilizando CPanel ou outra ferramenta) que o domínio ou subdomínio declarado em server_name está localizado no IP deste servidor que eles estão configurando. Ou seja, no DNS em que criam subdomínios para seu domínio, eles devem declarar que o domínio ou subdomínio que colocaram na linha 5 está neste servidor (este servidor = o endereço IP do servidor em questão)

Agora só precisamos copiar o arquivo html para a pasta que definimos em nosso arquivo VHost, / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

Em seguida, reiniciamos o Nginx e é isso:

service nginx restart

E voila, algo assim aparecerá:

nginx-pure-test-site-html

Lembro que estamos trabalhando primeiro com Nginx para HTML, sem ter suporte a PHP, instalar o PHP e vinculá-lo ao Nginx será o conteúdo do próximo tutorial (daqui a alguns dias, prometo).

Enfim, este é o tutorial de instalação e configuração do Nginx para que funcione puro, ou seja, um site HTML, espero que seja do seu interesse.

Vou esclarecer que sim, ainda existem boas práticas que podem ser postas em prática, porém vamos esperar terminar esta série de tutoriais para então avaliarmos o resultado final do trabalho 😉

lembranças


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Nelson dito

    Obrigado, muito útil!

    1.    KZKG ^ Gaara dito

      Obrigado por comentar

  2.   caçador dito

    Em backports existe o nginx 1.4 ..

    1.    KZKG ^ Gaara dito

      Sim, mas em um servidor em produção eu não uso nada disso 😀

      1.    caçador dito

        Por "isso" você quer dizer a última versão estável e testada lançada pelo nginx, você faz soar como se fosse apt-pinning do sid. ~ _ ~

        1.    KZKG ^ Gaara dito

          Ah qual é, é isso ... nos servidores eu nunca gostei de usar outros repos, backports ou qualquer coisa assim 🙂

      2.    Rafael castro dito

        Sempre estável em servidores, aprendi isso anos atrás.

        1.    caçador dito

          Nginx 1.4 está estável desde abril passado, em backports é 1.4.1-3.

          2013-04-24

          A versão estável do nginx-1.4.0 foi lançada, incorporando muitos novos recursos desenvolvidos na ramificação 1.3.x - suporte para proxy de conexões WebSocket, grampeamento OCSP, módulo SPDY, filtro gunzip e muito mais.

          http://nginx.org/en/CHANGES-1.4

          1.    Rafael castro dito

            Você está certo no que diz, tiro o chapéu.

  3.   chinoloco dito

    Obrigado por compartilhar, no momento estou colocando sua postagem mais antiga em prática.
    Vou te preencher com perguntas XD

    1.    KZKG ^ Gaara dito

      Obrigado por ler 🙂
      Se você tiver alguma dúvida ou preocupação, você sabe, estamos aqui para ajudar, existe o fórum.desdelinux.net onde juntos tentaremos dar-lhe a melhor solução

      lembranças

      1.    Gibran barrera dito

        Tenho uma pergunta que tenho LAMP [Linux (Debian Wheezy), Apache, PHP e MySQL] em execução no meu servidor para WordPress e Owncloud, como faço para migrar para Ngnix, outra questão é que diferença existe entre Ngnix e Lighttpd.

        1.    KZKG ^ Gaara dito

          A maior complicação ou dificuldade para migrar do Apache para o Nginx são as configurações de cada site, ou seja, especificamente o .htaccess que você usa.

          O .htaccess é o mais complexo na hora de mudar para o Nginx, pois são configurações diferentes que você deve colocar no VHost do Nginx.

          Sobre LightHTTPd e Nginx… Não sei, usei LightHTTPd apenas uma vez, muitos anos atrás, atualmente não tenho ideia de como está indo seu desenvolvimento, especificamente em PHP.

  4.   eliotime3000 dito

    O NGINX parece muito simples em comparação com o Apache. Aguardando o próximo episódio para poder complementá-lo com PHP

  5.   Maurício dito

    Estou esperando as dicas para otimizar mais para o nginx 😀

    A propósito, Gaara, você pode incluir em seu próximo tutorial como implementar o suporte SSL.

    Saudações.

    1.    KZKG ^ Gaara dito

      As dicas que vem na verdade são para otimizar o processamento do PHP, cache do site, posso dar o exemplo da configuração que usamos no DesdeLinux para Nginx + Wordpress + W3_Total_Cache :)

  6.   imperador dito

    Obrigado, boa contribuição.

  7.   Abril 4xas dito

    E o guia do archlinux quando? xD

    1.    KZKG ^ Gaara dito

      No Arch tem sido muito semelhante, apenas os nomes dos pacotes mudam mas ... a conf é quase idêntica

      Mas quem tem um servidor de produção com Arch? 😀

  8.   Abril 4xas dito

    Oi lá,

    Sou eu de novo xD ...

    Eu estava seguindo seus passos aplicando-os em uma máquina com archlinux e estou com o seguinte problema:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    Alguma sugestão 😀

  9.   Riz dito

    Jo… xox, só quero um servidor interno, ou seja, só quero substituir o xampp, devo fazer tudo isso?

    1.    KZKG ^ Gaara dito

      Se você quiser, pode implementar isso (o que eu repito, é com o que DL funciona), na verdade meu servidor virtual (que uso para desenvolvimento e teste) eu fiz com essa mesma coisa que explico.

      Ou seja, você pode remover o XAMPP e colocar essa variante e ela funcionará bem ou, se quiser sair do XAMPP ... ainda funcionará para você.

      O ponto positivo de usar isso que mostro é o consumo de hardware muito baixo em comparação ao Apache, mas, no seu computador pessoal, que não é uma hospedagem de alta demanda, longe disso ... se o XAMPP funcionar bem para você, não vejo porque removê-lo

  10.   Isaac dito

    Já tenho meu servidor Linux rodando (Debian, Nginx, MySQL e PHP). Tive dificuldade em fazer o PHP funcionar com o Nginx porque estava acostumado com o Apache Web Server simples.

    Bem, minha pergunta é: Alguém sabe como posso apontar um domínio de teste que comprei para o meu servidor? Gostaria de experimentar o meu domínio .com para ver como funciona, mas não tenho a menor ideia de como fazê-lo, pois sempre usei um endereço NOIP para acessá-lo com o noip DUC.

    Espero que alguem possa me ajudar, obrigado!

  11.   abraham dito

    Eu entendo quando tento me conectar ao seu ftp:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    Solicitação HTTP enviada, aguardando resposta ... 404 Não encontrado
    2015-11-23 17:46:30 ERRO 404: não encontrado.

  12.   Ryan dito

    Eu tenho meu servidor rodando em CentOS (Gunicorn, Nginx, PHP) custou muito trabalho para fazê-los funcionar, mas o ponto em que fiquei preso é que a página da Web que desejo iniciar precisa da configuração do provedor de domínio, neste caso Go Daddy, Portanto, neste ponto, não sei como continuar.

  13.   Ricardo dito

    Você poderia compartilhar os arquivos de configuração comigo, já que não posso baixá-los?