Crie seu próprio Google Reader de graça

Liferea TTRSS
Liferea, OpenShift com TT RSS - INFOlab

Quem ficou muito chateado com a notícia de que o Google Reader seria desligado – e se assustou com a rápida retirada do Google Reader da loja Google Play, pode criar seu próprio serviço de agregador de feeds RSS. Não esperar pelo pôr do sol, pode lhe render conhecimento também sobre o excelente serviço de computação em nuvem OpenShift.

Não entendendo o porquê da morte precoce, mesmo sabendo que o Google quer focar em poucos projetos, de grandíssimo impacto. Inquieto, resolvi aproveitar para aprender a usar o serviço de computação em nuvem da Red Hat, seguindo o roteiro do desenvolvedor Amit Shah. O OpenShift segue o modelo de aplicação como serviço, ou PaaS. Quem é novato, vale a explicação, são três os modelos computacionais de nuvem: Infraestrutura como serviço (IaaS), aplicação como serviço (PaaS) e software como serviço (SaaS).

No PaaS você se preocupa com o desenvolvimento da aplicação e esquece o dia a dia de infraestrutura. Um gerenciador via linha de comando, conectado a um sistema de controle de versão, no caso o git, são as ferramentas de trabalho. No serviço você escolhe os pré-requisitos para rodar seu software. Eles são chamados de cartuchos. No caso escolheremos o cartuchos PHP 5.3 e o MySQL.

Para não perder tempo, no roteiro, o software que faz a mágica é o Tiny Tiny RSS. Um completo leitor e agregador, escrito em PHP. O aplicativo para desktop de leitura dos feeds que utilizei foi o Liferea, já que a interface se assemelha ao Google Reader. Mas você pode escolher o que preferir. Outro detalhe é que utilizei o Ubuntu para testar passo a passo.

 

Configurando o ambiente

Fiz questão de fazer um passo a passo mais detalhado que o original, optando pela interface web no começo, mas posso ter esquecido de algum detalhe. Se houver dúvida, não hesite em colocar nos comentários do blog. Vale mencionar que o roteiro é para quem está iniciando na plataforma e portanto existem abstrações e repetições de comando para fixação. Pegue sua dose extra de paciência e vamos em frente.

1 – Você tem que criar sua conta no serviço. Aponte o navegador para https://openshift.redhat.com/app/account/new. Preencha seus dados e espere por um e-mail de confirmação que vai ativar sua conta;

2 – Após ativar a conta, vamos selecionar o tipo de aplicação. Clique na opção Browse by tag, selecione a tag PHP e em seguida clique em PHP 5.3 Cartridge.

3 – No próximo passo, você vai definir a url do seu serviço. O nome é composto. O primeiro campo é define sua aplicação. Utilizei o nome rss01 neste campo. O segundo é o subdomínio da sua conta. Coloque o nome que desejar, lembrando que sua url ficará desta forma: https://rss01-meuservidor.rhcloud.com. Clique em Create Application para prosseguir;

4 – Agora você deve adicionar um cartucho para o banco de dados. Aponte para https://openshift.redhat.com/app/console/applications/rss01/cartridge_types/mysql-5.1 e depois, clique em Add Cartridge. Muito importante: anote todos os dados que aparecem depois de adicionar o cartucho MySQL. É com este usuário e senha que configuraremos a aplicação.

 

Configurando as ferramentas de trabalho

Agora vamos para a linha de comando. Precisamos instalar o gerenciador do serviço OpenShift, que depende do ruby, e o git. Abra um terminal e siga os passos:

1 – Instale os pré requisitos com o comando:

$ sudo apt-get -s install ruby-full rubygems git-core

2 – Agora instale o gerenciador rhc:

$ sudo gem install rhc

3 – Neste passo, precisamos inicializar o gerenciador. Tenha à mão o usuário (email) e senha do serviço, criados na primeira etapa. Aceite qualquer requisição que o comando solicitar. Execute:

$ rhc setup

4 – É preciso clonar a estrutura de diretórios e arquivos da sua conta localmente. Para isso, rode o comando:

$ rhc git-clone rss01

5 – Só com o objetivo de entender a estrutura de diretórios criada, leia o arquivo README, com o comando:

$ cd rss01/ && cat README

 

Instalando o agregador Tiny Tiny RSS

Se a sua paciência durou até aqui, você está prestes a instalar, de fato, o software. Siga o roteiro atentamente para não perder os detalhes de configuração.

1 –  Vamos duplicar o software a partir do repositório oficial. Perceba que seu código ficará no diretório php, abaixo da raiz. Execute os comandos:

$ cd ~

$ git clone git://github.com/gothfox/Tiny-Tiny-RSS.git

