BTC $86,257.00 +0,11%
ETH $2,714.38 -0,08%
SOL $120.32 -0,31%
BNB $783.54 -0,82%
XRP $1.51 -0,33%
ADA $0.2793 +2,71%
LINK $14.07 -0,94%
DOGE $0.0957 -0,53%
AVAX $11.44 +3,97%
HYPE $93.71 +0,33%
SUI $1.21 -2,98%
BTC $86,257.00 +0,11%
ETH $2,714.38 -0,08%
SOL $120.32 -0,31%
BNB $783.54 -0,82%
XRP $1.51 -0,33%
ADA $0.2793 +2,71%
LINK $14.07 -0,94%
DOGE $0.0957 -0,53%
AVAX $11.44 +3,97%
HYPE $93.71 +0,33%
SUI $1.21 -2,98%
WISKTON.XYZ Logo
Linux Iniciante [LEVEL 1]

Instalando Ruby on Rails e Gem no linux

Instalando Ruby on Rails e Gem no linux

Bom galera, faz umas semanas que estava quebrando a cabeça para fazer funcionar um servidor Rails com o Mongrel Cluster e o Apache. Como muitos desenvolvedores de Ruby não utilizam o RHEL e sim o Debian (ou distro baseadas em Debian), resolvi deixar esse post aos caros colegas administradores de rede que acabam pegando essas buchas. :S

Lembrando que você deve ter o GCC (tralhas & cia) para compilação e etc... Quem irá instalar o servidor selecione na instalação a opção de "Development" que ele instala. E também quem escolher a opção "Everthing" deve após a instalação desinstalar o Ruby que vem nativo (rpm -e ruby.x.x), já tive problemas com isso.

Iremos ver: Instalação do Ruby, Gems, Rails, MySQL, Mongrel, Mongrel Cluster e Apache Configuração do Mongrel e Apache.

Então, vamos à obra...

Instalação do Ruby, Gems, Rails e MySQL
Os arquivos eu deixarei num diretório chamado /opt/RoR (ruby on rails).

Instalaremos primeiramente o Ruby:

# cd /opt/RoR
# wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
# tar zxvf ruby-1.8.6.tar.gz
# cd ruby-1.8.6
# ./configure
# make
# make install

Agora o Gems, para quem tem dúvidas o Gems é parecido com o apt-get e o yum, ele gerencia os aplicativos para baixar e instalar, com um detalhe, com apenas um comando ele faz tudo (download, instala, ...), muito bacana.

# cd ..
# wget http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz
# tar zxvf rubygems-0.9.5.tgz
# cd rubygems-0.9.5
# ruby setup.rb

É a vez do Rails agora. Perceba a funcionalidade do Gems:

# gem install rails --include-dependencies

Sem um banco de dados não vamos muito longe. Caso você já tenha o DB, não é necessário instalar novamente.

# gem install mysql

Certo, terminamos o estágio que o programador mais gosta, funcionar! rs

Criando o banco, configurando sua aplicação e acessando
Entre no banco de dados e crie o banco:

# mysql -p
mysql> create database nomedobanco_production;
mysql> create database nomedobanco_development;
mysql> use nomedobanco_production;
mysql> grant all privileges on *.* to admin@'localhost' identified by '123456';
mysql> flush privileges;
mysql> use nomedobanco_development;
mysql> grant all privileges on *.* to admin@'localhost' identified by '123456';
mysql> flush privileges;
mysql> quit

Coloque a aplicação em um determinado diretório (utilizarei de exemplo /suaapp):

# cd /suaapp
# vi conf/database.yml

Altere os seguintes campos:

development:
adapter: mysql
database: nomedobanco_development
username: admin
password: 123456
host: localhost
socket: /tmp/mysql.sock

production:
adapter: mysql
database: nomedobanco_production
username: admin
password: 123456
host: localhost
socket: /tmp/mysql.sock

Criando as tabelas, lembre-se de estar dentro do diretório da sua app:

# rake db:migrate

Pronto, veremos agora se está tudo ok:

# ruby script/server

Acesse sua aplicação:

http://ip_do_server:3000

Pressione CTRL+C para continuarmos.

Crie um usuário chamado mongrel, necessário para "rodar" o cluster.

# useradd mongrel

