Você está na página 1de 18

Documentação para colocar em produção uma nova instância

OpenRedu em Cloud Vultr.

Autor: Ricardo Cavalcanti

0

Índice.





1- Introdução - Página 2.
2- Preparação do ambiente - Página 3.
o 2.1 – Criação de uma nova instância no Vultr - Página 3.
3- Instalando o Apache + Passenger - Página 7.
4- Configurando o ambiente OpenRedu - Página 10.
5- Implantado um aplicativo Ruby - Página 14.

Autor: Ricardo Cavalcanti

1

1- Introdução.
Este manual foi planejado para servir com guia para criar e colocar uma instância do
OpenRedu em produção utilizando o cloud server da Vultr. Ele pretende explicar de forma
básica os passos a serem seguidos para sucesso no deploy, sendo comentado durante o
conteúdo alguns erros comuns e a configuração básica do ambiente.
Openredu
O Openredu é um ambiente de aprendizagem open source, idealizado para proporcionar
formas de colaboração entre estudantes e professores utilizando diferentes mídias e tipos de
interação virtual. O Openredu é uma plataforma em nuvem, seguindo as tendências do
casamento entre tecnologia da informação e educação.
Uma vez devidamente cadastrado, um usuário dentro da plataforma do Openredu pode ser
estudante ou professor. É possível cadastrar cursos, módulos, disciplinas e,
consequentemente, se matricular nesse tipo de entidade. Os alunos podem ser avaliados
através de questionários criados pelos professores, que por sua vez podem observar os
resultados através de gráficos informativos que facilitam a percepção da evolução da turma
diante de determinados tipos de atividade.
O Openredu é desenvolvido na linguagem Ruby 1.9.3, utilizando o framework Rails 3.1.0,
seguindo o paradigma MVC. Desde que se tornou open source, passou a receber contribuições
de estudantes de graduação do Centro de Informática, na disciplina de Engenharia de Software
Educativo, como projeto da disciplina.
O sistema é orientado a serviços, o que lhe confere boa escalabilidade. O sistema suporta
dezenas de milhares de usuários com apenas uma instância rodando em um servidor (testado
com mais de 30.000 usuários, com estimativas de capacidade para até 100.000).
O código e a documentação do OpenRedu encontram-se no GitHub, disponível no seguinte
endereço: https://github.com/OpenRedu
Vultr
É um provedor de hospedagem VPS em nuvem, disponível em 15 locais em todo mundo,
abrangendo a América do Norte, Europa, Ásia e Austrália e permite que você implemente
facilmente uma infraestrutura em nuvem com alguns cliques de botão. Uma característica que
não podemos deixar de fora é seu preço que é bastante competitivo.
Você pode criar a sua conta no Vultr no seguinte endereço: https://www.vultr.com/

Autor: Ricardo Cavalcanti

2

2- Preparação do ambiente.
2.1 – Criação de uma nova instância no Vultr.
O que é uma instância de computação em nuvem?
Quando se fala em computação nas nuvens, fala-se na possibilidade de acessar arquivos e
executar diferentes tarefas pela internet. Quer dizer, você não precisa instalar aplicativos no
seu computador para tudo, pois pode acessar diferentes serviços online para fazer o que
precisa, já que os dados não se encontram em um computador específico, mas sim em uma
rede.
A computação em nuvem está substituindo o modelo atual de hospedagem compartilhada.
O primeiro passo é criar uma conta na Vultr e acessar sua conta em seguida estaremos na
seguinte tela de Servers, onde iremos criar nossa nova instância nas nuvens. Clique no sinal de
“+” o local onde tem a seta apontando, para adicionar um novo Server a nossa conta.

Agora em Server Type, escolha o tipo de servidor: Desempenho ou armazenamento de grande
capacidade, olhando as informações você exatamente saberá qual é a diferença entre eles.

Autor: Ricardo Cavalcanti

3

O próximo passo é escolher o local onde você irá implantar o seu servidor.

Nessa etapa da criação de nossa instância devemos escolher o sistema operacional, que será
executado em nosso servidor. O recomendado para rodar o OpenRedu é o Ubuntu 14.04
(Trusty).

Em Server Size é o lugar onde você pode escolher o quão poderosa será a configuração de
hardware de seu servidor. Após esse passo, aperte o botão azul para implantar.

Autor: Ricardo Cavalcanti

4

Você será redirecionado para a página Servers e verá a mensagem de sucesso sendo exibida,
observe a aba actions, nela é exibida o status de seu servidor. O servidor deve ser criado
dentro de um minuto.

Ao atualizar a página deverá ser exibido em status “Running” em verde. Isso significa que o seu
servidor está pronto para usar.

A seta preta indica o nome do servidor, no local onde a seta azul está apontando será
informado o ip e na seta laranja será aberta uma lista com outras opções onde a que nos
interessa é a details, devemos clicar nela e na próxima tela teremos senha de root para acessar
o terminal de nosso servidor. Caso você esteja utilizando uma máquina física com o Linux
instalado é possível utilizar o terminal de seu computador para acessar remoto a nossa
instância, para isso abra o seu terminal da sua máquina física (ctrl+t), digite o seguinte
comando: ssh root@IpDoSeuServidorCloud -Após digitar esse comando será solicitada a senha
de root do seu servidor Cloud, pronto feito isso a partir de sua máquina local, você estará
administrando remotamente o seu servidor nas nuvens.

Autor: Ricardo Cavalcanti

5

-> Vamos atualizar o servidor:
$sudo apt-get update
$sudo apt-get upgrade
->Vamos criar um novo usuário:
Para adicionar um novo usuário no Ubuntu, use o comando adduser, substituindo o
“novo_usuario” com o seu nome preferido.
$sudo adduser novo_usuario
Assim que você digitar este comando, o Ubuntu irá iniciar automaticamente o processo onde
você deverá:

Digitar e confirmar sua senha.

Digitar as informações do usuário. Isso não é necessário, pressionando ENTER irá
preencher automaticamente o campo com as informações padrão.

Pressionar Y (ou ENTER) quando o Ubuntu perguntar se as informações estão corretas.

Parabéns, você acabou de adicionar um novo usuário. Você poderá encerrar a sessão do
usuário root. Utilizando o comando exit, será feito o logout e, em seguida, será solicitado um
novo login, entre com os dados no novo usuário
-> Vamos conceder privilégios de root:
Execute o seguinte comando: $sudo nano visudo
Agora edite o arquivo que foi aberto da seguinte maneira, substituindo o nome
“novo_usuario” pelo nome do usuário que será concedido o privilégio de root:
# User privilege specification
root
ALL=(ALL:ALL) ALL
novo_usuario ALL=(ALL:ALL) ALL
Pressione ‘CTRL + X’ para sair do arquivo e, em seguida, ‘Y’ para salvá-lo.
Observação: Faça toda a instalação com o novo usuário que foi criado, para evitar erros
durante o processo e não se esqueça de sempre verificar no terminal se está com o mesmo
usuário que foi começada a instalação.

Autor: Ricardo Cavalcanti

6

3- Instalando o Apache + Passenger.
Phusion Passenger
Informalmente conhecido como mod_rails e mod_rack entre a comunidade, é um servidor
web e de aplicação opensource, com suporte para Ruby, Phython e Node.js, ele é projetado
para integrar o Apache HTTP ou Nginx servidor web.

Apache
Para acessar qualquer site na web, devemos saber que por trás daquela URL precisamos de
um servidor que é responsável por disponibilizar essas páginas e demais recursos que serão
acessados. Assim podemos perceber que um e-mail enviado através de um formulário, fazer
compras on-line, quem processa todas essas informações é o servidor web, em nosso caso o
Apache que irá processar as solicitações HTTP (Hypertext Transfer Protocol), este é o protocolo
padrão da web.
Quando estamos usando o navegador de internet para acessar um site, estas solicitações são
feitas ao servidor web do site através do protocolo HTTP e então recebe o conteúdo
correspondente.
O Apache Server é um software livre, o que significa que qualquer um pode estudar ou alterar
seu código-fonte, além de poder utilizá-lo gratuitamente. É graças a essa característica que o
software foi (e continua sendo) melhorado ao passar dos anos. Graças ao trabalho muitas
vezes voluntário de vários desenvolvedores, o Apache continua sendo o servidor Web mais
usado no mundo.
Passos para a instalação
Passo um: Instalar os pacotes do Passenger.
Estes comandos instalarão o módulo Passenger + Apache através do repositório APT da
Phusion.
#Instalando a chave PGP e adicionando suporte HTTPS para APT
$sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
$sudo apt-get install -y apt-transport-https ca-certificates
#Adicionando o repositório APT
$sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main >
/etc/apt/sources.list.d/passenger.list'
#Instalando o Passenger + Apache módulo
$sudo apt-get install -y libapache2-mod-passenger