$ mv Tiny-Tiny-RSS/* openshift/rss01/php/

2 –  Adicionamos o que foi modificado, com o comando abaixo. Para qualquer alteração, você deve sempre utilizar estes comandos:

$ cd ~/openshit/rss01/

$ git add php && git commit -m ‘Adicionando os recursos do RSS’ && git push

3 –  Precisamos criar alguns diretórios fixos. Isto pode ser feito por um mecanismo conhecido como Hooks. Para tanto, editaremos o arquivo build. Utilizei o gedit por praticidade. Use seu editor preferido.

$ gedit .openshift/action_hooks/build

Copie e cole o conteúdo a seguir, no editor de textos e grave as alterações.

#!/bin/bash
# This is a simple build script, place your post-deploy but pre-start commands
# in this script. This script gets executed directly, so it could be python,
# php, ruby, etc.
TMP_DIR=$OPENSHIFT_DATA_DIR/tmp
LOCK_DIR=$OPENSHIFT_DATA_DIR/lock
CACHE_DIR=$OPENSHIFT_DATA_DIR/cache
ln -sf $OPENSHIFT_DATA_DIR/icons $OPENSHIFT_REPO_DIR/php/ico
if [ ! -d $TMP_DIR ]; then
mkdir $TMP_DIR
fi
if [ ! -d $LOCK_DIR ]; then
mkdir $LOCK_DIR
fi
if [ ! -d $CACHE_DIR ]; then
mkdir $CACHE_DIR
fi
if [ ! -d $CACHE_DIR/export ]; then
mkdir $CACHE_DIR/export
fi
if [ ! -d $CACHE_DIR/images ]; then
mkdir $CACHE_DIR/images
fi

4 –  Pronto, vamos agora dar permissão de execução e atualizar os arquivos no servidor, com o comando que você acabou de aprender:

$ chmod +x .openshift/action_hooks/build
$ git add .openshift/action_hooks/build
$ git commit -m ‘ Construindo um hook: diretorios fixos’
$git push

5 –  Agora vamos configurar o acesso ao banco de dados da aplicação. Modificaremos duas seções neste arquivo. A primeira são as credenciais de acesso (que você guardou da primeira etapa) e a segunda os diretórios que você criou com o hook configurado.

Execute:

$ cd ~/openshift/rss01/php/
$ cp config.php-dist config.php

$ gedit config.php

Altere o conteúdo do arquivo de configuração, nas seções demonstradas, com os valores corretos:

Database configuration

define('DB_TYPE', "mysql"); // or mysql
define('DB_HOST', $_ENV['OPENSHIFT_MYSQL_DB_HOST']);
define('DB_USER', "seu usuário mysql");
define('DB_NAME', "rss01 ou o nome que você definiu para aplicação");
define('DB_PASS', "sua senha mysql");

Basic settings

define('SELF_URL_PATH', 'http://rss01-meuservidor.rhcloud.com/');

Files and directories

define('LOCK_DIRECTORY', $_ENV['OPENSHIFT_DATA_DIR'] .'lock');
define('CACHE_DIR', $_ENV['OPENSHIFT_DATA_DIR'] .'cache');
define('TMP_DIRECTORY', $_ENV['OPENSHIFT_DATA_DIR'] . "/tmp");
define('ICONS_DIR',  $_ENV['OPENSHIFT_DATA_DIR']."icons");
define('ICONS_URL', "ico");

6 – Atualize no servidor a configuração:

$ cd ~/openshit/rss01/
$ git add php
$ git commit -m ‘Configurando aplicação’
$git push

7 – Um último passo é necessário. Instalar os dados da sua aplicação. Abra no navegador a url:

https://openshift.redhat.com/app/console/applications/rss01. Clique sobre o texto “WANT TO LOG IN TO YOUR APPLICATION?” e copie a execute o comando ssh que aparece. Coloque a senha da sua conta para conectar.

8 –  Uma vez conectado no servidor, execute os comandos abaixo. Mais uma vez, tenha as credenciais do banco MySQL à mão:

$ cd app-root/repo/php/schema/
$ mysql -u seu_usuario_mysql -p < ttrss_schema_mysql.sql

9 –  O último passo é adicionar um script para atualizar automaticamente os feeds de notícia, de hora em hora.

$ gedit ~/openshift/rss01/.openshift/cron/hourly/update.sh

Inclua o conteúdo:

#!/bin/bash
$OPENSHIFT_REPO_DIR/php/update.php -feeds >/dev/null 2>&1
date >> $OPENSHIFT_PHP_LOG_DIR/update-feeds.log

Salve e dê permissão de escrita, para depois atualizar

$ chmod +x ~/openshift/rss01/.openshift/cron/hourly/update.sh

$ cd ~/openshift/rss01/ && git add .openshift/cron/hourly/update.sh && git commit -m ‘atualiza de hora em hora’ && git push

 

Usando seu novo leitor

Ufa! Terminamos. Agora seu agregador está pronto para rodar. Acesse a url do serviço: https://rss01-meuservidor.rhcloud.com e entre usuário “admin” e senha “admin”. Não se esqueça de mudar a senha na configuração. O menu que acessa todos os itens de configuração se chama “Ações” e está posicionado no canto superior direito.

Depois de adicionar todos os feeds, pela interface web, você deve exportar o arquivo OPML (Ações>Preferências>Feeds>OPML). E o próximo passo é importar o arquivo no seu leitor, no caso o Liferea. Você pode também só utilizar a interface web.

Deixe uma resposta