Como implementar o DSpace em um WebApp Container no Azure


Prepared by
Ricardo Martins
Cloud Solution Architect

O que é o DSpace?

DSpace é um software opensource tipicamente usado para criar repositórios de acesso público para conteúdo digital acadêmico. Enquanto ele possui alguns recursos que se sobrepõem com recursos de sistemas de gerenciamento de conteúdo, ele atende a uma necessidade específica de sistema de arquivos digitais, focado no armazenamento de longo prazo, acesso e preservação de conteúdo digital.

Neste artigo, vamos fazer o setup baseado em uma imagem docker oficial do Ubuntu e usando o Tomcat para rodar o DSpace conforme as instruções do guia de instalação.

Utilização

O DSpace utiliza o PostgreSQL como banco de dados. Neste artigo, iremos utilizar o Azure Database para PostgreSQL como um banco de dados externo, ao invés de utilizar uma imagem Docker com o PostgreSQL.

PostgreSQL como Serviço

Primeiro, precisamos criar o Azure Database para PostgreSQL. Eu estou usando o Azure CLI para completar os passos descritos em https://docs.microsoft.com/en-us/azure/postgresql/quickstart-create-server-database-azure-cli

Criando o grupo de recursos

az group create --name myresourcegroup --location eastus

 

Adicionando a extensão atualizada do PostgreSQL

Adicione a extensão atualizada de gerenciamento do Azure Database para PostgreSQL usando o seguinte comando:

az extension add --name rdbms

 

Criando o “PostgreSQL as a Service” no Azure

az postgres server create --resource-group myresourcegroup --name mydemoserver --location eastus --admin-user myadmin --admin-password <server_admin_password> --performance-tier Basic --ssl-enforcement Disabled

 

Criando a regra de firewall no Network Security Group

az postgres server firewall-rule create --resource-group myresourcegroup --server mydemoserver --name AllowAllIps --start-ip-address 0.0.0.0 --end-ip-address 255.255.255.255

 

Criando o database e instalando a extensão pgcrypto:

O DSpace requer a extensão “pgcrypto” instalada no banco de dados. Então vamos criar o banco de dados e instalar esta extensão. Aqui, estou usando o psql para fazer isto:

psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=myadmin@mydemoserver --dbname=postgres
create database dspace; 
\c dspace
create extension pgcrypto;

 

Build da imagem

Clone do repositório

Faça o clone do meu repositório do DSpace no github:

git clone https://github.com/rmmartins/docker-dspace-azure.git

 

Faça alguns pequenos ajustes

Para construir a imagem Docker, você precisa ajustar o arquivo local.cfg na linha 91. Você precisa alterar o endereço do servidor, nome de usuário e senha pelos parâmetros do PostgreSQL que você criou nos passos anteriores.

cd docker-dspace-azure/
vim config/local.cfg

 

Após realizar as alterações, a linha 91 do arquivo config/local.cfg deverá estar similar a esta (porém com os seus dados ):

db.url = jdbc:postgresql://dspace2.postgres.database.azure.com:5432/dspace?user=dspaceadmin@dspace2&password=Pass0rd1?wx$&ssl=false

 

Criando o build da nossa imagem

sudo docker build -t rmartins/docker-dspace-azure .

 

Colocando a nossa imagem para rodar

sudo docker run -p 8080:8080 rmartins/docker-dspace-azure

 

Depois de alguns segundos, as interfaces do DSpace estarão acessíveis através dos endereços abaixo:

 

JSP User Interface: http://localhost:8080/jspui

XML User Interface: http://localhost:8080/xmlui

OAI-PMH Interface: http://localhost:8080/oai/request?verb=Identify

REST: http://localhost:8080/rest

 

Feito isso, já validamos o nosso setup rodando localmente apontando para o Azure Database para PostgreSQL. Agora no próximo passo vamos configurar no Azure Webapp Container.

Executando o DSpace no Azure Webapp Container

Esta é a melhor parte! Se você deseja rodar o Dspace sem ter que gerenciar uma máquina virtual e todos os esforços envolvidos em um ambiente IaaS me deixe apresentar à você o Azure Webapp Container. Ele irá permitir que você roda o DSpace usando containers Docker em um ambiente PaaS.

Preparando a imagem

Primeiro salve a imagem que já temos como uma nova imagem. Para isto, você precisa encontrar o container ID (usando o comando docker ps) e então fazer o commit usando um novo nome de imagem:

sudo docker commit c16378f943fe rmartins/docker-dspace-azure-webapp

 

Envie a nova imagem para o repositório

 

Uma vez que já temos uma nova imagem, com todos os ajustes necessários realizados, vamos enviá-la ao Docker Hub:

sudo docker login
sudo docker push rmartins/docker-dspace-azure-webapp

 

Observação: Caso você não possua uma conta no Docker Hub, basta acessar https://hub.docker.com/ e criar uma gratuitamente. Você também pode usar o Azure Container Registry para armazenar suas imagens.

Setup do Azure Webapp Container

Faça a criação do serviço do Azure Webapp Container e aponte para a imagem Docker no seu repositório do Docker Hub conforme abaixo:

um screenshot de uma tela de celular com texto

E certifique-se de ter as seguintes variáveis configuradas:

um screenshot de uma tela de celular com texto

Finalizando

Em alguns minutos, teremos o DSpace rodando no Azure Webapp Container com Azure Database para PostreSQL. Você pode validar o funcionamento acessando através de uma das interfaces disponíveis:

JSPUI 2

um screenshot de um post de mídias sociais

XMLUI

um screenshot de um telefone celular

OAI

um screenshot de um post de mídias sociais

REST API

um screenshot de um post de mídias sociais

Até a próxima!


Autor: Microsoft Tech