Autor: Ricardo Cavalcanti

7

Passo dois: Checar a instalação.
Após a instalação, precisamos validá-la, executando $sudo /usr/bin/passenger-config validateinstall
Serão retornadas as seguintes mensagens:
* Checking whether this Phusion Passenger install is in PATH... ✓
* Checking whether there are no other Phusion Passenger installations... ✓
Caso essas mensagens não apareçam, os erros serão relatados informando os comandos para
resolvê-los. Esses são os erros que geralmente aparecem durante a checagem da instalação,
essas informações são mostradas no terminal, relatando o erro e forma de solucioná-los.
Erro 1)
This program requires the apxs2 tool in order to be able to validate your
Apache installation. This tool is currently not installed. You can solve this
as follows:
Please install it with apt-get install apache2-dev (Execute: apt-get install apache2-dev)
Erro 2)
Your Apache installation might be broken
You are about to validate Phusion Passenger against the following
Apache installation:
Não rode:. apxs2: /usr/bin/apxs2
However, this Apache installation appears to be broken, so this program
cannot continue. To find out why this program thinks the above Apache
installation is broken, run:
$ export ORIG_PATH="$PATH" (Execute: export ORIG_PATH="$PATH")
$ sudo -s –E (Execute: sudo -s –E)
$ export PATH="$ORIG_PATH" (Execute: export PATH="$ORIG_PATH")
$ /usr/bin/ruby1.9.1 /usr/bin/passenger-config --detect-apache2 (Execute:
/usr/bin/ruby1.9.1 /usr/bin/passenger-config --detect-apache2)
Erro 3)
Cannot find a usable Apache installation using /usr/bin/apxs (Execute: /usr/bin/apxs)
Final autodetection results
Vamos tentar validar novamente a instalação e se as mensagens de sucesso são exibidas.
Execute $sudo /usr/bin/passenger-config validate-install

Autor: Ricardo Cavalcanti

8

Serão retornadas as seguintes mensagens:
* Checking whether this Phusion Passenger install is in PATH... ✓
* Checking whether there are no other Phusion Passenger installations... ✓
Observação: Caso não consiga validar a instalação observe as mensagens que serão exibidas
em seu terminal, elas irão guiá-lo para a solução dos erros apresentados.
Passo três: Habilitar o módulo Apache do Passenger e reiniciar o Apache.
$ sudo a2enmod passenger
$ sudo apache2ctl restart
Caso ocorra o seguinte erro:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name,
using ::1. Set the 'ServerName' directive globally to suppress this message
Podemos corrigir executando $sudo nano /etc/apache2/apache2.conf e adicionando a
seguinte linha no inicio do arquivo: ServerName localhost
Passo quatro: Finalmente vamos verificar se o Apache iniciou os processos principais do
Passenger, execute: $ sudo /usr/sbin/passenger-memory-stats -Será exibida a seguinte
mensagem:
Version: 5.0.8
Date : 2015-05-28 08:46:20 +0200
---------- Apache processes ---------PID PPID VMSize Private Name
-------------------------------------3918 1 190.1 MB 0.1 MB /usr/sbin/apache2
...
----- Passenger processes -----PID VMSize Private Name
-------------------------------12517 83.2 MB 0.6 MB Passenger watchdog
12520 266.0 MB 3.4 MB Passenger core
12531 149.5 MB 1.4 MB Passenger ust-router
...
Se você não ver quaisquer processos do Apache ou processos do Passenger, então
provavelmente você terá algum tipo de problema de instalação ou problema de configuração.
Consulte a guia de solução de problemas Phusionpassenger no seguinte endereço:
https://www.phusionpassenger.com/library/admin/apache/troubleshooting/

