เมื่อมีใครรู้ว่าเอกสารใด ๆ ที่เกิดจากการทำลายล้างหรือแม้กระทั่งเมื่อมีคนเห็นเศษกระดาษขยะที่วางอยู่มันเป็นการกระทำอัตโนมัติที่จะยกพนังของรูหน่วยความจำที่ใกล้ที่สุดและวางลงในนั้นมันจะหมุนวนไปบนกระแสอันอบอุ่นไปยังเตาหลอมขนาดใหญ่ที่ซ่อนอยู่ที่ไหนสักแห่ง
- จากปี 1984 โดย George Orwell
Memory Hole เป็นผู้จัดงานปัญหาสนับสนุน มันถูกออกแบบมาเพื่อให้วิธีการจัดระเบียบและค้นหาปัญหาการสนับสนุนทั่วไปและความละเอียดของพวกเขา
คุณจะต้องมีสิ่งต่อไปนี้เพื่อรวบรวมและเรียกใช้แอปพลิเคชัน:
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 เมื่อเริ่มต้น
ทำตามขั้นตอนเหล่านี้เพื่อกำหนดค่าฐานข้อมูลสำหรับแอปพลิเคชัน:
ตรวจสอบให้แน่ใจว่าคุณติดตั้งส่วนขยาย Citext บน PostgreSQL
เรียกใช้คำสั่ง 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
ในการเริ่มต้นเว็บเซิร์ฟเวอร์สำหรับแอปพลิเคชันให้เรียกใช้:
lein run
เพื่อรวบรวม clojurescript front-end วิ่ง:
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-session ลงในการกำหนดค่า คีย์ :cookie-session นควรชี้ไปที่แผนที่ที่มีสองคีย์เสริม:
:key - คีย์ลับที่ใช้ในการเข้ารหัสคุกกี้เซสชัน:cookie-attrs - แผนที่ที่มีคุณลักษณะคุกกี้เสริม::http-only - จำกัด คุกกี้เป็น http ถ้าเป็นจริง (ค่าเริ่มต้น):secure - จำกัด คุกกี้เป็น URL HTTPS หากเป็นจริง: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;
}
...
}
จากนั้นคุณจะต้องเพิ่ม :app-context ในไฟล์ conf.edn ด้วยบริบท:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }การใช้งานดั้งเดิมของเครื่องมือถูกเขียนโดย Ryan Baldwin แอพนี้ขึ้นอยู่กับสคีมาดั้งเดิมและแบบสอบถาม SQL
ลิขสิทธิ์© 2016 Dmitri Sotnikov