Когда кто -то знал, что какой -либо документ должен был уничтожить, или даже когда кто -то увидел лом, лежащий вокруг отработанной бумаги, это было автоматическое действие, чтобы поднять клапан ближайшего отверстия памяти и бросить его, после чего оно было бы разбито на тепло
- С 1984 года Джордж Оруэлл
Отверстие для памяти является организатором поддержки. Он предназначен для обеспечения способа организовать и искать общие проблемы поддержки и их разрешение.
Вам понадобится следующее, чтобы компилировать и запустить приложение:
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, запустите:
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 "В зависимости от выбранного бэкэнда БД, необходимо установить каталог миграции, например.
:migration-dir " migrations/postgresql " HTTP -порт по умолчанию на 3000 , чтобы установить пользовательский порт, добавьте следующую ключ к конфигурации:
:port 80Приложение по умолчанию использует хранилище сеанса на основе сервера на основе памяти.
Количество сеансов перед временем сеанса памяти может быть установлено с использованием ключа :memory-session следующим образом:
:memory-session
{ :max-age 3600 } Если вы хотите использовать хранилище памяти на основе файлов cookie, добавьте :cookie-session в конфигурацию. The :cookie-session Key должен указывать на карту, содержащую два дополнительных ключа:
:key - секретный ключ, используемый для шифрования сессии cookie:cookie-attrs - карта, содержащая дополнительные атрибуты cookie::http-only - ограничить файл cookie на http, если правда (по умолчанию):secure - ограничить cookie 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 " }Первоначальная реализация инструмента была написана Райаном Болдуином. Приложение основано на оригинальной схеме и запросах SQL.
Copyright © 2016 Dmitri Sotnikov