Na procura de um software para substituir um sistema de “controle de chamados” ( tickets ) acabei esbarrando com o Redmine, que é um excelente gerenciador de projetos, escrito em Ruby on Rails e totalmente customizável.
Já que meu sistema operacional predileto é o FreeBSD e nele existe um port do Redmine resolvi subir esse ambiente usando um FreeBSD 8.0, Mongrel Cluster e Apache 2.2 com proxy_balance.
As imagens para download do FreeBSD estão disponíveis aqui: 32 bits e 64 bits
Com o FreeBSD instalado, precisamos atualizar o ports, que é uma coleção de programas instalada a partir do seu fonte:
portsnap fetch extract portsnap fetch update
Terminada a atualização do arvore do ports, vamos instalar os arquivos do Redmine:
cd /usr/ports/www/redmine; make install clean
No decorrer da instalação ele pedirá a confirmação de algumas opções e também vai instalar algumas dependências necessários. Primeiro ele pedirá qual o banco de dados a ser utilizado pelo Redmine, neste caso escolhi o Mysql.
Em seguida ele pede as configurações necessárias para compilar o Ruby.
Também são pedidas configurações de compilação para as dependências como o Perl, M4 e Libiconv, nestas basta deixar padrão e clicar em Ok.
Instalando o Mongrel para fazer o cluster com o módulo proxy_balance do apache:
cd /usr/ports/www/rybygen-mongrel_cluster; make install clean
E também o Apache 2.2:
cd /usr/ports/www/apache22; make install clean
Para compilar o Apache com o módulo proxy_balance temos que selecionar a opção quando a caixa de dialogo de configuração aparecer:
Por fim, instalamos o Mysql:
cd /usr/ports/databases/mysql50-server/
Com todos os softwares que precisamos instalados, agora podemos configurar o sistema para o rodar o Redmine com o apache e o mongrel_cluster.
Primeiramente vamos configurar o Mysql para subir automaticamente e também criar uma base de dados para o Redmine:
Adicione a seguinte linha no arquivo /etc/rc.conf do FreeBSD para o Mysql subir automaticamente:
mysql_enable="YES"
Para iniciar o Mysql:
/usr/local/etc/rc.d/mysql-server start
A senha do usuário root no Mysql vai estar em branco, e para conectar no basta digitar:
mysql -uroot -p
Voilá, você esta conectado e agora criamos a base e também um usuário para acessar ela:
create database redmine character set utf8; grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'minhasenha';
Após criar a base de dados vamos configurar e testar o Redmine.
cd /usr/local/www/redmine/ vi config/database.yml
Precisamos editar o arquivo database.yml e adicionar as seguintes linhas abaixo para o Redmine conectar no Mysql:
production: adapter: mysql database: redmine host: localhost username: redmine password: minhasenha encoding: utf8
Agora geramos alguns arquivos e alimentamos a base de dados do Redmine
cd /usr/local/www/redmine/ rake generate_session_store rake db:migrate RAILS_ENV="production" rake redmine:load_default_data RAILS_ENV="production" chown -R www:www files log tmp public/plugin_assets chmod -R 755 files log tmp public/plugin_assets
Neste momento podemos testar o Redmine apenas usando o WEBrick:
cd /usr/local/www/redmine/ ruby script/server -b 0.0.0.0 -p 3000 -e production
Agora basta apontar seu browser para url http://localhost:3000
Assim que o Redmine for testado podemos finalizar com o Mongre_Cluster e o Apache:
Para rodar o mongrel_cluster automaticamente, basta fazer os seguintes passos:
mkdir /usr/local/etc/mongrel_cluster touch /usr/local/etc/mongrel_cluster/redmine.yml
Adicionar as seguintes linhas no arquivo /usr/local/etc/mongrel_cluster/redmine.yml:
user: www cwd: /usr/local/www/redmine log_file: log/mongrel.log port: "10000" environment: production group: www address: 127.0.0.1 pid_file: tmp/pids/mongrel.pid servers: 3
O mongrel vai subir 3 servidores escutando na porta 10000, 10001 e 10002 do endereço local (127.0.0.1), você pode usar estas configurações para ter um alta performance ou mesmo alta disponibilidade se rodar em servidores separados.
Iniciando
mongrel_rails cluster::start -C /usr/local/etc/mongrel_cluster/redmine.yml
Parando
mongrel_rails cluster::stop -C /usr/local/etc/mongrel_cluster/redmine.yml
Reinicializando
mongrel_rails cluster::restart -C /usr/local/etc/mongrel_cluster/redmine.yml
Em fim, vamos configurar o proxy_balance do apache, primeiro vamos criar e editar o seguinte arquivo:
vi /usr/local/etc/apache22/extra/httpd-redmine.conf
Neste arquivo adicionamos as seguintes configurações e substitua o “dominio.com” pelo seu domino:
ServerName balance.dominio.com
SetHandler balancer-manager
Deny from all
Allow from 192.168.0.0/24
BalancerMember http://127.0.0.1:10000
BalancerMember http://127.0.0.1:10001
BalancerMember http://127.0.0.1:10002
ServerName redmine.dominio.com
ProxyRequests Off
ProxyPass / balancer://redmine/
ProxyPassReverse / balancer://redmine/
RewriteEngine On
RewriteRule ^/(.*) balancer://redmine/$1 [L,P]
O host virtual de exemplo que criei como “balancer.dominio.com” é onde você vai gerenciar o seu cluster:

E apontando para o “redmine.dominio.com” tenho o sistema rodando perfeitamente:

E para finalizar e deixar tudo rodando automaticamente quando seu sistema FreeBSD subir, deixe seu /etc/rc.conf com as seguintes linhas:
mysql_enable="YES" mongrel_cluster_enable="YES" mongrel_cluster_conf_dir="/usr/local/etc/mongrel_cluster" apache22_enable="YES"
Site do Redmine: www.redmine.org
Documentação: www.redmine.org/wiki/redmine/Guide
Plugin para o Firefox: addons.mozilla.org/firefox/addon/11545
Plugin para o Chrome: chrome.google.com/extensions/detail/maognoipicmbggkgjihiaimhpmnaaggm
Sem postagens relacionadas.

























Pingback: Tweets that mention FreeBSD e Redmine com Mongrel Cluster e Apache | OpenBR.org -- Topsy.com