Cuando uno sabía que cualquier documento debía destrucción, o incluso cuando se veía un trozo de papel residual, era una acción automática levantar la solapa del orificio de memoria más cercano y dejarlo caer, con lo cual se giraría sobre una corriente de aire cálido a los enormes hornos que estaban ocultos en algún lugar en los recursos del edificio.
- de 1984 por George Orwell
Memory Hole es un organizador de problemas de soporte. Está diseñado para proporcionar una forma de organizar y buscar problemas de apoyo comunes y su resolución.
Necesitará lo siguiente para compilar y ejecutar la aplicación:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
La aplicación estará disponible en http://localhost:8000 una vez que comience.
Siga estos pasos para configurar la base de datos para la aplicación:
Asegúrese de tener la extensión Citext instalada en PostgreSQL.
Ejecute el comando psql :
psql -U <superuser|postgres user> -d postgres -h localhost
Cree el rol de rol para acceder a la base de datos:
CREATE ROLE memoryhole;
Establezca la contraseña para el rol:
password memoryhole;
Opcionalmente, cree un esquema y otorgue la autorización de roles de memoryhole :
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
Agregue la extensión Citext al esquema:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
Asegúrese de que Memoryhole pueda iniciar sesión:
ALTER ROLE "memoryhole" WITH LOGIN;
Salir del caparazón
q
Esta configuración debería conducir a similar :database-url (por ejemplo, en la máquina local).
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "H2 DB puede usar varios escenarios de alojamiento, que están disponibles en su lista de funciones.
Esta configuración puede conducir a la siguiente manera :database-url en la máquina local.
:database-url " jdbc:h2:~/memory-hole-dev " Cuando H2 DB se usa para el desarrollo o la producción, debe establecer adecuadamente la migratus :migration-dir apuntando a migraciones específicas de H2 para el esquema de población.
:migration-dir " migrations/h2 " Cree un archivo profiles.clj en el directorio del proyecto con la configuración de configuración para la base de datos. Opcionalmente se pueden configurar el directorio de migraciones y LDAP, por ejemplo:
{ :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 )}}}}}Ejecutar las migraciones
lein run migrate
Esto creará las tablas y agregará un usuario de administrador predeterminado, el inicio de sesión predeterminado es: admin/admin .
Para iniciar un servidor web para la aplicación, ejecute:
lein run
Para compilar el front-end de Clojurescript, ejecute:
lein figwheel
lein uberjar
Esto producirá el archivo target/uberjar/memory-hole.jar que se puede ejecutar de la siguiente manera:
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
El archivo conf.edn debe contener la configuración, como la URL de la base de datos que se utilizará en la producción. Las siguientes opciones están disponibles.
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "Dependiendo del backend de DB seleccionado, el directorio de migración debe establecerse, por ejemplo.
:migration-dir " migrations/postgresql " El puerto HTTP predeterminado es 3000 , para establecer un puerto personalizado Agregue la siguiente clave a la configuración:
:port 80La aplicación predetermina el uso de un almacén de sesión basado en memoria del lado del servidor.
El número de sesiones antes de una sesión de memoria se puede establecer utilizando la tecla :memory-session de la siguiente manera:
:memory-session
{ :max-age 3600 } Si desea utilizar un almacén de memoria basado en cookies, agregue una tecla :cookie-session a la configuración. La tecla :cookie-session debe apuntar a un mapa que contenga dos clave opcional:
:key : una clave secreta utilizada para cifrar la cookie de la sesión:cookie-attrs : un mapa que contiene atributos opcionales de cookies::http-only - restringir la cookie a http si es verdadero (predeterminado):secure : restringir la cookie a las URL de HTTPS si es cierto:max-age : el número de segundos hasta que expire la cookieUna configuración de ejemplo puede verse de la siguiente manera:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }} La configuración de conexión LDAP debe colocarse debajo de la tecla :ldap de la siguiente manera:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}} Hay dos opciones para administrar grupos de usuarios al usar LDAP, puede asignar usuarios administrativos que usan el sAMAccountName o especificar grupos que corresponden a la 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 habilitar el soporte HTTPS en producción, agregue la siguiente configuración bajo la tecla :ssl :
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " } Para deshabilitar el acceso HTTP, establezca el :port nil :
:port nilAlternativamente, puede frente a la aplicación con Nginx en producción. Consulte aquí para obtener detalles sobre la configuración de Nginx.
Un ejemplo 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 " }}La aplicación se puede representar con Nginx a una ruta personalizada de la siguiente manera:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
Luego deberá agregar :app-context en el archivo conf.edn con el contexto:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }La implementación original de la herramienta fue escrita por Ryan Baldwin. La aplicación se basa en las consultas originales de esquema y SQL.
Copyright © 2016 Dmitri Sotnikov