Você está na página 1de 18

Documentao para colocar em produo uma nova instncia

OpenRedu em Cloud Vultr.

Autor: Ricardo Cavalcanti

ndice.

1- Introduo - Pgina 2.
2- Preparao do ambiente - Pgina 3.
o 2.1 Criao de uma nova instncia no Vultr - Pgina 3.
3- Instalando o Apache + Passenger - Pgina 7.
4- Configurando o ambiente OpenRedu - Pgina 10.
5- Implantado um aplicativo Ruby - Pgina 14.

Autor: Ricardo Cavalcanti

1- Introduo.
Este manual foi planejado para servir com guia para criar e colocar uma instncia do
OpenRedu em produo utilizando o cloud server da Vultr. Ele pretende explicar de forma
bsica os passos a serem seguidos para sucesso no deploy, sendo comentado durante o
contedo alguns erros comuns e a configurao bsica do ambiente.
Openredu
O Openredu um ambiente de aprendizagem open source, idealizado para proporcionar
formas de colaborao entre estudantes e professores utilizando diferentes mdias e tipos de
interao virtual. O Openredu uma plataforma em nuvem, seguindo as tendncias do
casamento entre tecnologia da informao e educao.
Uma vez devidamente cadastrado, um usurio dentro da plataforma do Openredu pode ser
estudante ou professor. possvel cadastrar cursos, mdulos, disciplinas e,
consequentemente, se matricular nesse tipo de entidade. Os alunos podem ser avaliados
atravs de questionrios criados pelos professores, que por sua vez podem observar os
resultados atravs de grficos informativos que facilitam a percepo da evoluo 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 contribuies
de estudantes de graduao do Centro de Informtica, na disciplina de Engenharia de Software
Educativo, como projeto da disciplina.
O sistema orientado a servios, o que lhe confere boa escalabilidade. O sistema suporta
dezenas de milhares de usurios com apenas uma instncia rodando em um servidor (testado
com mais de 30.000 usurios, com estimativas de capacidade para at 100.000).
O cdigo e a documentao do OpenRedu encontram-se no GitHub, disponvel no seguinte
endereo: https://github.com/OpenRedu
Vultr
um provedor de hospedagem VPS em nuvem, disponvel em 15 locais em todo mundo,
abrangendo a Amrica do Norte, Europa, sia e Austrlia e permite que voc implemente
facilmente uma infraestrutura em nuvem com alguns cliques de boto. Uma caracterstica que
no podemos deixar de fora seu preo que bastante competitivo.
Voc pode criar a sua conta no Vultr no seguinte endereo: https://www.vultr.com/

Autor: Ricardo Cavalcanti

2- Preparao do ambiente.
2.1 Criao de uma nova instncia no Vultr.
O que uma instncia de computao em nuvem?
Quando se fala em computao nas nuvens, fala-se na possibilidade de acessar arquivos e
executar diferentes tarefas pela internet. Quer dizer, voc no precisa instalar aplicativos no
seu computador para tudo, pois pode acessar diferentes servios online para fazer o que
precisa, j que os dados no se encontram em um computador especfico, mas sim em uma
rede.
A computao 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 instncia 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 informaes voc exatamente saber qual a diferena entre eles.

Autor: Ricardo Cavalcanti

O prximo passo escolher o local onde voc ir implantar o seu servidor.

Nessa etapa da criao de nossa instncia 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 quo poderosa ser a configurao de
hardware de seu servidor. Aps esse passo, aperte o boto azul para implantar.

Autor: Ricardo Cavalcanti

Voc ser redirecionado para a pgina 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 pgina 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 opes onde a que nos
interessa a details, devemos clicar nela e na prxima tela teremos senha de root para acessar
o terminal de nosso servidor. Caso voc esteja utilizando uma mquina fsica com o Linux
instalado possvel utilizar o terminal de seu computador para acessar remoto a nossa
instncia, para isso abra o seu terminal da sua mquina fsica (ctrl+t), digite o seguinte
comando: ssh root@IpDoSeuServidorCloud -Aps digitar esse comando ser solicitada a senha
de root do seu servidor Cloud, pronto feito isso a partir de sua mquina local, voc estar
administrando remotamente o seu servidor nas nuvens.

Autor: Ricardo Cavalcanti

-> Vamos atualizar o servidor:


$sudo apt-get update
$sudo apt-get upgrade
->Vamos criar um novo usurio:
Para adicionar um novo usurio 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 informaes do usurio. Isso no necessrio, pressionando ENTER ir


preencher automaticamente o campo com as informaes padro.

Pressionar Y (ou ENTER) quando o Ubuntu perguntar se as informaes esto corretas.

Parabns, voc acabou de adicionar um novo usurio. Voc poder encerrar a sesso do
usurio root. Utilizando o comando exit, ser feito o logout e, em seguida, ser solicitado um
novo login, entre com os dados no novo usurio
-> Vamos conceder privilgios 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 usurio que ser concedido o privilgio 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.
Observao: Faa toda a instalao com o novo usurio que foi criado, para evitar erros
durante o processo e no se esquea de sempre verificar no terminal se est com o mesmo
usurio que foi comeada a instalao.

