當一個人知道任何文件應發生破壞,甚至當人們看到一塊廢紙上躺著時,這是自動採取的動作,將其抬起最近的記憶孔的襟翼並將其放入,然後將其旋轉在溫暖的空氣中,將其旋轉到巨大的爐子上,這些爐子被隱藏在建築物凹槽中的巨大爐子上
- 從1984年的喬治·奧威爾(George Orwell)
內存孔是一個支持問題組織者。它旨在提供一種組織和搜索常見支持問題及其解決方案的方法。
您將需要以下來編譯並運行該應用程序:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
該應用將在http://localhost:8000啟動後提供。
請按照以下步驟為應用程序配置數據庫:
確保您在PostgreSQL上安裝了Citext擴展名。
運行psql命令:
psql -U <superuser|postgres user> -d postgres -h localhost
創建訪問數據庫的角色:
CREATE ROLE memoryhole;
設置角色的密碼:
password memoryhole;
可選,創建一個模式並授予memoryhole角色授權:
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
將CiteXT擴展添加到模式:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
確保允許記憶孔登錄:
ALTER ROLE "memoryhole" WITH LOGIN;
退出外殼
q
此設置應導致類似:database-url (例如,在本地計算機上)。
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "H2 DB可以使用各種託管方案,這些方案在其功能列表中可用。
此設置可以導致以下內容:database-url 。
:database-url " jdbc:h2:~/memory-hole-dev "當使用H2 DB進行開發或生產時,它需要正確設置Migratus :migration-dir指向H2特定遷移的居民模式。
:migration-dir " migrations/h2 " 在項目目錄中使用數據庫的配置設置創建一個profiles.clj文件。可選的遷移目錄和LDAP可以配置,例如:
{ :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 )}}}}}運行遷移
lein run migrate
這將創建表並添加默認管理用戶,默認登錄為: admin/admin 。
要啟動用於應用程序的Web服務器,請運行:
lein run
要編譯Clojurescript前端,請運行:
lein figwheel
lein uberjar
這將產生target/uberjar/memory-hole.jar存檔,可以按照以下方式運行:
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
conf.edn文件應包含配置,例如將在生產中使用的數據庫URL。可用以下選項。
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "根據選定的DB後端,需要設置遷移目錄,例如。
:migration-dir " migrations/postgresql "HTTP端口默認為3000 ,以設置自定義端口,將以下鍵添加到配置:
:port 80該應用默認使用基於服務器端內存的會話存儲。
可以使用以下幾種:memory-session鍵設置內存會話時間之前的會話數量:
:memory-session
{ :max-age 3600 }如果您想使用基於cookie的內存商店,請在配置中添加一個:cookie-session鍵。 :cookie-session鍵應指向包含兩個可選密鑰的地圖:
:key用於加密會話cookie的秘密鍵:cookie-attrs包含可選cookie屬性的地圖::http-only將cookie限制為http(如果為true)(默認):secure如果是真的,將cookie限制為HTTPS URL:max-age千分之一直到餅乾到期示例配置可能如下:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }}LDAP連接配置應放在:ldap密鑰下,如下:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}}使用LDAP時管理用戶組有兩個選項,您可以使用sAMAccountName分配管理用戶,也可以指定與密鑰memberOf相對應的組。
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ]為了使HTTPS支持在生產中添加以下配置:ssl密鑰:
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " }要禁用HTTP訪問,請將:port設置為nil :
:port nil另外,您可以在生產中使用NGINX領先該應用程序。有關配置NGINX的詳細信息,請參見此處。
一個完整的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 " }}該應用程序可以用Nginx代理到自定義路徑,如下所示:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
然後,您將需要在conf.edn文件中添加:app-context並具有上下文:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }該工具的最初實現是由Ryan Baldwin撰寫的。該應用基於原始架構和SQL查詢。
版權所有©2016 Dmitri Sotnikov