Configuração VPS do zero – Rails, Nginx, PostgreSQL.

insira a descrição da imagem aqui

Configurar um VPS pode ser uma tarefa assustadora, especialmente se você for novo e não souber como as partes e peças se encaixam.

Serviços como o Heroku tentaram aliviar esse fardo permitindo que as pessoas se concentrassem em seu código e não se preocupassem com seus servidores reais, mas às vezes esse valor agregado vem com um preço alto. Outras vezes, o Heroku simplesmente não é uma boa opção. Por exemplo, quando você deseja permitir que seus usuários carreguem arquivos; O Heroku não possui um sistema de arquivos persistente.

Hoje eu gostaria de mostrar a você o guia DevOps for Dummies ‘.

Observe que existem engenheiros que ganham a vida ajustando e monitorando servidores.

Embora este guia o ajude a trabalhar em um futuro próximo, quando seu aplicativo da web se tornar grande, provavelmente você precisará de alguém com conhecimento neste campo específico para realmente se preocupar com essas coisas.


Objetivos.

Aqui está uma pequena lista das coisas em que vamos trabalhar. Idealmente, você deseja seguir este caminho de progressão ao configurar uma nova caixa.

Embora existam ferramentas por aí, como Chef, Puppet, etc; Quero fazer as coisas manualmente para que, quando chegar a hora de aprender sobre essas ferramentas, você perceba o benefício que elas trazem para a mesa.

  • Qual VPS devo usar?
  • Configuração inicial do Ubuntu
  • Instalação RVM
  • Instalação do Ruby 1.9.3
  • Instalação do Rails 3.2.X
  • Instalação PostgreSQL
  • Instalação do Passenger + Nginx

Qual VPS devo usar?

Existem muitas ofertas de VPS por aí. Alguns baratos, alguns com mais RAM, alguns com mais espaço no disco rígido, outros com unidades SSD, etc.

Cabe a você fazer compras online e encontrar aquele que melhor se adapta às suas necessidades de aplicativo.

Duas ofertas muito sólidas que posso garantir são DigitalOcean e ASmallOrange . ASmallOrange é um pouco mais caro, mas a vantagem é que eles são gerenciados, o que significa que você terá um ótimo suporte quando as coisas não saírem da maneira como planejou.

Ambos possuem ótimas equipes de suporte com tempos de resposta incríveis e excelentes ferramentas de gerenciamento à sua disposição.

No final, faça compras e escolha um de sua preferência.

Tente escolher um com pelo menos:

  • 1 GB de RAM
  • Capacidade do disco rígido de 20 GB

Configuração inicial do Ubuntu

Quando você compra seu VPS, recomendo usar o Ubuntu 12.10 x64.

Uma das primeiras coisas que queremos fazer é desabilitar o acesso root ao seu servidor.

Vamos começar criando um novo usuário.

adduser your-user-name
# eg.: $ adduser sergiotapia

Quando você adiciona o usuário, o Ubuntu irá solicitar seu nome completo, telefone, etc. Você pode, com segurança, apenas clicar em enter em cada prompt para as configurações padrão.

Agora precisamos permitir que esse novo usuário instale o software conforme necessário, mas não como root.

sudo nano /etc/sudoers

Role até o final deste arquivo usando as teclas de seta e adicione esta linha no final.

your-user-name ALL=(ALL) ALL
# eg.: sergiotapia ALL=(ALL) ALL

Pressione para abrir a caixa de diálogo de fechamento e digite para salvar suas alterações.Ctrl + XY

Agora precisamos desabilitar o login ssh para a rootconta. Lembre-se: após esta configuração inicial, você usará sua conta recém-criada para fazer o login.

Vamos abrir o arquivo de configuração ssh:

nano /etc/ssh/sshd_config

Procure uma linha que diz PermitRootLogin. Altere a configuração de yespara no.

Pressione para abrir a caixa de diálogo de fechamento e digite para salvar suas alterações.Ctrl + XY

Reinicie o servidor ssh para que essas mudanças tenham efeito.

/etc/init.d/ssh restart

Finalmente, saia da sua rootconta.

logout

Agora que estamos desconectados, vamos fazer o login usando nossas novas credenciais de usuário. Abra um terminal e faça login:

ssh your-user-name@your-ip-address
# eg.: ssh sergiotapia@192.168.1.1

Agora que protegemos nosso servidor, vamos atualizar o software no Ubuntu.

sudo apt-get update
sudo apt
-get upgrade

Vamos instalar o Git a seguir; precisamos dele para instalar uma infinidade de outros softwares, incluindo RVM e Ruby.

