quarta-feira, 10 de dezembro de 2014

Backup do Liferay 6.1 - Cópia do ambiente Produção para Homologação

Neste post anoto passo a passo como foi feita a cópia do ambiente de produção para homologação
Antes de tudo, foi feito um backup da base de dados e de toda a instalação do Liferay do ambiente de homologação. Não foi necessário parar o ambiente de produção em nenhum momento.
  • Paramos o ambiente de homologação
  • Mantivemos em homologação os arquivos de configuração que não poderiam ser sobrescritos pelos de produção:
  liferay/portal-ext.properties
  liferay/apache-tomcat-7.xxx/bin/setenv.sh
  liferay/apache-tomcat-7.xxx/conf/server.xml
  liferay/apache-tomcat-7.xxx/conf/web.xml
  liferay/apache-tomcat-7.xxx/webapps/ROOT/WEB-INF/classes/system-ext.properties
  liferay/data/license (toda a pasta)

Como não paramos o ambiente de produção, a ordem dos próximos passo é fundamental:
  • Copiamos o banco de dados de produção sobre o de homologação
  • Copiamos a pasta liferay/data/ de PRD para HML
  • Copiamos toda a pasta liferay/apache-tomcat-7.xxx de PRD para HML
  • Devolvemos para a origem em HML todos os arquivos que reservamos no segundo passo.
  • Update na tabela dos web contents para alterar alguma URL que não tivesse endereço relativo
    • update journalarticle set content = replace(content,'endereco-do-portal-de-producao.com.br','endereco-do-portal-de-homologacao.com.br') where content like '%endereco-do-portal-de-producao.com.br%';
Com isso trouxemos todos os deploys e dados do ambiente de produção para homologação, tendo uma cópia real do ambiente ; )

#saravá

quarta-feira, 3 de dezembro de 2014

Liferay Plugin EXT com possibilidade de undeploy

O Liferay é tão flexível que podemos sobrescrever suas classes apenas substituindo-as em um plugin EXT. Entretanto, esse tipo de ação sempre foi desencorajada nos cursos, treinamentos e documentações da Liferay e deve ser usado apenas em último caso e apenas caso não seja possível fazê-lo com um hook ou criando seu próprio portlet. Além disso, sobrescrever uma classe é um caminho sem volta e remover o EXT implicariam em reinstalar o Liferay do zero.

Antes de criar qualquer Plugin EXT leia bem o tópico no link a seguir:
https://www.liferay.com/pt/documentation/liferay-portal/6.1/development/-/ai/ext-plugi-4
Eu aprendi da pior maneira que tinha que apagar todos os arquivos em docroot/WEB-INF/ext-web/docroot/WEB-INF que não estão sendo customizados!

Assim, este post registra como criar um plugin EXT apenas estendendo as funcionalidades do Liferay, criando um ext-spring.xml onde alteramos o comportamento de um bean específico fazendo o Liferay utilizar a nossa nova classe ao invés de sobrescrever uma classe original.

Todos os beans de classes do Liferay estão disponíveis no portal-impl/src/META-INF/portal-spring.xml do fonte. Basta ir até esse arquivo,

  1. copiar apenas o bean que gostaria de estender
  2. colar no seu docroot/WEB-INF/ext-impl/src/META-INF/ext-spring.xml (não se esqueça de copiar a tag <beans> mais externa!) 
  3. alterar o nome da classe que implementa esse bean!
Para fazer o deploy basta gerar o war, copia-lo para a pasta deploy e reiniciar o liferay

Já para o undeploy o Liferay é meio burrinho. É preciso parar o Liferay e apagar tudo manualmente (ou por script). Mas note que o "undeploy" só é possível porque não fizemos nenhuma modificação nas classes do Liferay, estamos apenas incluindo um novo comportamento.


tomcat_home="./tomcat"
app_name="$1"

rm -rf $tomcat_home/temp
rm -rf $tomcat_home/work
rm -rf $tomcat_home/webapps/$app_name-ext
rm -rf $tomcat_home/webapps/ROOT/html/portlet/ext
rm -f $tomcat_home/lib/ext/ext-$app_name-ext-service.jar
rm -f $tomcat_home/webapps/ROOT/WEB-INF/lib/ext-$app_name-ext-util-bridges.jar
rm -f $tomcat_home/webapps/ROOT/WEB-INF/lib/ext-$app_name-ext-util-taglib.jar
rm -f $tomcat_home/webapps/ROOT/WEB-INF/lib/ext-$app_name-ext-util-java.jar
rm -f $tomcat_home/webapps/ROOT/WEB-INF/lib/ext-$app_name-ext-impl.jar
rm -f $tomcat_home/webapps/ROOT/WEB-INF/ext-$app_name-ext.xml
rm -f $tomcat_home/webapps/ROOT/WEB-INF/tiles-defs-ext.xml



fontes: