“Uma plataforma web livre para redes sociais e de economia solidária”
Site http://noosfero.org
Blog http://softwarelivre.org/noosfero
http://gitlab.com/noosfero/noosfero
A metologia de desenvolvimento das equipes baseia-se em métodos ágeis e TDD
Manutenção e desenvolvimentoDois branches:
|
Nos seguintes canais na rede IRC Freenode (freenode.net)
Você pode usar um cliente IRC web caso não queira instalar um em seu computador webchat.freenode.net
Lista de discussão noosfero-dev « em inglês
http://listas.softwarelivre.org/listinfo/noosfero-dev
Lista de discussão noosfero-br « em português
http://listas.softwarelivre.org/listinfo/noosfero-br
Anualmente ocorre o encontro comunitário no Fisl
fisl.org.br
Mas se você está perto pode fazer uma visita e bater um papo com algum desenvolvedor Noosfero
1º Encontro virtual de desenvolvedores Noosfero
02 de Outubro de 2015 às 15h
softwarelivre.org/noosfero/encontros
este encontro deve deveria ocorrer com alguma frequência, a cada 3 meses por exemplo
O Noosfero v0.1.0 nasceu em 2007 entre uma parceiria da Colivre com:
Objetivo: “Fortalecer os empreendimentos e divulgar a Economia Solidária”
Objetivo: “Plataforma para exercício pleno da ‘cidadania digital’ (netizenship)”
ASL, USP, Serpro, SGPR, Blogoosfero, OCEB, UnB, Qualipso, IPF, Kliceo, UCSal, MPOG, UFBA
E deste a primeira versão do Noosfero lançada em 2007 foram lançadas mais de 200 versões
lançada em 9 de março de 2017
“instituições e usuários se tornam parte da comunidade”
header.html.erb | elementos do cabeçalho |
footer.html.erb | elementos do rodapé |
navigation.html.erb | links do menu superior |
style.css | né?! |
theme.yml | configurações do tema |
Você pode alterar o tema do ambiente (Environment) pelo console:
./script/console ou noosfero-console
e = Environment.default
e.theme = "mytheme"
e.save
http://noosfero.org/Development/CreatingThemes
HACKING.themes.md
ldap, oauth, carrinho de compras, novos tipos de blocos, novos tipos de conteúdos, …
Os plugins estão todos junto ao código-fonte do noosfero na pasta ‘plugins/’
http://noosfero.org/Development/PluginsArchitecture
MultitenancyDocumentação sobre como instalar Noosfero com suporte a multitenancy: INSTALL.multitenancy.md |
git clone https://gitlab.com/noosfero/noosfero.git
cd noosfero
./script/quick-start
Esta forma de instalação é adequada para ambientes de desenvolvimento ou testes
(em ambientes de desenvolvimento)
Edite o /etc/hosts
e adicione a seguinte entrada:
127.0.0.1 noosfero.ufba
Abra o console do Noosfero e execute o seguinte código:
$ rails console
env = Environment.default
domain = Domain.new(:name => 'noosfero.ufba', :is_default => true)
env.domains << domain
Reinicie o servidor de desenvolvimento
$ ./script/development
Este script inicia alguns serviços além do servidor Rails local:
Abra o console do Noosfero e execute o seguinte código:
env = Environment.default
admin = User.new({
:login => "adminuser",
:email => 'adminuser@localhost.localdomain',
:password => 'admin',
:password_confirmation => 'admin',
:environment => env,
})
admin.save
admin.activate
env.add_admin(admin.person)
Acesse http://localhost:3000
(recomendado para uso em ambientes de produção)
download.noosfero.org/debian
Os pacotes do Noosfero seguem, com um certo “delay”, a versão estável do Debian, hoje está em Debian Wheezy
# apt-get install postgresql
# apt-get install noosfero noosfero-apache
Cria um banco postgresql chamado “noosfero”
recomenda-se deixar em branco para que o sistema gere uma senha aleatória
Digite: noosfero.ufba
Acesse: http://noosfero.ufba/
Produção | Desenvolvimento |
production.log | development.log |
delayed_job.log | development_delayed_job.log |
production_spammers.log | development_spammers.log |
cron.log | cron.log |
$ tail -f log/development.log
$ tail -f log/development.log | grep POST
request-log-analyzer.com
Ferramenta de linha de comando para gerar relatório de performance a partir da análise de logs, suporta vários formatos (Rails, Merb, DelayedJob, Apache, NGINX, …)
$ gem install request-log-analyzer
Caso isto não funcione faça download em http://rubygems.org/gems/request-log-analyzer
$ gem install request-log-analyzer-1.13.4.gem
$ request-log-analyzer log/production.log
Para gerar o relatório em HTML utilize os parâmetros: --output html --file
production.html
Adicione host: localhost
em /etc/noosfero/database.yml:
production:
adapter: postgresql
database: noosfero
encoding: unicode
username: noosfero
password: rgF2j7vDbVUR
host: localhost
Logue como ‘noosfero’ e execute a task para gerar o backup:
# su - noosfero
$ rake backup
noosfero@noosfero-debian-wheezy:~$ rake backup
mkdir -p tmp/backup
pg_dump -h localhost noosfero > tmp/backup/2015-08-19-12:12.sql
Senha:
tar chaf tmp/backup/2015-08-19-12:12.tar.gz tmp/backup/2015-0...
rm -f tmp/backup/2015-08-19-12:12.sql
****************************************************
Backup in tmp/backup/2015-08-19-12:13.tar.gz !
To restore, use:
$ rake restore BACKUP=tmp/backup/2015-08-19-12:13.tar.gz
****************************************************
Isto cria um arquivo com o dump do banco e todos os arquivos do ambiente Noosfero
# su - noosfero
$ rake restore BACKUP=tmp/backup/2015-08-19-12:12.tar.gz
WARNING: backups should be restored to an empty database, otherwise
data from the backup may not be loaded properly.
You can remove the existing database and create a new one with:
$ sudo -u postgres dropdb -h localhost noosfero
$ sudo -u postgres createdb -h localhost noosfero --owner noosfero
Are you sure you want to continue (y/N)?
Mas antes: destrua o banco!
# su - postgres
$ dropdb noosfero
$ createdb noosfero --owner noosfero
“Usar multitenancy
e evoluir a implementação das tasks backup
e restore
para entender isto, assim teríamos um isolamento maior”
# su - postgres
$ pg_dump noosfero > noosfero_dump.sql
(para ambientes de produção)
# noosfero-console
# noosfero-runner "puts Environment.default.name"
# noosfero-plugins list
Varnish Cache é um acelerador de aplicações web, também conhecido como proxy reverso de cache HTTP
www.varnish-cache.org
Siga a documentação em INSTALL.varnish.md
nos fontes do Noosfero
# apt-get install varnish
# apt-get install libapache2-mod-rpaf
8080
80
Multitenancy é um princípio em arquitetura de software onde uma única instancia de software rodando num servidor serve várias organizações, chamado tenants (inquilino)
Com esta arquitetura o Noosfero isola os seguintes dados para cada Environment
mas antes desabilite o envio de emails
Adicione a linha abaixo ao arquivo config/environments/production.rb
config.action_mailer.delivery_method = :file
# su - noosfero
$ RAILS_ENV=production ./script/sample-data
Creating categories: .........E...F....... done!
Creating regions: ........................ done!
Creating users: EEEEE....EEEEE............ done!
...
Este script cria categorias, usuários, perfils de comunidades, empreendimentos, artigos, textos, blogs, etc… com dados “aleatórios”
Altere o arquivo /etc/noosfero/database.yml
ufba_production: &DEFAULT
adapter: postgresql
database: noosfero
encoding: unicode
username: noosfero
password: 547fjsJA
schema_search_path: public
domains:
- noosfero.ufba
production:
<<: *DEFAULT
Criar um ‘ambiente Rails’ baseado em ‘production’ para o novo ‘tenant’ ‘ufba_production’
# cd ~noosfero
# RAILS_ENV=production rake multitenancy:create
Mova os arquivos de usuários e uploads:
# mkdir public/articles/public
# mv public/articles/0000 public/articles/public/
# mkdir public/image_uploads/public
# mv public/image_uploads/0000 public/image_uploads/public/
# mkdir public/thumbnails/public
# mv public/thumbnails/0000 public/thumbnails/public/
É possível que existam referências para conteúdos estáticos armazenados no sistema de arquivos, então é importante configurar o servidor web para evitar problemas
Adicione as seguintes linhas à configuração do Apache:
RewriteRule ^/articles(.+) /articles/public$1
RewriteRule ^/image_uploads(.+) /image_uploads/public$1
RewriteRule ^/thumbnails(.+) /thumbnails/public$1
Adicione as configurações abaixo ao arquivo /etc/noosfero/database.yml
ripe_production:
adapter: postgresql
database: noosfero
encoding: unicode
username: noosfero
password: 547fjsJA
schema_search_path: ripe
domains:
- ripe.ufba
Crie o schema
do banco de dados
# su - postgres
$ psql noosfero -c "CREATE SCHEMA ripe AUTHORIZATION noosfero"
Adicione o domínio ao Apache, edite o arquivo /etc/apache2/sites-enabled/noosfero
e adicione o seguinte
ServerAlias ripe.ufba
Prepare o banco de dados
# cd ~noosfero
# RAILS_ENV=production rake multitenancy:create
# RAILS_ENV=ripe_production rake db:schema:load
# RAILS_ENV=production rake db:migrate
Edite o arquivo /etc/pound/pound.cfg
Service
HeadRequire "Host:.*noosfero.ufba.*"
Redirect "https://noosfero.ufba"
End
Service
HeadRequire "Host:.*ripe.ufba.*"
Redirect "https://ripe.ufba"
End
Remova os logs do novo ambiente para evitar problemas de permissão e reinicie o Noosfero, Apache e o Pound
rm /usr/share/noosfero/log/ripe_*
service noosfero restart
service apache2 restart
service pound restart
RAILS_ENV=production NOOSFERO_DOMAIN=ripe.ufba rake db:data:minimal
Notificar por email quando ocorrer algum erro no Noosfero
gem install exception_notification -v 1.0.20090728
Adicione os emails que serão notificados em /etc/noosfero/noosfero.yml
production:
exception_recipients: [admin@example.com, you@example.com]
noosfero.yml
addthis, gravatar, tamanho máximo dos uploads, tempo para checar ativação dos usuários, …
Veja um exemplo deste arquivo em /usr/share/doc/noosfero/examples/noosfero.yml.dist ou config/noosfero.yml.dist
O Noosfero possui suporte a chat, a infraestrutura do lado servidor é
toda em cima do protocolo XMPP através do servidor ejabberd
xmpp.org
www.ejabberd.im
A partir do Noosfero 1.2 o chat pode ser instalado via pacote Debian
Mas antes de instalar o pacote é preciso editar o database.yml
e remover a entrada host: localhost
bug com o multitenancy!
apt-get install noosfero-chat
Edite novamente o database.yml
e adicione o host: localhost
Administrador -> Funcionalidades -> Bate-papo baseado em XMPP/Jabber
Instale as dependencias
apt-get install devscripts debhelper
Informe ao git quem você é e gere o pacote Debian
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Necessário ter uma chave GNUPG pois o processo assina os pacotes Debian gerados com sua chave
rake noosfero:release[stable]
Ao ser questionado sobre a versão informe: 1.2+ufba1
Este processo irá gerar os pacotes: noosfero, noosfero-apache e noosfero-chat
Veja detalhes em RELEASING.md
joenio@joenio.me
Esta apresentação está disponível em:
http://joenio.me/noosfero-para-sysadmins
(código-fonte: http://github.com/joenio/joenio.me)
Imagens utilizadas nesta apresentação
Onde e quando esta apresentação foi realizada