Instalando o NGINX no VPS

Se todos seguiram com atenção o ultimo post sobre os “Primeiros passos para configurar um VPS para WordPress“, já temos a nosso sistema pronto para a instalação do chamado L.E.M.P. (Linux, Engine X, MySQL, PHP). Mas o que diabos é esse tal de engine-x ? É apenas a pronuncia em inglês do servidor web NGINX! 🙂

Então, esses são os passos para a instalação do LEMP:

1. Configuração do Linux Ubuntu 14.10;
2. Instalação do Engine X (nginx);
3. Instalação do MySQL;
4. Instalação do PHP;

Neste artigo, eu irei guia-lo na instalação e configuração dos itens 1 e 2. Os itens 3 e 4 serão tratados em outros posts, pois é muita informação. Não se assustem, é fácil instalar, mas eu quero que vocês entendam o que estão fazendo, pois manter um VPS bem configurado e seguro requer muita atenção nos detalhes.

1. Instalação do Linux

Basta criar um droplet no Digital Ocean e configura-lo segundo o guia que eu postei neste link. Simples, rápido e fácil.

2. Instalação do nginx

Antes de começarmos, vou explicar o motivo pelo eu uso o NGINX, citando a Wikipedia:


Nginx é um servidor proxy HTTP e reverso, bem como um servidor de proxy de email. O Nginx é um servidor web rápido, leve, e com inúmeras possibilidades de configuração para melhor performance. Tecnicamente, o Nginx consome menos memória que o Apache, pois lida com requisições Web através do conceito de “event-based web server”, já o Apache é baseado no conceito “process-based server”. Eles não são necessariamente “concorrentes”, Apache e Nginx podem trabalhar juntos! É possível diminuir o consumo de memória do Apache fazendo com que as requisições Web passem primeiro pelo Nginx. Desse modo, o Apache não precisa servir arquivos estáticos, e pode depender do bom controle de cache feito pelo Nginx.

Sim, podemos ter ambos o Apache e o Nginx juntos e esse tipo de configuração funciona muito bem. Mas não é obrigatório e nem será explicado nesse tutorial.

O pacote do NGINX possui 4 diferentes pacotes cuja diferença é o numero de módulos inclusos. O pacote nginx-core está disponivel no repositório padrão. Os outros pacotes (nginx-light, nginx-full, nginx-extras) estão no repositório Universe, que precisa ser ativado manualmente.

A menos que você precise de algum módulo extra que esteja disponivel nos outros pacotes, o nginx-core contém tudo o que é necessário para servir páginas. A instalação dos pacotes mais completos, além de aumentar o consumo de recursos do servidor, também aumenta a chance de que uma falha de segurança em um módulo abra um brecha em seu servidor.

Ainda sobre os módulos, há algo que o leitor deve saber. O nginx não usa módulos externos, ou seja, ele deve ser compilado já com os módulos que você deseja usar. É por isso que o usuário possui a opção de instalar pacotes com uma versão do nginx com mais módulos. Na dúvida, instale o pacote padrão, nginx-core.

Os pacotes atualmente disponíveis são:

nginx-core: É o pacote padrão, sem módulos de terceiros. Em geral, é tudo o que a gente precisa para ter servidor web funcionando. Está disponivel no repositório padrão.

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, SSI, Upstream, User ID, UWSGI.
OPTIONAL HTTP MODULES: Addition, Debug, GeoIP, Gzip Precompression, HTTP Sub, Image Filter, IPv6, Real IP, Spdy, SSL, Stub Status, Substitution, WebDAV, XSLT.
MAIL MODULES: Mail Core, IMAP, POP3, SMTP, SSL.


nginx-light: Está disponível no repositório Universe e é o pacote que contém menos módulos.

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream.
OPTIONAL HTTP MODULES: Auth Request, Debug, Gzip Precompression, IPv6, Real Ip, SSL, Stub Status.
THIRD PARTY MODULES: Echo.

nginx-full: É o segundo mais completo pacote do nginx, com diversos módulos de terceiros que estendem a capacidade do servidor web NGINX. Está disponível no repositorio Universe

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, SSI, Upstream, User ID, UWSGI.
OPTIONAL HTTP MODULES: Addition, Auth Request, Debug, GeoIP, Gzip Precompression, HTTP Sub, Image Filter, IPv6, Real IP, Spdy, SSL, Stub Status, Substitution, WebDAV, XSLT.
MAIL MODULES: Mail Core, IMAP, POP3, SMTP, SSL.
THIRD PARTY MODULES: Auth PAM, DAV Ext, Echo, HTTP Substitution Filter, Upstream Fair Queue.

nginx-extras: Esse é o pacote mais completo disponivel, ideal para quem sabe e precisa usar todo o potencial do NGINX. Está disponivel no Universe.

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, SSI, Upstream, User ID, UWSGI.
OPTIONAL HTTP MODULES: Addition, Auth Request, Debug, Embedded Perl, FLV, GeoIP, Gzip Precompression, Image Filter, IPv6, MP4, Random Index, Real IP, Secure Link, Spdy, SSL, Stub Status, Substitution, WebDAV, XSLT.
MAIL MODULES: Mail Core, IMAP, POP3, SMTP, SSL.
THIRD PARTY MODULES: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, HTTP Substitution Filter, http push, Nginx Development Kit, Upload Progress, Upstream Fair Queue.

Para instalar a versão mais nova e manter o servidor atualizado, instalaremos um PPA. Faremos isso porque a versão mais nova distribuida oficialmente nos repositorios da Canonical é a versão 1.6.2, enquanto a versão disponível no PPA é a 1.7.10.

AVISO: O PPA instalará por padrão a versão nginx-full.

Instalando o nginx-core via PPA:

Pressione [ENTER] e o PPA será adicionado ao Ubuntu. Em seguida:

Pronto, o servidor Web estará instalado e já estará funcionando. Para verificar que está funcionando, abra seu browser e acesse usando o IP do VPS como endereço.

Ubuntu NGINX funcionando

Eu vou listar algumas informações importantes para que ninguém fique perdindo ao usar o nginx.

1. A pasta de configuração do nginx fica localizada em:

2. A pasta onde os arquivos da web (arquivos .html, php) ficam armazenadas fica em:

3. Qualquer alteração nos arquivos de configuração do nginx deverá ser testada antes. Em caso de erro, será mostrado erro e a linha onde esse erro ocorreu.

4. Depois de testar as alterações em sua configuração e verificar que está tudo OK, você não precisa parar o servidor para aplica-las. Basta executar o seguinte comando, que irá executar as alterações da configuração sem parar o servidor.

Lembrem-se, se quiserem adquirir um VPS por apenas 5 dólares mensais, façam seu cadastro por este link.

Tutorial