Ketika orang tahu bahwa dokumen apa pun yang akan dihancurkan, atau bahkan ketika seseorang melihat secarik kertas limbah tergeletak, itu adalah tindakan otomatis untuk mengangkat tutup lubang memori terdekat dan menjatuhkannya, di mana itu akan diputar pada arus udara hangat ke tungku besar yang disembunyikan di suatu tempat di ceruk bangunan itu di gedung itu di ceruk bangunan itu di ceruk bangunan itu ke dalam ceruk bangunan itu di gedung sebuah ceruk dari bangunan itu di gedung itu di ceruk dari bangunan itu di gedung itu di ceruk dari bangunan itu di gedung itu di ceruk dari bangunan itu di gedung itu di ceruk dari bangunan itu di gedung itu di ceruk dari bangunan itu di gedung itu di cerai
- dari 1984 oleh George Orwell
Lubang memori adalah penyelenggara masalah dukungan. Ini dirancang untuk memberikan cara untuk mengatur dan mencari masalah dukungan umum dan resolusi mereka.
Anda akan membutuhkan yang berikut untuk mengkompilasi dan menjalankan aplikasi:
mkdir memory-hole
cd memory-hole
curl -O https://raw.githubusercontent.com/yogthos/memory-hole/master/docker-compose.yml
docker-compose up
Aplikasi ini akan tersedia di http://localhost:8000 setelah dimulai.
Ikuti langkah -langkah ini untuk mengonfigurasi database untuk aplikasi:
Pastikan Anda memiliki ekstensi CITEXT yang diinstal pada PostgreSQL.
Jalankan perintah psql :
psql -U <superuser|postgres user> -d postgres -h localhost
Buat peran peran untuk mengakses database:
CREATE ROLE memoryhole;
Atur kata sandi untuk peran:
password memoryhole;
Secara opsional, buat skema dan berikan otorisasi peran memoryhole :
CREATE SCHEMA memoryhole AUTHORIZATION memoryhole;
GRANT ALL ON SCHEMA memoryhole TO memoryhole;
GRANT ALL ON ALL TABLES IN SCHEMA memoryhole TO memoryhole;
Tambahkan ekstensi CITEXT ke skema:
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA memoryhole;
Pastikan lubang memor dibiarkan masuk:
ALTER ROLE "memoryhole" WITH LOGIN;
Keluar dari cangkang
q
Pengaturan ini harus mengarah ke serupa :database-url (mis. Pada mesin lokal).
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "H2 DB dapat menggunakan berbagai skenario hosting, yang tersedia dalam daftar fiturnya.
Pengaturan ini dapat mengarah ke berikut :database-url pada mesin lokal.
:database-url " jdbc:h2:~/memory-hole-dev " Ketika H2 DB digunakan untuk pengembangan atau produksi, ia perlu mengatur migratus dengan benar :migration-dir menunjuk ke migrasi spesifik H2 untuk populasi skema.
:migration-dir " migrations/h2 " Buat file profiles.clj di direktori proyek dengan pengaturan konfigurasi untuk database. Direktori migrasi opsional dan LDAP dapat dikonfigurasi, misalnya:
{ :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 )}}}}}Jalankan migrasi
lein run migrate
Ini akan membuat tabel dan menambahkan pengguna admin default, login default adalah: admin/admin .
Untuk memulai server web untuk aplikasi, jalankan:
lein run
Untuk mengkompilasi clojurescript front-end, jalankan:
lein figwheel
lein uberjar
Ini akan menghasilkan arsip target/uberjar/memory-hole.jar yang dapat dijalankan sebagai berikut:
java -Dconf=conf.edn -jar memory-hole.jar migrate
java -Dconf=conf.edn -jar memory-hole.jar
File conf.edn harus berisi konfigurasi seperti URL basis data yang akan digunakan dalam produksi. Opsi berikut tersedia.
:database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "Bergantung pada backend DB yang dipilih, direktori migrasi perlu ditetapkan, misalnya.
:migration-dir " migrations/postgresql " Default port http ke 3000 , untuk mengatur port khusus Tambahkan tombol berikut ke konfigurasi:
:port 80Aplikasi default untuk menggunakan toko sesi berbasis memori sisi server.
Jumlah sesi sebelum sesi memori waktu keluar dapat diatur menggunakan :memory-session sebagai berikut:
:memory-session
{ :max-age 3600 } Jika Anda ingin menggunakan penyimpanan memori berbasis cookie, maka tambahkan tombol :cookie-session ke konfigurasi. Kunci :cookie-session harus menunjuk ke peta yang berisi dua kunci opsional:
:key - kunci rahasia yang digunakan untuk mengenkripsi cookie sesi:cookie-attrs - peta yang berisi atribut cookie opsional::http-only - batasi cookie ke http jika benar (default):secure - batasi cookie ke url https jika benar:max-age - Jumlah detik sampai cookie berakhirContoh konfigurasi mungkin terlihat sebagai berikut:
:cookie-session
{ :key " a 16-byte secret "
:cookie-attrs
{ :secure true
:max-age 3600 }} Konfigurasi koneksi LDAP harus ditempatkan di bawah tombol :ldap sebagai berikut:
:ldap
{ :host
{ :address " my-ldap-server.ca "
:domain " domain.ca "
:port 389
:connect-timeout ( * 1000 5 )
:timeout ( * 1000 30 )}} Ada dua opsi untuk mengelola grup pengguna saat menggunakan LDAP, Anda dapat menetapkan pengguna admin menggunakan sAMAccountName , atau menentukan grup yang sesuai dengan kunci memberOf .
:ldap-admin-users [ " my-ldap-sAMAccountName " " another-ldap-sAMAccountName " ]:ldap-admin-groups [ " CN=some-ldap-group,OU=foo123,DC=domain,DC=ca " ] Untuk mengaktifkan dukungan HTTPS dalam produksi, tambahkan konfigurasi berikut di bawah :ssl :
:ssl
{ :port 3001
:keystore " keystore.jks "
:keystore-pass " changeit " } Untuk menonaktifkan akses HTTP, atur :port ke nil :
:port nilAtau, Anda dapat menghadap ke depan aplikasi dengan Nginx dalam produksi. Lihat di sini untuk detail tentang Mengkonfigurasi Nginx.
Contoh conf.edn lengkap:
{ :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 " }}Aplikasi ini dapat diproksi dengan Nginx ke jalur khusus sebagai berikut:
server {
listen ...;
...
location /memory-hole {
proxy_pass http://127.0.0.1:3000;
}
...
}
Anda kemudian perlu menambahkan :app-context dalam file conf.edn dengan konteks:
{ :database-url " jdbc:postgresql://localhost/postgres?user=memoryhole&password=memoryhole "
:port 3000
:app-context " /memory-hole " }Implementasi asli alat ini ditulis oleh Ryan Baldwin. Aplikasi ini didasarkan pada skema asli dan kueri SQL.
Hak Cipta © 2016 Dmitri Sotnikov