Este tutorial mostrara como instalar a plataforma para redes sociais e de economia solidária Noosfero, desenvolvida em Ruby on Rails, utilizando o módulo para implantação de aplicativos Ruby Passenger Phusion sobre o Servidor Web de alta performance Nginx no GNU/Linux Debian 7.0 Wheezy. Neste tutorial usaremos o PostgreSQL como banco de dados.
1) Preparando o Ambiente
1.1) Primeiro vamos instalar as dependências para o Noosfero, PostgreSQL, Nginx e Passenger Phusion. Como administrador do sistema (root)
nano /etc/apt/sources.list
1.2) Acrescente as seguintes linhas no final do arquivo, salve (CTRL + o) e saia do nano (CTRL + x)
deb http://ftp.br.debian.org/debian wheezy main contrib
deb-src http://ftp.br.debian.org/debian wheezy main contrib
1.3) Atualize a base de pacotes local
apt-get update
1.4) Instale as dependências para o Noosfero, PostgreSQL, Nginx e Passenger Phusion
apt-get build-dep nginx -y
apt-get build-dep ruby-passenger -y
apt-get install git rubygems1.8 postfix postgresql-9.1 postgresql-client-9.1 postgresql-server-dev-9.1 po4a rcov iso-codes openjdk-6-jre tango-icon-theme libxslt1-dev libxml2-dev memcached bzip2 -y
* Opcionalmente limpe o cache dos pacotes baixados com o comando: apt-get clean
1.5) Troque a versão do Ruby padrão do Debian Wheezy (1.9.1) para o Ruby 1.8
- Alterando o Ruby
update-alternatives --config ruby
Escolha a opção: /usr/bin/ruby1.8
- Alterando o Ruby Gem
update-alternatives --config gem
Escolha a opção: /usr/bin/gem1.8
2) Instalando o Phusion Passenger
2.1) Baixe o código-fonte do Passenger Phusion do Git (Repositório de Código-Fonte)
- Clonando o repositório Git do Passenger Phusion
git clone https://github.com/FooBarWidget/passenger.git
- Faça checkout da última versão estável do Phusion Passenger (3.0.18)
cd passenger
git checkout release-3.0.18
2.2) Compilando e criando o pacote Gem do Phusion Passenger
- Instale o Gerenciador de Tarefas Rake
gem install rake
rake package
2.3) Instale a Gem do Phusion Passenger
gem instal pkg/passenger-3.0.18.gem
3) Instalando o Nginx com suporte ao Phusion Passenger
3.1) Baixe o código-fonte do Nginx e descompacte
cd ~
wget -c http://nginx.org/download/nginx-1.3.8.tar.gz
tar xvf nginx-1.3.8.tar.gz
3.2) Configure e compile o Nginx
cd nginx-1.3.8
./configure --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-ipv6 --with-poll_module --with-pcre --with-http_gzip_static_module --add-module=/var/lib/gems/1.8/gems/passenger-3.0.18/ext/nginx
make
make install
- Crie o diretório /var/lib/nginx/body
mkdir -p /var/lib/nginx/body
4) Instalando o Noosfero
4.1) Baixe o código fonte do Noosfero
cd ~
mkdir /var/lib/noosfero
- Clonado repositório do Noosfero
git clone https://git.gitorious.org/noosfero/noosfero.git /var/lib/noosfero/current
- Crie Diretórios/Links Auxiliares ao Noosfero
mkdir /var/run/noosfero
mkdir /var/log/noosfero
mkdir /var/tmp/noosfero
mkdir -p /var/tmp/noosfero/solr
ln -s /var/tmp/noosfero /var/lib/noosfero/current/tmp
ln -s /var/run/noosfero /var/lib/noosfero/current/tmp/pids
ln -s /var/log/noosfero /var/lib/noosfero/current/log
- Defina Dono/Grupo www-data para o Noosfero
chown www-data.www-data /var/lib/noosfero /var/run/noosfero /var/log/noosfero /var/tmp/noosfero -R
4.1.1) Alterando o Gemfile
rm /var/lib/noosfero/current/Gemfile
rm /var/lib/noosfero/current/Gemfile.lock
- Crie um novo arquivo Gemfile
nano /var/lib/noosfero/current/Gemfile
- Adicione ao Gemfile
source 'https://rubygems.org'
gem 'rails', '2.3.14'
gem 'rack', '~> 1.1.0'
gem 'bundle'
gem 'pg'
gem 'i18n'
gem 'will_paginate', '2.3.12'
gem 'gettext'
gem 'RedCloth'
gem 'hpricot'
gem 'cucumber', '0.4.0'
gem 'webrat', '0.5.1'
gem 'sunspot_rails'
gem 'builder'
gem 'nokogiri', '~>1.5.5'
- Instale as depedências do Ruby e Noosfero
cd /var/lib/noosfero/current
gem install bundle
bundle install
4.2) Alterando o Noosfero para trabalhar com uma versão mais nova do Ruby on Rails
- Edit o arquivo config/environment.rb
nano /var/lib/noosfero/current/config/environment.rb
- Alterar a linha
RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
- Para
RAILS_GEM_VERSION = '2.3.14' unless defined? RAILS_GEM_VERSION
4.3) Configurando o Banco de Dados PostgreSQL
nano /etc/postgresql/9.1/main/postgresql.conf
- Descomente a linha (Retirar o #)
#listen_addresses = 'localhost'
- Alterar modo de acesso ao Banco de Dados
nano /etc/postgresql/9.1/main/pg_hba.conf
- Alterar a linha
host all all ::1/128 md5
- Para
host all all ::1/128 trust
- Re-inicie o PostgreSQL
/etc/init.d/postgresql restart
4.4) Configurando o acesso ao Banco de Dados do Noosfero
nano /var/lib/noosfero/current/config/database.yml
- Adicionar ao arquivo config/database.yml
development:
adapter: postgresql
database: noosfero_development
username: postgres
password:
host: localhost
test: &TEST
adapter: postgresql
database: noosfero_test
username: postgres
password:
host: localhost
production:
adapter: postgresql
database: noosfero_production
username: postgres
password:
host: localhost
cucumber:
<<: *TEST
4.4.1) Criando o Banco de Dados noosfero_production
createdb -U postgres -h localhost noosfero_production
4.4.2) Criando o Schema do Banco de Dados
RAILS_ENV=production bundle exec rake db:schema:load
RAILS_ENV=production bundle exec rake noosfero:translations:compile
4.4.3) Carregando Dados de Exemplo no Banco de Dados do Noosfero
RAILS_ENV=production ./script/sample-data
4.4.4) Ativando o Servidor de Busca Apache Solr
- Fazendo Download
RAILS_ENV=production bundle exec rake solr:download
- Configurando e Iniciando o Solr
cp /var/lib/noosfero/current/config/solr.yml.dist /var/lib/noosfero/current/config/solr.yml
RAILS_ENV=production bundle exec rake solr:start
5) Configurando o Nginx
- Apague a configuração antiga do nginx.conf
rm /etc/nginx/nginx.conf
- Crie/Edite um novo arquivo de configuração
nano /etc/nginx/nginx.conf
- Acrescente ao nginx.conf
user www-data;
worker_processes 1;
events { worker_connections 256; }
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 90;
passenger_root /var/lib/gems/1.8/gems/passenger-3.0.18/;
server {
listen 80;
server_name localhost;
passenger_enabled on;
rails_env production;
root /var/lib/noosfero/current/public;
error_log /var/log/nginx/noosfero.error.log;
access_log /var/log/nginx/noosfero.access.log;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root html; }
}
}
- Redefina Dono/Grupo do Noosfero
chown www-data.www-data /var/lib/noosfero -R
5.1) Iniciando o Servidor Web Nginx e testando a aplicação em Ruby on Rails
- Pare o Apache2 (caso esteja ativo)
service apache2 stop
- Inicie o Nginx
nginx
6) Acesse a nova instalação do Noosfero
- No Navegador
http://localhost
Login: ze
Password: test