Vamos instalar o Mongrel, que é um servidor para aplicações desenvolvidas em Ruby on Rails. O mongrel cluster é para fazermos balanceamento de instâncias.

# gem install mongrel
# gem install mongrel_cluster

Se você "levantar" o script/server, observe que ele carregará o Mongrel.

# mongrel_rails cluster::configure -e production -p 6000 -a 127.0.0.1 -N 5 -c /suaapp

Onde:

  • N = número de instâncias;
  • e = se produção ou desenvolvimento;
  • p = Porta de comunicação;
  • c = local onde está sua aplicação.

Crie uma pasta no /etc onde o Mongrel irá ler estas configurações:

# mkdir /etc/mongrel_cluster
# ln -s /suaapp/conf/mongrel_cluster.yml /etc/mongrel_cluster/suaapp.yml

Agora o Apache, muitos admins não sabem o porque dessa interação, bem podemos dizer que o Apache irá administrar o conteúdo estático (imagens,...) da aplicação, fará também o gerenciamento do cluster e fará a segurança, se necessário fazer uma conexão segura (SSL) deveremos fazer também com o apache.

# wget http://apache.rmplc.co.uk/httpd/httpd-2.2.6.tar.gz
# tar xvfz httpd-2.2.3.tar.gz
# cd httpd-2.2.3/
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
--enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
# make
# make install

Crie um link para os módulos na sua pasta de configurações do apache:

# ln -s /usr/local/apache2/modules /usr/local/apache2/conf/modules

Vamos configurar um virtual host para nossa app:

# vi /usr/local/apache2/conf/httpd.conf

Você deve habilitar os seguintes módulos:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Instalando e configurando o Mongrel com Apache / Parte 2
Inclua no final do arquivo a seguinte configuração:


ServerName redhatonrails
ErrorLog /suaapp/log/errors.log
CustomLog /suaapp/log/apache.log combined


Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

RewriteEngine On

Check for maintenance file and redirect all requests

( this is for use with Capistrano's disable_web task )

RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]

Rewrite index to check for static

RewriteRule ^/$ /index.html [QSA]

Rewrite to check for Rails cached page

RewriteRule ^([^.]+)$ $1.html [QSA]

Redirect all non-static requests to cluster

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

Deflate

AddOutputFilterByType DEFLATE text/html text/plain text/css

... text/xml application/xml application/xhtml+xml text/javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html


Order allow,deny
Allow from all


BalancerMember http://127.0.0.1:6000
BalancerMember http://127.0.0.1:6001
BalancerMember http://127.0.0.1:6002
BalancerMember http://127.0.0.1:6002
BalancerMember http://127.0.0.1:6002

Vamos criar um arquivo de inicialização para o Mongrel Cluster:

# ln -s /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/
resources/mongrel_cluster /etc/rc.d/init.d/mongrel_cluster
# chmod +x /etc/rc.d/init.d/mongrel_cluster

Inicie o Mongrel e o Apache:

/usr/local/apache2/bin/apachectl start

/etc/rc.d/init.d/mongrel_cluster start

Só correr para o abraço e acessar sua aplicação...

http://ip_do_server/

Feito por: Marcos Miras

AVISO DE SEGURANÇA (DYOR): Todo o conteúdo do wiskton.xyz tem caráter estritamente educativo e informativo. Criptoativos envolvem volatilidade e riscos cibernéticos. Jamais compartilhe sua seed phrase ou chaves privadas com terceiros.
// TRANSMISSÃO DE DADOS // COMPARTILHE ESTE PROTOCOLO
CYPHERPUNK BROADCAST NETWORK
wiskton
[ESCRITO POR]

Willem (WISKTON) Allan

Editor-Chefe, Desenvolvedor & Pesquisador Cypherpunk

Youtuber, Programador, investidor, fanático em tecnologia, fã de dragon ball, artista marcial, futebolista amador e gamer nas horas vagas.

// DISCUSSÃO & COMENTÁRIOS (0)
MODERADO VIA MATRIX

DEIXE UMA RESPOSTA

Nenhum comentário registrado ainda. Seja o primeiro a comentar!

// POSTS RELACIONADOS DA CATEGORIA

// MATRIX BUFFER LINK COPIADO COM SUCESSO!