Содержание
Конфигурация сервера¶
Конфигурация сервера ηCMS определяется в XML файле. Сервер при старте читает переменную ОС или системное JVM свойство с именем WEBOOT_CFG_LOCATION, которое указывает на файл конфигурации. Файл может быть ресурсом в файловой системе или ресурсом в classpath JVM сервера ηCMS. Система не запустится, если WEBOOT_CFG_LOCATION не был задан одним из указанных выше способов.
Дополнительно в файле конфигурации можно использовать заменители (placeholders) в виде {name}, где {name} может принимать следующие значения:
- {cwd} – текущая рабочая директория
- {home} – домашняя директория пользователя, из-под которого запущен сервер ηCMS
- {tmp} – временная папка
- {newtmp} – уникальная временная директория для запущенного приложения
- {webapp} – путь до корня развернутого веб приложения
- {env:NAME} – Где NAME - имя переменной окружения
- {sys:NAME} – Где NAME - имя системного свойства JVM
Пример файла конфигурации ηCMS с комментариями¶
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Ссылка на лог конфигурацию проекта
http://logback.qos.ch/manual/configuration.html
Относительно этого файла -->
<logging-ref>app-logging.xml</logging-ref>
<!-- Название приложения -->
<app-name>My app</app-name>
<!--
Режим работы приложения:
- production Приложение в нормальном режиме работы
- dev Приложение в режиме работы для разработчика
Включен debug режим работы.
- test Приложение в режиме выполнения тест кейсов
-->
<environment>dev</environment>
<!-- DNS имя веб сервера или IP адрес для по умолчанию внешних клиентов -->
<server-name>127.0.0.1</server-name>
<!-- Порт сервера для внешних клиентов -->
<server-port>8080</server-port>
<site>
<!-- Основной адрес веб сервера для для внешних клиентов -->
<root>http://127.0.0.1:8080</root>
<!-- Если true, то адрес веб сервера для внешних
клиентов (например в email сообщениях и ссылках)
будет создаваться на основе данных
HTTP запросов клиентов, если это возможно.
В противном случае будет использоваться параметр
xml конфигурации: site/root
-->
<preferRequestUrl>true</preferRequestUrl>
</site>
<!-- Префикс приложения относительно корня веб контейнера.
См. http://ncms.one/manual/ru/doc/deployments/index.html
-->
<app-prefix>/</app-prefix>
<!--
Список дополнительных ресурсов, используемых для локализации
сообщений сервера. Можно опустить этот блок в конфигурации, в том случае если вы
не используете дополнительные локализованные ресурсы.
См. http://ncms.one/manual/ru/doc/extending/index.html
-->
<messages>
<bundle>com.softmotions.ncms.Messages</bundle>
<bundle>myapp.Messages</bundle>
</messages>
<asm>
<!-- Директория в медиа-репозитории ηCMS,
являющаяся корневой для файлов/ресурсов
доступных как веб ресурсы по HTTP протоколу.
По умолчанию /site -->
<site-files-root>/site</site-files-root>
</asm>
<!-- Конфигурация статических веб ресурсов,
хранящихся в .jar файлах приложения -->
<jar-web-resources>
<!-- Административная зона сайта,
доступная по адресу: /adm -->
<resource>
<path-prefix>/adm</path-prefix>
<options>/myapp-qx/myapp,watch=true</options>
</resource>
</jar-web-resources>
<!-- Управление кешированием ресурсов ηCMS в на стороне клиента -->
<cache-headers-groups>
<cache-group>
<!-- Все css и js файлы кешируются на 2 часа-->
<patterns>*.css,*.js</patterns>
<expiration>7200</expiration>
</cache-group>
<cache-group>
<!-- Статические медиа ресурсы сайтов кешируются на 2 часа -->
<patterns>/rs/media/fileid/*,/images/*,/adm/resource/*</patterns>
<expiration>7200</expiration>
</cache-group>
<cache-group>
<!-- Отмена кеширования для всех ресурсов под /adm/script/* -->
<nocache>true</nocache>
<patterns>/adm/script/*</patterns>
</cache-group>
</cache-headers-groups>
<!-- Файл создания схемы базы данных http://www.liquibase.org/ -->
<liquibase>
<changelog>com/softmotions/ncms/db/changelog/db-changelog-master.xml</changelog>
<!-- Liquibase обновит структуру базы данных при старте -->
<update/>
</liquibase>
<!-- Параметры связи приложения с базой данных -->
<mybatis>
<bindDatasource>true</bindDatasource>
<!-- Mybatis конфигурация приложения -->
<config>com/softmotions/ncms/db/mybatis-config.xml</config>
<!-- Файл с логином и паролем для соединения с базой данных -->
<propsFile>{home}/.myapp.ds</propsFile>
<extra-properties>
JDBC.driver=com.ibm.db2.jcc.DB2Driver
</extra-properties>
<extra-mappers>
<mapper>
<!-- Дополнительно подключаемая конфигурация Mybatis
в случае если вы расширяете функционал ηCMS
См. http://ncms.one/manual/doc/extending/index.html -->
<!--<resource>extra_mybatis_mapper.xml</resource>-->
</mapper>
</extra-mappers>
</mybatis>
<media>
<!-- Директория, где хранятся медиа файлы сайтов ηCMS -->
<basedir>{home}/.myapp/media</basedir>
<!-- Максимальный размер файла в байтах загружаемого в ηCMS.
По умолчанию 30Мб -->
<max-upload-size>31457280</max-upload-size>
<!-- Максимальный размер данных, сохраняемых в оперативную
память сервера ηCMS при загрузке файла.
По умолчанию 10Мб-->
<max-upload-inmemory-size>1048576</max-upload-inmemory-size>
<!-- Размер иконок предпросмотра для изображений в репозитории ηCMS -->
<thumbnails-width>250</thumbnails-width>
<!-- Максимальный размер текстового файла редактируемого в редакторе -->
<max-edit-text-size>524288</max-edit-text-size>
<!-- Множество элементов <import> автоматического импорта
медиа файлов из файловой системы (где работает сервер ηCMS)
<import>
<!-- Исходная директория для импорта. -->
<directory>{webapp}</directory>
<!-- Целевая директория для импорта -->
<target>site</target>
<!-- Следить за изменениями исходных файлов,
для того, чтобы синхронно изменять их в
медиа репозитории ηCMS -->
<watch>true</watch>
<!-- В случае, если время изменения файла в целевой директории,
больше, чем время изменения исходного файла, то он не будет переписан.
По умолчанию: false
-->
<overwrite>false</overwrite>
<!-- Шаблоны включаемых файлов в исходной директории
аналогично https://ant.apache.org/manual/dirtasks.html
-->
<includes>
<include>**/*</include>
</includes>
<!-- Шаблоны исключаемых файлов в исходной директории -->
<excludes>
<exclude>META-INF/**</exclude>
<exclude>WEB-INF/**</exclude>
<exclude>scss/**</exclude>
</excludes>
</import>
</media>
<!-- Конфигурация парсера HTTL разметки.
extensions: Возможные расширения httl файлов.
По умолчанию: *,httl,html,httl.css -->
<httl extensions="*,httl,html,httl.css">
<!-- Свойства конфигурации HTTL
см. http://httl.github.io/en/config.html -->
import.methods+=myapp.AppHttlMethods
import.packages+=myapp
</httl>
<!-- Настройки системы аутентификации и авторизации ηCMS -->
<security>
<!-- Расположение базы данных пользователей ηCMS в XML файле.
placeTo: Опционально. Расположение, в которое будет скопирована база данных
пользователей, для последующего редактирования через интерфейс
управления пользователями ηCMS -->
<xml-user-database placeTo="{home}/.myapp/mayapp-users.xml">
<!-- Начальный путь в classpath для read-only базы данных пользователей ηCMS.
Если указан атрибут placeTo, то база данных будет скопирована
в место, указанное placeTo в том случае, если файл отсутствовал -->
conf/mayapp-users.xml
</xml-user-database>
<!-- Алгоритм для генерации хешей для паролей в XML базе данных пользователей ηCMS.
Возможные значения:
- sha256
- bcrypt
- пустая строка или отсутствие элемента: пароли не шифруются
-->
<password-hash-algorithm>sha256</password-hash-algorithm>
<!-- Путь до конфигурации https://shiro.apache.org/
который используется в ηCMS -->
<shiro-config-locations>/WEB-INF/shiro.ini</shiro-config-locations>
<!-- Имя базы данных пользователей в ηCMS -->
<dbJVMName>WSUserDatabase</dbJVMName>
</security>
<!-- Компоненты UI администратора -->
<ui>
<navigation-selectors>
<!-- Компонент управления страницами ηCMS
roles: роли пользователей,
имеющих доступ к данному компоненту -->
<widget qxClass="ncms.pgs.PagesNav" roles="user"/>
<!-- Ленты новостей и событий ηCMS -->
<widget qxClass="ncms.news.NewsNav" roles="user"/>
<!-- Интерфейс управление медиафайлами -->
<widget qxClass="ncms.mmgr.MediaNav" roles="user"/>
<!-- Интерфейс управления сборкими -->
<widget qxClass="ncms.asm.AsmNav" roles="admin.asm"/>
<!-- Интерфейс Marketing transfer tools (MTT) -->
<widget qxClass="ncms.mtt.MttNav" roles="mtt" extra="true"/>
<!-- Интерфейс управления tracking pixels в MTT
<widget qxClass="ncms.mtt.tp.MttTpNav" roles="mtt" extra="true"/>
<!-- Интерфейс управления пользователями и правами доступа -->
<widget qxClass="ncms.usr.UsersNav" roles="admin.users" extra="true"/>
</navigation-selectors>
</ui>
<mediawiki>
<!-- Максимальная ширина изображения при отображении mediawiki блока
в контексте страницы -->
<max-inline-image-width-px>900</max-inline-image-width-px>
<!-- Регистрация дополнительных тегов для mediawiki парсера -->
<tags>
<tag name="note" class="com.softmotions.ncms.mediawiki.NoteTag"/>
<tag name="gmap" class="com.softmotions.ncms.mediawiki.GMapTag"/>
<tag name="youtube" class="com.softmotions.ncms.mediawiki.YoutubeTag"/>
<tag name="tree" class="com.softmotions.ncms.mediawiki.TreeTag"/>
<tag name="slideshare" class="com.softmotions.ncms.mediawiki.SlideSharePresentationTag"/>
<tag name="extimg" class="com.softmotions.ncms.mediawiki.ExternalImageTag"/>
<tag name="vimeo" class="com.softmotions.ncms.mediawiki.VimeoTag"/>
<tag name="ind" class="com.softmotions.ncms.mediawiki.IndentTag"/>
</tags>
</mediawiki>
<!-- Дополнительные (опциональные) Guice модули
регистрируемые при старте ηCMS.
См. http://ncms.one/manual/doc/extending/index.html -->
<modules>
<module>myapp.AppModule</module>
</modules>
</configuration>
Дополнительные (Advanced) элементы конфигурации¶
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
<asm>
...
<!-- Загрузчики HTTL шаблонов ηCMS.
По умолчанию используется загрузчик файлов медиа репозитория ηCMS.
-->
<resource-loaders>
<loader>com.softmotions.ncms.asm.render.ldrs.AsmMediaServiceResourceLoader</loader>
</resource-loaders>
</asm>
<pages>
<!-- Максимальный размер LRU кеша
для хранения мета информации (com.softmotions.ncms.asm.CachedPage)
о страницах сайта,
к которым недавно осуществлялся доступ (resently used).
По умолчанию: 1024 -->
<lru-cache-size>1024</lru-cache-size>
<!-- Максимальный размер LRU кеша псевдонимов страниц (page alias).
Для быстрого нахождения страницы по псевдониму.
По умолчанию: 8192
-->
<lru-aliases-cache-size>8192</lru-aliases-cache-size>
</pages>
<media>
...
<!-- Список директорий в медиа репозитории ηCMS,
которые будут помечены, как системные -->
<system-directories>
<directory>/site</directory>
<directory>/pages</directory>
</system-directories>
</media>
<security>
...
<!-- Максимальный размер LRU кеша
для хранения прав доступа (ACL) пользователей
к страницам сайта.
По умолчанию: 1024
-->
<acl-lru-cache-size>1024</acl-lru-cache-size>
</security>
<mediawiki>
...
<!-- Регистрация дополнительных
interwiki ссылок в mediawiki модуль ηCMS.
API проекта Bliki https://bitbucket.org/axelclk/info.bliki.wiki/overview
-->
<interwiki-links>
<link key="page" value="/asm/$1"/>
</interwiki-links>
<mediawiki.image-base-url>/rs/mw/res/${image}</mediawiki.image-base-url>
<mediawiki.link-base-url>/rs/mw/link/${title}</mediawiki.link-base-url>
</mediawiki>
<!-- Репозиторий справочных страниц, которые
используются в различных элементах UI ηCMS.
В формате: ключ => ссылка на страницу справки
В текущей версии используются следующие ключи: wiki.gmap, wiki -->
<help>
<topics>
<!-- Справка по вставки фрейма местоположения в Google maps -->
<topic key="wiki.gmap">https://support.google.com/maps/answer/3544418</topic>
<!-- Ссылка на документацию по wiki разметке -->
<topic key="wiki">...</topic>
</topics>
</help>
<events>
<!-- Количество потоков, которые используются
для обработки асинхронных событий в ηCMS
По умолчанию: 1 поток.
Не меняйте данную настройку,
если в точности не знаете, что делаете
-->
<num-workers>1</num-workers>
</events>
<!-- Конфигурация task executor-ов для различных
асинхронных задач. -->
<executor> <!-- множество элементов -->
<!-- Имя экзекютора -->
<name>default</name>
<!-- Количество потоков -->
<threads-num>allcores</threads-num>
<!-- Максимальный размер очереди задач
java.util.concurrent.LinkedBlockingQueue
-->
<queue-size>1000</queue-size>
</executor>
<browser-filter/>
<solr/>
<scheduler/>
</configuration>