Olá pessoal! Depois de muito tempo sem um post, eu resolvi fazer algo que estava no meu dashboard há um bom tempo, explicar o básico para se levantar uma aplicação Rails e Nginx em um servidor Linux.
Minha intenção com o post é passar os caminhos básicos de como configurar o Nginx, o Passenger e o RVM em um servidor Linux. O processo é relativamente simples.
Antes de começar o processo de instalação é necessário que você possua acesso de administrador do sistema, ou seja, acesso ao usuário root. Caso você não possua esse nível de acesso os comandos abaixo não darão certo.
Algumas distribuições não permitem o acesso direto ao usuário root, exigindo que você tenha uma conta de usuário normal e só então, a partir dele, mudar o nível de acesso para o root, isso normalmente é feito através do comando sudo. Se for o seu caso sugiro rodar o comando sudo su - que fará você mudar o nível de privilégios para administrador do sitema, aí é só seguir os passos abaixo.
Instalando o RVM
O processo de instalação do RVM não possui muitos mistérios, basta seguir o processo de instalação disponível no site do RVM. Mas para que você não tenha dúvidas segue a linha a ser executada:
1
| |
Este comando fará a instalação do RVM no sistema, e logo em seguida a instalação da a última versão do ruby disponível, no momento que escrevo esse post a versão mais atual é a 1.9.3-p194.
A instalação do RVM requer o uso do curl, portanto é preciso ter ele instalado, verifique como instalar esse software em sua distribuição/versão de Linux.
Caso ocorra algum erro na instalação do ruby é bem provável que seja pela ausência de alguma dependência na distribuição utilizada, para fazer um levantamento e identificar se falta algo rode o comando rvm requirements. Siga os procedimentos informados e após terminar tente novamente instalar o ruby:
1
| |
Instalando o Passenger
Esse talvez seja o passo mais fácil. O passenger é uma gem que por sua vez possui um script que auxilia em todo o processo, como estamos fazendo a instalação em um ambiente servidor nós podemos instalar a gem sem os arquivos de documentação:
1
| |
Pronto, agora já temos o passenger instalado. Entretanto ele sozinho não fará muita coisa por você, ou melhor, por sua aplicação. Vamos agora instalar o Nginx.
Instalando o Nginx
Infelizmente não podemos utilizar o Nginx provido pela distribuição Linux que você está usando, isso porque o Nginx não possui o suporte a módulos, algo que o Apache tem, que seria a possibilidade de instalar o Nginx e depois apenas os módulos que necessários (php, ruby, etc.). Para o nosso caso será necessário (re)compilar o Nginx habilitando o suporte ao Passenger, é justamente isso que vamos abordar no próximo tópico.
Instalando o Nginx com suporte ao Passenger (usando o assistente)
Nós utilizaremos o instalador provido pela gem passenger, esse script fará todo o trabalho sujo por você, baixando o nginx, configurando e compilando. Esse processo é recomendado para aqueles que estão começando e querem algo funcional de forma simples. Vamos lá então:
1
| |
O script fará uma série de perguntas, vou documentar cada uma delas e explicar para que você se sinta seguro ;).
Logo no início será apresentado um texto informativo sobre o que será realizado durante o processo de instalação, nessa primeira parte será solicitado que você pressione <ENTER> para continuar, ou <CTRL>-C caso tenha se arrependido e queira abortar a instalação. É óbvio que vamos continuar né! :P, senta o dedo aí no <ENTER>.
Logo em seguida o script fará um checklist sobre todas as dependências necessárias para compilar o Passenger e o Nginx, entre os itens verificados estão: compilador, make, curl ou wget, headers do ruby (bibliotecas necessárias para compilação), rubygems, rack, openssl, zlib, etc. Caso algum deles esteja faltando o script fará o alerta e mostrará o que fazer para resolver as dependências.
Se for o seu caso, instale as dependências e depois volte a executar o comando passenger-install-nginx-module novamente.
Após o checklist de dependências o script solicitará qual o método você utilizará para instalar o Nginx + Passenger:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Selecione a opção 1 e pressione <ENTER>. Nesta opção será feito o download e compilação do Nginx com suporte ao Passenger pelo próprio script. Logo Após será feito um novo questionamento, desta vez sobre qual será o local onde o Nginx será instalado. Eu prefiro escolher um local diferente por questões de gosto e costume, em meus processos de instalação eu utilizo o path /usr/local/nginx, fique a vontade para escolher qual deles utilizar.
1 2 3 | |
Faça a sua escolha e pressione <ENTER> para dar início a compilação, agora é só esperar finalizar o processo.
Ao finalizar a compilação e instalação do Nginx o script exibe alguns parâmetros que devem ser definidos na configuração do Nginx para ativar o passenger, nós não precisamos nos preocupar com isso agora pois o script de instalação já injetou essas diretivas no arquivo de configuração do nginx, mas vale a pena registrar para não ter dúvidas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Pressione <ENTER> e outra mensagem informativa será exibida, desta vez é exibido um trecho de configuração da seção server dos arquivos de configuração do Nginx, essa seção é utilizada justamente para configurar uma aplicação/site no Nginx, esta não é inserida automaticamente, precisaremos setar isso quando da configuração de nossa aplicação.
Organizando a instalação
Vamos agora dar uma organizada para termos menos trabalho no futuro, até para melhorar a manutenção. Como é padrão das distribuições linux os arquivos de configuração devem ficar no path /etc, sendo assim ficaria melhor se a configuração do Nginx ficasse em /etc/nginx, vamos criar um link simbólico dos arquivos de configuração do Nginx para o /etc/nginx:
1
| |
Outra melhoria que podemos fazer é colocar o binário do nginx em um path globalmente reconhecido pelo linux, para isso vamos criar outro link simbólico:
1
| |
Configurando o Nginx
O Nginx é instalado com um arquivo default de configuração, não vou cobrir todo esse processo, no lugar eu sugiro que você baixe e use o arquivo de configuração abaixo:
A seguir vamos criar algumas pastas para organizar melhor os arquivos de configuração:
1 2 3 | |
Configurando seu domínio
Pronto, quase tudo configurado, falta agora configurar o Nginx para responder pelo domínio de seu site, para isso usaremos a diretiva server, vamos utilizar como exemplo o meu domínio almirmendes.com. Vamos criar um arquivo em /etc/nginx/sites-available/ com o nome do seu domínio (o nome não importa, pode ser qualquer um):
1
| |
Eu tenho, no Gist abaixo, uma configuração que você pode utilizar como exemplo, apenas lembre-se de trocar as entradas que tiverem almirmendes.com pelo seu domínio:
Agora vamos fazer um link simbólico do arquivo almirmendes.com para a pasta `/etc/nginx/sites-enabled/. Se reparar no arquivo de configuração acima, no gist 3482847, ela é a única que está sendo lida pelo Nginx, esta é a forma que temos para ativar uma configuração nova de site. Com isso habilitaremos o site:
1
| |
Se algum dia precisar desativar o site basta remover o link simbólico e pronto em /etc/nginx/sites-enabled/almirmendes.com. Você ainda terá o arquivo de configuração intacto em /etc/nginx/sites-available.
Para testar a configuração use o seguinte comando:
1
| |
Se no resultado do comando acima aparecer algo semelhante ao exibido abaixo é sinal de que está tudo correto, agora só falta inicializarmos o Nginx ;):
1 2 | |
Script de inicialização do Nginx
Por fim falta só adicionar ao sistema o script de inicialização do Nginx. Sugiro que baixe o que está disponível neste link e salve-o em /etc/init.d/nginx. :
1 2 | |
Existem inúmeras outas informações a serem adicionadas ao post, entretanto não queria deixá-lo ainda maior. Espero que ajude você a configurar o Nginx, qualquer coisa estamos a disposição. Abraços!