Autor: Ricardo Cavalcanti

3- Instalando o Apache + Passenger.


Phusion Passenger
Informalmente conhecido como mod_rails e mod_rack entre a comunidade, um servidor
web e de aplicao 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 trs daquela URL precisamos de
um servidor que responsvel por disponibilizar essas pginas e demais recursos que sero
acessados. Assim podemos perceber que um e-mail enviado atravs de um formulrio, fazer
compras on-line, quem processa todas essas informaes o servidor web, em nosso caso o
Apache que ir processar as solicitaes HTTP (Hypertext Transfer Protocol), este o protocolo
padro da web.
Quando estamos usando o navegador de internet para acessar um site, estas solicitaes so
feitas ao servidor web do site atravs do protocolo HTTP e ento recebe o contedo
correspondente.
O Apache Server um software livre, o que significa que qualquer um pode estudar ou alterar
seu cdigo-fonte, alm de poder utiliz-lo gratuitamente. graas a essa caracterstica que o
software foi (e continua sendo) melhorado ao passar dos anos. Graas ao trabalho muitas
vezes voluntrio de vrios desenvolvedores, o Apache continua sendo o servidor Web mais
usado no mundo.
Passos para a instalao
Passo um: Instalar os pacotes do Passenger.
Estes comandos instalaro o mdulo Passenger + Apache atravs do repositrio 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 repositrio 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 mdulo
$sudo apt-get install -y libapache2-mod-passenger

Autor: Ricardo Cavalcanti

Passo dois: Checar a instalao.


Aps a instalao, precisamos valid-la, executando $sudo /usr/bin/passenger-config validateinstall
Sero 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 no apaream, os erros sero relatados informando os comandos para
resolv-los. Esses so os erros que geralmente aparecem durante a checagem da instalao,
essas informaes so 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:
No 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 instalao e se as mensagens de sucesso so exibidas.
Execute $sudo /usr/bin/passenger-config validate-install

Autor: Ricardo Cavalcanti

Sero retornadas as seguintes mensagens:


* Checking whether this Phusion Passenger install is in PATH...
* Checking whether there are no other Phusion Passenger installations...
Observao: Caso no consiga validar a instalao observe as mensagens que sero exibidas
em seu terminal, elas iro gui-lo para a soluo dos erros apresentados.
Passo trs: Habilitar o mdulo 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 no ver quaisquer processos do Apache ou processos do Passenger, ento
provavelmente voc ter algum tipo de problema de instalao ou problema de configurao.
Consulte a guia de soluo de problemas Phusionpassenger no seguinte endereo:
https://www.phusionpassenger.com/library/admin/apache/troubleshooting/

Autor: Ricardo Cavalcanti

4- Configurando o ambiente do OpenRedu.


Passo um: Instalar cURL e dependncias
$ sudo apt-get install libssl-dev libreadline6-dev zlib1g-dev curl
Passo dois: Instalar RVM
Neste processo importante que no seja utilizado o usurio ROOT diretamente, em virtude
que parte deste processo necessitar do usurio 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 funo 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 trs: Instalar a verso 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 cdigo do OpenRedu


Navegue at o diretrio /var/www
E dentro desse diretrio 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 configuraes 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. Ento, basta adicionar as credenciais de
conexo com o banco de dados previamente instalado, cuidado com as informaes editadas
nesse arquivo, pois qualquer erro, inclusive um espao a mais ir ocasionar erro na criao das
tabelas e defina a senha do seu banco entre aspas.
Instalando as Gems necessrias ao OpenRedu
Esta tarefa feita pelo Gem Bundler. Portanto, basta navegar para o diretrio raiz do projeto e
executar o seguinte comando:
$ bundle install
Se aparecer a mensagem "bundler: command not found."
$ gem install bundler
Obs: Caso a instalao 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 instalao do debugger-ruby_core_source


$ gem update debugger-ruby_core_source
Obs: Caso retorne erro na instalao:
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 modificao 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 esto como submodules do git (has_friends por
exemplo), ento precisamos executar dois comandos:
$ git submodule init
$ git submodule update
Inserindo dados essncias no BD
Executar a rake task all para que todos os dados necessrios 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 execuo do servidor de busca necessita da instalao do JAVA, que pode ser verificada
pelos comandos
$ dpkg -l | grep jre
$ java -version
Caso no 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 esto instalados no servidor.


Voc j transferiu o cdigo do aplicativo para o servidor.
Voc j instalou o Ruby.
Voc j instalou todas as dependncias necessrias 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: No esquea de das as devidas permisses na pasta OpenRedu, para que os usurios
possam acessar os arquivos na web

Autor: Ricardo Cavalcanti

15

Configurando URL padro da aplicao:

Acessar via SSH (pode-se utilizar o Web Shell da pgina inicial) com as credenciais:
Usurio: 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

REFERNCIAS:
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
Mquina virtual com instalao padro 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

Avaliar