Quando se sabia que qualquer documento estava devido à destruição, ou mesmo quando se viu um pedaço de papel de lixo, era uma ação automática levantar a aba do buraco da memória mais próximo e soltá -lo, quando seriam girados em uma corrente de ar quente para os enormes fornos que estavam escondidos em algum lugar dos recessos do edifício
- De 1984 por George Orwell
Hole de memória é um organizador de problemas de suporte. Ele foi projetado para fornecer uma maneira de organizar e pesquisar problemas comuns de suporte e sua resolução.
Você precisará do seguinte para compilar e executar o aplicativo:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
O aplicativo estará disponível em http://localhost:8000 assim que iniciar.
Siga estas etapas para configurar o banco de dados para o aplicativo:
Verifique se você tem a extensão Citext instalada no PostgreSQL.
Execute o comando psql :
psql -U <superuser|postgres user> -d postgres -h localhost
Crie a função para acessar o banco de dados:
CREATE ROLE memoryhole;
Defina a senha para a função:
password memoryhole;
Opcionalmente, crie um esquema e conceda a autorização da função memoryhole :
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
Adicione a extensão Citext ao esquema:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
Verifique se a Memoryhole pode fazer o login:
ALTER ROLE "memoryhole" WITH LOGIN;
Saia da concha
q
Essa configuração deve levar a similar :database-url (por exemplo, na máquina local).
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "O H2 dB pode usar vários cenários de hospedagem, disponíveis em sua lista de recursos.
Essa configuração pode levar ao seguinte :database-url na máquina local.
:database-url " jdbc:h2:~/memory-hole-dev " Quando o H2 dB é usado para desenvolvimento ou produção, ele precisa definir adequadamente migratus :migration-dir apontando para migrações específicas de H2 para a população do esquema.
:migration-dir " migrations/h2 " Crie um arquivo profiles.clj no diretório do projeto com as definições de configuração do banco de dados. Opcionalmente o diretório de migrações e o LDAP pode ser configurado, por exemplo:
{ :profiles/dev
{ :env
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:migration-dir " migrations/postgresql "
; ;ldap is optional, will use internal table otherwise
; ;Admin users (able to manage groups) defined by their sAMAccountName
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]
; ;Or Admin Groups defined by their distinguished names
:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ]
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}}}}}Execute as migrações
lein run migrate
Isso criará as tabelas e adicionará um usuário de administrador padrão, o login padrão é: admin/admin .
Para iniciar um servidor da web para o aplicativo, execute:
lein run
Para compilar o front-end do clojurescript, execute:
lein figwheel
lein uberjar
Isso produzirá o arquivo target/uberjar/memory-hole.jar que pode ser executado da seguinte maneira:
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
O arquivo conf.edn deve conter a configuração, como o URL do banco de dados que será usado na produção. As seguintes opções estão disponíveis.
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "Dependendo do back -end selecionado do banco de dados, o diretório de migração precisa ser definido, por exemplo.
:migration-dir " migrations/postgresql " A porta HTTP é padrão para 3000 , para definir uma porta personalizada, adicione a seguinte tecla à configuração:
:port 80O aplicativo é o padrão de usar um armazenamento de sessão baseado em memória do servidor.
O número de sessões antes de uma sessão de memória que o tempo limite pode ser definido usando a chave :memory-session da seguinte forma:
:memory-session
{ :max-age 3600 } Se você deseja usar um armazenamento de memória baseado em cookies, adicione uma chave :cookie-session para a configuração. A chave :cookie-session deve apontar para um mapa que contenha duas teclas opcionais:
:key - uma chave secreta usada para criptografar o cookie da sessão:cookie-attrs - Um mapa contendo atributos opcionais de cookie::http-only - restrinja o cookie a http se true (padrão):secure - restrinja o cookie aos URLs HTTPS se verdadeiro:max-age - O número de segundos até que o cookie expireUm exemplo de configuração pode parecer o seguinte:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }} A configuração da conexão LDAP deve ser colocada sob a tecla :ldap da seguinte forma:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}} Existem duas opções para gerenciar grupos de usuários ao usar o LDAP, você pode atribuir usuários administrativos usando o sAMAccountName ou especificar grupos que correspondem à tecla memberOf .
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ] Para ativar o suporte HTTPS na produção, adicione a seguinte configuração sob a tecla :ssl :
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " } Para desativar o acesso HTTP, defina a :port como nil :
:port nilComo alternativa, você pode liderar o aplicativo com o NGINX na produção. Veja aqui para obter detalhes sobre como configurar o nginx.
Um exemplo completo conf.edn :
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :max-age 60 }}
:port nil
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " }}O aplicativo pode ser proxado com o nginx para um caminho personalizado da seguinte forma:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
Você precisará adicionar o :app-context no arquivo conf.edn com o contexto:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }A implementação original da ferramenta foi escrita por Ryan Baldwin. O aplicativo é baseado nas consultas de esquema e SQL originais.
Copyright © 2016 Dmitri Sotnikov