sudo apt-get install git-core

Instalação RVM

Em seguida, vamos instalar o RVM. O RVM nos permitirá instalar facilmente qualquer versão do Ruby que quisermos e até mesmo atualizar as versões quando uma nova for lançada.

curl -L get.rvm.io | bash -s stable

Execute um comando de origem simples após a instalação do RVM, para que possamos invocá-lo do terminal.

source ~/.rvm/scripts/rvm

Tente executar este comando para ver se o RVM foi instalado corretamente. Você deverá ver um pequeno aviso informando qual versão do RVM você está usando.

rvm -v

Em seguida, vem o big-kahuna. Vamos instalar muitos softwares! Não vou examiná-los um por um, Google o que cada pacote faz se você estiver interessado.

sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev

Instalação do Ruby 1.9.3

O RVM é fantástico! Veja como é simples instalar Ruby em sua máquina.

rvm install 1.9.3

Isso pode demorar um pouco, ou pelo menos mais do que os comandos anteriores, então deixe-o rodar.

Quando terminar, vamos garantir que o RVM use esta versão Ruby como a versão Ruby padrão, em todo o servidor .

rvm --default use 1.9.3

Instalação de trilhos

Agora precisamos instalar o Rails. Você pode executar este comando de qualquer lugar em seu servidor, você não precisa estar dentro de nenhuma pasta específica.

gem install rails

Execute esses dois comandos para ver se tudo correu bem. Você deve ver as versões bem impressas em seu terminal.

ruby -v
rails
-v

Instalação PostgreSQL

Ubuntu 12.10 tem um pacote muito bom que torna a instalação do PostgreSQL um simples comando de distância.

sudo apt-get install postgresql-9.1

Vamos mudar a senha do Postgresql.

sudo -u postgres psql template1
ALTER USER postgres
with encrypted password 'your_password';

Pressione para sair do prompt do Postgresql.Ctrl + D

Em seguida, precisamos habilitar as conexões com o servidor Postgres. Sem esta etapa, nossos aplicativos Rails não seriam capazes de se conectar. Abra o arquivo de configuração padrão:

sudo nano /etc/postgresql/9.1/main/postgresql.conf

Encontre esta linha e descomente removendo o símbolo hash no início:

# Change this:
#listen_addresses = 'localhost'

# To this:
listen_address
= 'localhost'

Finalmente, reinicie o servidor Postgres:

sudo service postgresql restart

Instalação do Passenger + Nginx

Precisamos instalar um servidor web para permitir que os visitantes vejam realmente algo em seus navegadores. Eu uso o Passenger com Nginx porque gosto da simplicidade dos arquivos de configuração que o Nginx usa. ( Eles se parecem com arquivos JSON simples. )

O Passenger funciona tão bem com o Apache, se você preferir.

Vamos instalar o Passenger gem primeiro:

gem install passenger

Em seguida, instale o módulo Nginx. A vantagem dessa abordagem é que o Passenger baixará, criará e configurará automaticamente o Nginx para uso. Belo acordo!

rvmsudo passenger-install-nginx-module

Estamos usando o rvmsudocomando em vez de sudoporque nosso sistema está usando RVM.

O módulo apresentará duas opções. Certifique-se de escolher a opção 1.

É mais do que provável que ele não consiga instalar e fale sobre algumas dependências ausentes. Basta executar os comandos que ele indica para executar para instalar o software ausente.

Neste ponto, o Nginx está instalado e configurado em sua máquina. Mas vamos configurar mais uma coisa para tornar mais fácil parar e iniciar seu servidor web.

wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
sudo mv init
-deb.sh /etc/init.d/nginx
sudo chmod
+x /etc/init.d/nginx
sudo
/usr/sbin/update-rc.d -f nginx defaults

Você deve ser capaz de parar e iniciar seu servidor Nginx facilmente com os seguintes comandos:

sudo /etc/init.d/nginx stop
sudo
/etc/init.d/nginx start

E terminamos! Você foi do ponto zero para um servidor real totalmente desenvolvido com todas as coisas que você precisa para hospedar seus aplicativos Ruby on Rails.

Se você visitar seu endereço IP, deverá ver uma página de boas-vindas familiar do Nginx.

insira a descrição da imagem aqui

Dê tapinhas nas costas, garoto, você mereceu!

insira a descrição da imagem aqui

Em meu próximo artigo, mostrarei como configurar o Nginx para hospedar uma quantidade N de aplicativos Ruby on Rails. Fique ligado ou siga-me no Twitter para ser avisado quando eu publicar: @lostinthegc