Autor: Ricardo Cavalcanti

9

4- Configurando o ambiente do OpenRedu.
Passo um: Instalar cURL e dependências
$ sudo apt-get install libssl-dev libreadline6-dev zlib1g-dev curl
Passo dois: Instalar RVM
Neste processo é importante que não seja utilizado o usuário ROOT diretamente, em virtude
que parte deste processo necessitar do usuário local para acesso dos arquivos.
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys
409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable
$ echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile
$ source ~/.rvm/scripts/rvm
Verifique se o RVM está sendo carregado como função do bash
$ type rvm | head -n 1
Deve retornar: rvm is a function
Caso contrario, você pode editar manualmente o arquivo ~/.profile acrescentando ao final:
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load
RVM into a shell session *as a function*

Passo três: Instalar a versão 1.9.3 do ruby
$ rvm install 1.9.3
$ rvm use 1.9.3
Crie uma Gemset para o OpenRedu
$ rvm gemset create OpenRedu
$ rvm gemset use OpenRedu
Lembre sempre de verificar se está trabalhando no ambiente correto
$ rvm current
Deve retornar: ruby-1.9.3-p551@OpenRedu

Passo quatro: Instalar o MySql
$ sudo apt-get install mysql-client mysql-server libmysqlclient-dev
Autor: Ricardo Cavalcanti

10

Passo cinco: Instalar o Rails
$ gem install rails --version 3.1.0
Passo seis: Instalar o git
$ sudo apt-get install git-core
Passo sete: Instalar o MongoDB
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
$ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodborg/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

Passo oito: Baixando o código do OpenRedu
Navegue até o diretório /var/www
E dentro desse diretório execute: $ git clone https://github.com/OpenRedu/OpenRedu.git
Passo nove: Criar o arquivo database.yml
Inicialmente você deve criar uma base de dados para o OpenRedu. Em seguida, escrever
o database.yml, segundo as configurações do seu Banco de Dados. O
arquivo database.yml.example, localizado na pasta OpenRedu/config, pode ser usado como
base. Copie-o, e renomeie para database.yml. Então, basta adicionar as credenciais de
conexão com o banco de dados previamente instalado, cuidado com as informações editadas
nesse arquivo, pois qualquer erro, inclusive um espaço a mais irá ocasionar erro na criação das
tabelas e defina a senha do seu banco entre aspas.
Instalando as Gems necessárias ao OpenRedu
Esta tarefa é feita pelo Gem Bundler. Portanto, basta navegar para o diretório raiz do projeto e
executar o seguinte comando:
$ bundle install
Se aparecer a mensagem "bundler: command not found."
$ gem install bundler
Obs: Caso a instalação do nokogiri retorne erro na libxml2 and libxslt
$ sudo apt-get install libxslt-dev libxml2-dev

Autor: Ricardo Cavalcanti

11

Obs: Caso retorne erro na instalação do debugger-ruby_core_source
$ gem update debugger-ruby_core_source
Obs: Caso retorne erro na instalação:
An error occurred while installing json (1.8.0), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.0'` succeeds before bundling.
Execute: $ sudo apt-get install ruby-dev
Execute novamente o $ bundle install
Passo dez: Criar as tabelas.
Executar a rake task create para criar os bancos de dados.
$ rake db:create
Executar a rake task schema load para que todas as tabelas sejam criadas.
$ rake db:schema:load
Executar a rake task migrate para rodar alguma modificação ainda pendente.
$ rake db:migrate
Você pode executar a rake task migrate antes da rake task schema load caso você tenha
problemas com seu load.
Inicializando os submodules
O OpenRedu ainda utiliza alguns plugins que estão como submodules do git (has_friends por
exemplo), então precisamos executar dois comandos:
$ git submodule init
$ git submodule update
Inserindo dados essências no BD
Executar a rake task all para que todos os dados necessários sejam inseridos no Banco de
Dados.
$ rake bootstrap:all
Iniciando o servidor
Inicie o MySQL: $sudo /etc/init.d/mysql start
Iniciando o servidor de busca solr: rake sunspot:solr:start
Autor: Ricardo Cavalcanti

