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).
1. Instalação:
Começaremos com a primeira coisa, instalar o Nginx de nossos repositórios.
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
Caso você use outra distribuição em seu servidor como CentOS, Red Hat, Fedora, basta instalar o pacote: nginx do repositório oficial
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
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á:
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
Obrigado, muito útil!
Obrigado por comentar
Em backports existe o nginx 1.4 ..
Sim, mas em um servidor em produção eu não uso nada disso 😀
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. ~ _ ~
Ah qual é, é isso ... nos servidores eu nunca gostei de usar outros repos, backports ou qualquer coisa assim 🙂
Sempre estável em servidores, aprendi isso anos atrás.
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
Você está certo no que diz, tiro o chapéu.
Obrigado por compartilhar, no momento estou colocando sua postagem mais antiga em prática.
Vou te preencher com perguntas XD
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
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.
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.
O NGINX parece muito simples em comparação com o Apache. Aguardando o próximo episódio para poder complementá-lo com PHP
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.
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 :)
Obrigado, boa contribuição.
E o guia do archlinux quando? xD
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? 😀
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 😀
Jo… xox, só quero um servidor interno, ou seja, só quero substituir o xampp, devo fazer tudo isso?
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
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!
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.
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.
Você poderia compartilhar os arquivos de configuração comigo, já que não posso baixá-los?