Pular para conteúdo

Integração com o PostgreSQL

1. Acessar o PostgreSQL como usuário padrão

sudo -u postgres psql

2. Criar o banco de dados do Nexus

CREATE DATABASE nexus
  ENCODING 'UTF8'
  LC_COLLATE='C.UTF-8'
  LC_CTYPE='C.UTF-8'
  TEMPLATE template0;

3. Conectar ao banco criado

\c nexus

4. Criar o schema utilizado pelo Nexus

CREATE SCHEMA nexus;

5. Criar o usuário dedicado do Nexus

CREATE USER nexus WITH PASSWORD 'xmart@1234';

6. Conceder privilégios ao usuário

GRANT ALL PRIVILEGES ON DATABASE nexus TO nexus;
GRANT ALL PRIVILEGES ON SCHEMA nexus TO nexus;

7. Instalar extensão necessária

CREATE EXTENSION pg_trgm SCHEMA nexus;

Encerrar o PostgreSQL:

\q

Configuração no Nexus

8. Criar diretório de configuração (store properties)

sudo mkdir -p /opt/sonatype/sonatype-work/nexus3/etc/fabric
cd /opt/sonatype/sonatype-work/nexus3/etc/fabric
touch nexus-store.properties

9. Criar o arquivo nexus-store.properties

sudo tee /opt/sonatype/sonatype-work/nexus3/etc/fabric/nexus-store.properties > /dev/null <<EOF
username=nexus
password=xmart@1234
jdbcUrl=jdbc:postgresql://localhost:5432/nexus?currentSchema=nexus
EOF

10. Reiniciar o Nexus Repository

10.1. Entre no diretório de execução:

cd /opt/sonatype/nexus/bin

10.2. Execute o serviço:

./nexus start # (1)!
  1. Ou ./nexus stop caso precise reiniciar completamente

É recomendado reiniciar o Nexus com o serviço parado para garantir leitura correta das configurações.


Validações

11. Validar nos logs se o PostgreSQL está sendo utilizado

sudo -u nexus grep -i "postgres" /opt/sonatype/sonatype-work/nexus3/log/nexus.log
sudo -u nexus grep -i "jdbc" /opt/sonatype/sonatype-work/nexus3/log/nexus.log

12. Validar via interface gráfica

12.1. Acesse:

Administration → Data Store

12.2. A configuração deve exibir:

  • JDBC URL: jdbc:postgresql://localhost:5432/nexus?currentSchema=nexus

  • Username: nexus


Verificações adicionais após iniciar o Nexus

Rode o seguinte comando:

./nexus start

Confirme que as tabelas foram criadas no banco.


Verificar se o schema existe

sudo -u postgres psql -d nexus -c "SELECT schema_name FROM information_schema.schemata WHERE schema_name='nexus';"

Contar o número total de tabelas criadas (entre 170 e 200)

sudo -u postgres psql -d nexus -c "SELECT COUNT(*) AS total_tabelas FROM information_schema.tables WHERE table_schema='nexus';"

Listar as 20 primeiras tabelas

sudo -u postgres psql -d nexus -c "SELECT table_name FROM information_schema.tables WHERE table_schema='nexus' ORDER BY table_name LIMIT 20;"

Validar criação de tabelas essenciais (prova definitiva de migração correta)

sudo -u postgres psql -d nexus -c "SELECT table_name FROM information_schema.tables WHERE table_schema='nexus' AND table_name IN ('component', 'asset', 'blob_store_configuration', 'api_key', 'user_token');"