Quand on savait que tout document devait être destruction, ou même quand on a vu un morceau de papier déchet qui se trouvait, c'était une action automatique pour soulever le volet du trou de mémoire le plus proche et le déposer, après quoi il serait tourbillé sur un courant d'air chaud vers les énormes fours qui étaient cachés quelque part dans les recoins du bâtiment
- à partir de 1984 par George Orwell
Memory Hole est un organisateur de problèmes de support. Il est conçu pour fournir un moyen d'organiser et de rechercher des problèmes de soutien communs et leur résolution.
Vous aurez besoin de ce qui suit pour compiler et exécuter l'application:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
L'application sera disponible sur http://localhost:8000 une fois qu'elle commencera.
Suivez ces étapes pour configurer la base de données de l'application:
Assurez-vous que l'extension CITEXT est installée sur PostgreSQL.
Exécutez la commande psql :
psql -U <superuser|postgres user> -d postgres -h localhost
Créez le rôle pour accéder à la base de données:
CREATE ROLE memoryhole;
Définissez le mot de passe pour le rôle:
password memoryhole;
Facultativement, créez un schéma et accordez l'autorisation du rôle memoryhole :
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
Ajoutez l'extension CITEXT au schéma:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
Assurez-vous que MemoryHole est autorisé à se connecter:
ALTER ROLE "memoryhole" WITH LOGIN;
Quitter la coquille
q
Cette configuration doit conduire à une similitude :database-url (par exemple sur la machine locale).
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "H2 DB peut utiliser divers scénarios d'hébergement, qui sont disponibles sur sa liste de fonctionnalités.
Cette configuration peut conduire à suivre :database-url sur la machine locale.
:database-url " jdbc:h2:~/memory-hole-dev " Lorsque H2 DB est utilisé pour le développement ou la production, il doit avoir correctement défini les migratus :migration-dir pointant vers des migrations spécifiques à H2 pour le schéma de remplissage.
:migration-dir " migrations/h2 " Créez un fichier profiles.clj dans le répertoire du projet avec les paramètres de configuration de la base de données. Le répertoire des migrations éventuellement et LDAP peuvent être configurés, par exemple:
{ :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 )}}}}}Exécuter les migrations
lein run migrate
Cela créera les tables et ajoutera un utilisateur d'administration par défaut, la connexion par défaut est: admin/admin .
Pour démarrer un serveur Web pour l'application, exécutez:
lein run
Pour compiler le front-end Clojurescript, exécuter:
lein figwheel
lein uberjar
Cela produira des archives target/uberjar/memory-hole.jar .
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
Le fichier conf.edn doit contenir la configuration telle que l'URL de la base de données qui sera utilisée dans la production. Les options suivantes sont disponibles.
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "Selon le backend DB sélectionné, le répertoire des migrations doit être défini, par exemple.
:migration-dir " migrations/postgresql " Le port HTTP par défaut par 3000 , pour définir un port personnalisé, ajoutez la touche suivante à la configuration:
:port 80L'application par défaut à l'aide d'un magasin de session basé sur la mémoire côté serveur.
Le nombre de sessions avant une séance de mémoire ne peut pas être défini à l'aide de la touche :memory-session comme suit:
:memory-session
{ :max-age 3600 } Si vous souhaitez utiliser un magasin de mémoire basé sur des cookies, ajoutez une touche :cookie-session à la configuration. La touche :cookie-session doit pointer une carte contenant deux touches facultatives:
:key - une clé secrète utilisée pour crypter le cookie de session:cookie-attrs - Une carte contenant des attributs de cookies en option::http-only - restreignez le cookie à http si vrai (par défaut):secure - restreindre le cookie aux URL https si vrai:max-age - Le nombre de secondes jusqu'à ce que le cookie expireUn exemple de configuration peut ressembler à ce qui suit:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }} La configuration de la connexion LDAP doit être placée sous la touche :ldap comme suit:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}} Il existe deux options pour gérer les groupes d'utilisateurs lors de l'utilisation de LDAP, vous pouvez soit affecter les utilisateurs d'administration à l'aide du sAMAccountName , soit spécifier des groupes qui correspondent à la touche memberOf .
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ] Pour activer la prise en charge HTTPS en production, ajoutez la configuration suivante sous la touche :ssl :
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " } Pour désactiver l'accès HTTP, définissez le :port nil :
:port nilAlternativement, vous pouvez devant l'application avec Nginx en production. Voir ici pour plus de détails sur la configuration de Nginx.
Un exemple complet 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 " }}L'application peut être proxie avec Nginx sur un chemin personnalisé comme suit:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
Vous devrez alors ajouter le :app-context dans le fichier conf.edn avec le contexte:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }La mise en œuvre originale de l'outil a été écrite par Ryan Baldwin. L'application est basée sur le schéma d'origine et les requêtes SQL.
Copyright © 2016 Dmitri Sotnikov