Als man wusste, dass ein Dokument zur Zerstörung fällig war oder wenn man ein Stück Abfallpapier herumliegende, war es eine automatische Aktion, um die Klappe des nächsten Speicherlochs zu heben und es fallen zu lassen, auf
- ab 1984 von George Orwell
Memory Hole ist ein Support -Problemorganisator. Es ist so konzipiert, dass es eine Möglichkeit bietet, allgemeine Unterstützungsprobleme und deren Lösung zu organisieren und zu durchsuchen.
Sie benötigen Folgendes, um die Anwendung zu kompilieren und auszuführen:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
Die App wird unter http://localhost:8000 verfügbar sein, wenn sie beginnt.
Befolgen Sie diese Schritte, um die Datenbank für die Anwendung zu konfigurieren:
Stellen Sie sicher, dass die Citext -Erweiterung auf PostgreSQL installiert ist.
Führen Sie den Befehl psql aus:
psql -U <superuser|postgres user> -d postgres -h localhost
Erstellen Sie die Rolle für den Zugriff auf die Datenbank:
CREATE ROLE memoryhole;
Legen Sie das Passwort für die Rolle fest:
password memoryhole;
Erstellen Sie optional ein Schema und gewähren Sie die memoryhole -Rolle -Autorisierung:
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
Fügen Sie das Schema die Citext -Erweiterung hinzu:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
Stellen Sie sicher, dass Memoryhole sich anmelden darf:
ALTER ROLE "memoryhole" WITH LOGIN;
Verlassen Sie die Schale
q
Dieses Setup sollte zu ähnlichen führen :database-url (z. B. auf lokaler Maschine).
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "H2 DB kann verschiedene Hosting -Szenarien verwenden, die in seiner Funktionsliste verfügbar sind.
Dieses Setup kann zu Follow :database-url auf lokaler Maschine führen.
:database-url " jdbc:h2:~/memory-hole-dev " Wenn H2 DB für die Entwicklung oder Produktion verwendet wird, muss Migratus ordnungsgemäß festgelegt werden :migration-dir Zeigen Sie auf H2-spezifische Migrationen für die Bevölkerungsschema.
:migration-dir " migrations/h2 " Erstellen Sie eine Datei profiles.clj im Projektverzeichnis mit den Konfigurationseinstellungen für die Datenbank. Optional können Migrationsverzeichnis und LDAP konfiguriert werden, z. B.:
{ :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 )}}}}}Führen Sie die Migrationen aus
lein run migrate
Dadurch wird die Tabellen erstellt und einen Standard -Administrator -Benutzer hinzugefügt. Die Standardanmeldung lautet: admin/admin .
Um einen Webserver für die Anwendung zu starten, führen Sie aus:
lein run
Um ClojureScript Front-End zu kompilieren, rennen Sie:
lein figwheel
lein uberjar
Dies erzeugt das Archiv target/uberjar/memory-hole.jar das wie folgt ausgeführt werden kann:
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
Die conf.edn -Datei sollte die Konfiguration wie die Datenbank -URL enthalten, die in der Produktion verwendet wird. Die folgenden Optionen sind verfügbar.
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "Abhängig vom ausgewählten DB -Backend muss das Migrationsverzeichnis festgelegt werden, z.
:migration-dir " migrations/postgresql " Der HTTP -Port standardmäßig auf 3000 , um einen benutzerdefinierten Port festzulegen, fügen Sie der Konfiguration den folgenden Schlüssel hinzu:
:port 80Die App stellt standardmäßig einen serverseitigen Speicher-basierten Sitzungsspeicher aus.
Die Anzahl der Sitzungen vor einem Speichersitzungszeiten kann mit dem Taste :memory-session wie folgt festgelegt werden:
:memory-session
{ :max-age 3600 } Wenn Sie einen Cookie-basierten Speicherspeicher verwenden möchten, fügen Sie der Konfiguration a :cookie-session hinzu. Der Taste :cookie-session sollte auf eine Karte mit zwei optionalen Schlüssel zeigen:
:key - Ein geheimer Schlüssel, mit dem das Sitzungs -Cookie verschlüsselt wird:cookie-attrs - Eine Karte mit optionalen Cookie -Attributen::http-only - Beschränken Sie das Cookie auf http, wenn true (Standard):secure - beschränken Sie das Cookie auf HTTPS -URLs, falls wahr:max-age - die Anzahl der Sekunden, bis der Keks abläuftEine Beispielkonfiguration könnte wie folgt aussehen:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }} Die LDAP -Verbindungskonfiguration sollte unter der :ldap -Taste wie folgt platziert werden:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}} Bei der Verwendung von LDAP gibt es zwei Optionen zum Verwalten von Benutzergruppen. Sie können entweder Administratorbenutzer mit dem sAMAccountName zuweisen oder Gruppen angeben, die dem Element memberOf entsprechen.
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ] So aktivieren Sie die HTTPS -Unterstützung in der Produktion, um die folgende Konfiguration unter dem Taste :ssl :
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " } Um den HTTP -Zugriff zu deaktivieren, stellen Sie den :port auf nil fest:
:port nilAlternativ können Sie die App mit Nginx in der Produktion vornehmen. Weitere Informationen zum Konfigurieren von Nginx finden Sie hier.
Ein vollständiges Beispiel 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 " }}Die App kann wie folgt mit Nginx auf einen benutzerdefinierten Pfad vergrößert werden:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
Sie müssen dann den :app-context in der conf.edn Datei mit dem Kontext hinzufügen:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }Die ursprüngliche Implementierung des Tools wurde von Ryan Baldwin geschrieben. Die App basiert auf den Originalschema- und SQL -Abfragen.
Copyright © 2016 Dmitri Sotnikov