12

Obs: A execução do servidor de busca necessita da instalação do JAVA, que pode ser verificada
pelos comandos
$ dpkg -l | grep jre
$ java -version
Caso não esteja instalado:
$ sudo apt-get install default-jre

Autor: Ricardo Cavalcanti

13

5- Implantando um aplicativo Ruby.
Este guia ensina como você pode implantar seu aplicativo em um servidor. Este guia assume
que você já realizou as seguintes etapas:




Passageiro e Apache já estão instalados no servidor.
Você já transferiu o código do aplicativo para o servidor.
Você já instalou o Ruby.
Você já instalou todas as dependências necessárias que seu aplicativo precisa.

Determine o comando Ruby que o Passenger deve usar
$ passenger-config about ruby-command

*Tome nota do caminho depois de “Command”
Exemplo: PassengerRuby /usr/bin/ruby

Configurando um hostVirtual
sudo nano /etc/apache2/apache2.conf
Edite a seguinte linha, está localizado quase no final do seu arquivo apache2.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html mude para(/var/www/OpenRedu/public)
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Edite agora seus arquivos de hosts virtuais
sudo nano /etc/apache2/sites-available/000-default.conf

Autor: Ricardo Cavalcanti

14

Deixe da seguinte forma:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName 45.63.29.51:80 (IP_DO_SEU_SERVIDOR)
#ServerAdmin webmaster@localhost
DocumentRoot /var/www/OpenRedu/public
PassengerRuby /usr/bin/ruby (CAMINHO_QUE_TOMOU_NOTA)
RailsEnv development

<Directory /var/www/OpenRedu/public>
Allow from all
Options -MultiViews
# Uncomment this if you're on Apache > 2.4:
#Require all granted
</Directory>

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
#ErrorLog ${APACHE_LOG_DIR}/error.log
#CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Obs: Não esqueça de das as devidas permissões na pasta OpenRedu, para que os usuários
possam acessar os arquivos na web

Autor: Ricardo Cavalcanti

15

Configurando URL padrão da aplicação:

Acessar via SSH (pode-se utilizar o Web Shell da página inicial) com as credenciais:
Usuário: root
Senha: Openredu.
Edite o arquivo:
/home/openredu/OpenRedu/config/environments/development.rb
Modifique as linhas, informando o IP ou URL que o Openredu esta rodando.
config.url = "0.0.0.0:3000"
config.representer.default_url_options = {:host => "127.0.0.1:3000"}
Edite o arquivo:
/home/openredu/OpenRedu/config/application.rb
Modifique a linha abaixo, informando o IP ou URL que o Openredu esta rodando.
config.representer.default_url_options = {:host => "127.0.0.1:3000"}

Autor: Ricardo Cavalcanti

16

REFERÊNCIAS:
Wikipedia:
https://translate.google.com.br/translate?hl=ptBR&sl=en&u=https://en.wikipedia.org/wiki/Ph
usion_Passenger&prev=search
Phusionpassenger:
https://www.phusionpassenger.com/library/install/apache/install/oss/trusty/
https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/
https://www.phusionpassenger.com/library/install/apache/working_with_the_apache_config
_file.html
Dicas Alojamento Web:
http://www.dicasalojamentoweb.com/analise-vultr-alojamento-cloud-ssd-vps.html
Conhecendo o servidor apache (HTTP Server Project)
http://www.infowester.com/servapach.php
Máquina virtual com instalação padrão do Openredu
http://forum.openredu.com/t/maquina-virtual-com-instalacao-padrao-do-openredu/67
OpenRedu Setup (Ubuntu)
https://github.com/OpenRedu/OpenRedu/wiki/OpenRedu-Setup-(Ubuntu)

Autor: Ricardo Cavalcanti

17