Конфигурация CMS Studio

В этой статье вы узнаете о расположении конфигурационного файла CMS Studio и его основных свойствах.

CMS Studio в основном настраивается с использованием одного конфигурационного файла, studio-config.yaml, и двух дополнительных файлов, которые могут быть использованы для переопределения параметров в основном конфигурационном файле.

Основной файл конфигурации, studio-config.yaml, расположен в CMS_HOME/bin/apache-tomcat/webapps/studio/WEB-INF/classes/cms/studio и содержит предопределенные настройки.

Важно не изменять файл studio-config.yaml напрямую; вместо этого используйте один из двух файлов, которые используются для переопределения параметров.

Файлы переопределения:

  1. Файл переопределения конфигурации CMS Studio (studio-config-override.yaml) расположен в CMS_HOME/bin/apache-tomcat/shared/classes/cms/studio/extension, и его можно отредактировать с помощью предпочтительного текстового редактора.

  2. Глобальный файл переопределения конфигурации CMS Studio (studio-config-override.yaml) находится в CMS_HOME/data/repos/global/configuration и доступен из CMS Studio через меню навигации в разделе Глобальная конфигурация.

Порядок загрузки конфигураций следующий:

  • Сначала загружается studio-config.yaml из файла WAR.
  • Затем загружается studio-config-override.yaml из общей папки (если существует).
  • В последнюю очередь загружается studio-config-override.yaml из папки глобальной конфигурации (если существует).

Если одно и то же свойство представлено в нескольких файлах, значение из последнего файла конфигурации будет иметь приоритет.

Следует отметить, что первый файл переопределения, находящийся в локальной файловой системе (CMS_HOME/bin/apache-tomcat/shared/classes/cms/studio/extension), подходит для системных администраторов, но не реплицируется по кластеру. В отличие от этого, второй файл переопределения из CMS_HOME/data/repos/global/configuration является элементом репозитория, обеспечивает репликацию по кластеру и позволяет управлять им из CMS Studio, не прибегая к доступу к файловой системе. Для получения подробной информации о доступе к глобальному файлу конфигурации из CMS Studio перейдите по этой ссылке.

Для применения изменений, внесенных в файлы конфигурации, необходимо перезапустить CMS Studio.

Переменные окружения можно использовать для переопределения свойств, определенных как ${env:ENVIRONMENT_VARIABLE} в файлах конфигурации.

Свойства конфигурации CMS Studio

В этом разделе будут описаны некоторые из наиболее часто используемых свойств в конфигурации CMS Studio. Полный список всех свойств смотрите в файле studio-config.yaml.

SMTP конфигурация (email)

Этот раздел предоставляет пользователю возможность настройки почтового клиента путем установки SMTP-сервера. Эта конфигурация позволяет CMS Studio отправлять электронные письма, например, когда контент-менеджеры запрашивают публикацию контента или когда запрос на публикацию был одобрен.

##################################################
##        SMTP Configuration (Email)            ##
##################################################
# Default value for from header when sending emails.
# studio.mail.from.default: admin@example.com
# SMTP server name to send emails.
# studio.mail.host: ${env:MAIL_HOST}
# SMTP port number to send emails.
# studio.mail.port: ${env:MAIL_PORT}
# SMTP username for authenticated access when sending emails.
# studio.mail.username:
# SMTP password for authenticated access when sending emails.
# studio.mail.password:
# Turn on/off (value true/false) SMTP authenaticated access protocol.
# studio.mail.smtp.auth: false
# Enable/disable (value true/false) SMTP TLS protocol when sending emails.
# studio.mail.smtp.starttls.enable: false
# Enable/disable (value true/false) SMTP EHLO protocol when sending emails.
# studio.mail.smtp.ehlo: true
# Enable/disable (value true/false) debug mode for email service. Enabling debug mode allows tracking/debugging communication between email service and SMTP server.
# studio.mail.debug: false

Copy-icon

CORS (Cross-Origin Resource Sharing)

Этот раздел предназначен для настройки CORS (Cross-Origin Resource Sharing).

################################################################
##                             CORS                           ##
################################################################
# This is configured as permissive by default for ease of deployment
# Remember to tighten this up for production

# Disable CORS headers completely
# studio.cors.disable: false
# Value for the Access-Control-Allow-Origin header
# studio.cors.origins: '*'
# Value for the Access-Control-Allow-Headers header
# studio.cors.headers: '*'
# Value for the Access-Control-Allow-Methods header
# studio.cors.methods: '*'
# Value for the Access-Control-Allow-Credentials header
# studio.cors.credentials: true
# Value for the Access-Control-Max-Age header
# studio.cors.maxage: -1

Copy-icon

Источники CORS принимают шаблоны в виде регулярных выражений. Значения разделяются с использованием запятых. Помните, что запятые внутри шаблонов должны быть экранированы с помощью \, например: studio.cors.origins: 'http://localhost:[8000\,3000],http://*.other.domain'.

Blob-хранилища

Настройте внутренне управляемые хранилища статических активов для обработки очень больших файлов, используя конфигурацию хранилищ больших двоичных объектов.

Политика проекта

Файл конфигурации политики проекта предоставляет администраторам возможность установления условий для включения контента в проект через загрузку. Это подразумевает установку ограничений на имена файлов, определение минимального и максимального размера файлов, указание разрешенных типов контента или типов файлов (MIME-типов) и многое другое.

Подробнее о конфигурации политики проекта можно узнать здесь.

Редактируемые MIME-типы

Ниже приведен список MIME-типов по умолчанию, доступных для редактирования в CMS Studio:

# Item MIME-types that are editable directly in CMS Studio
studio.content.item.editableTypes:
- text/plain
- text/html
- text/css
- text/x-freemarker
- application/javascript
- application/json
- application/xml
- application/xhtml+xml

Copy-icon

Список может быть изменен по мере необходимости путем переопределения свойства в одном из файлов переопределения.

Конфигурация проекта/сайта

CMS Studio позволяет настраивать многие аспекты проекта/сайта. Подробнее о настройке проекта/сайта читайте в статье "Конфигурация проекта".

Конфигурация UI

Пользовательский интерфейс CMS Studio полностью настраиваем и позволяет вам адаптировать внешний вид интерфейса под каждый проект с учетом ваших потребностей.

Подробнее можно узнать здесь.

Конфигурация предварительного Deployer

Этот раздел переопределений конфигурации CMS Studio позволяет вам настроить URL-адреса вашего Deployer.

############################################################
##                    Preview Deployer                    ##
############################################################

# Default preview deployer URL (can be overridden per site)
studio.preview.defaultPreviewDeployerUrl: ${env:DEPLOYER_URL}/api/1/target/deploy/{siteEnv}/{siteName}
# Default preview create target URL (can be overridden per site)
studio.preview.createTargetUrl: ${env:DEPLOYER_URL}/api/1/target/create_if_not_exists
# Default preview create target URL (can be overridden per site)
studio.preview.deleteTargetUrl: ${env:DEPLOYER_URL}/api/1/target/delete-if-exists/{siteEnv}/{siteName}
# URL to the preview repository (aka Sandbox) where authors save work-in-progress
studio.preview.repoUrl: ${env:CMS_DATA_DIR}/repos/sites/{siteName}/sandbox

Copy-icon

Конфигурация поиска в предварительном просмотре

Этот раздел позволяет вам задавать URL-адреса для поиска в предварительном просмотре.

############################################################
##                   Preview Search                       ##
############################################################

studio.preview.search.createUrl: ${env:SEARCH_URL}/api/2/admin/index/create
studio.preview.search.deleteUrl: ${env:SEARCH_URL}/api/2/admin/index/delete/{siteName}

Copy-icon

Поиск

В этом разделе вы можете установить URL-адрес для поиска.

################################################################
##                           Search                           ##
################################################################
# URLs to connect to Search
studio.search.urls: ${env:SEARCH_URL}
# The username for Search
studio.search.username: ${env:SEARCH_USERNAME}
# The password for Search
studio.search.password: ${env:SEARCH_PASSWORD}
# The connection timeout in milliseconds, if set to -1 the default will be used
studio.search.timeout.connect: -1
# The socket timeout in milliseconds, if set to -1 the default will be used
studio.search.timeout.socket: -1
# The number of threads to use, if set to -1 the default will be used
studio.search.threads: -1
# Indicates if keep alive should be enabled for sockets used by the search client, defaults to false
studio.search.keepAlive: false

Copy-icon

Настройки кэша

Здесь находятся настройки управления кэшем для шаблонов и активов.

# If CMS Studio should cache its FreeMarker templates
studio.cache.templates: true
# Indicates if the browser should cache responses for static-assets
studio.cache.assets.enabled: true
# The max age in seconds that the browser should cache responses for requests matching `studio.cache.assets.maxAge.includeUrls`
studio.cache.assets.maxAge: 3600
# The urls that should include max-age=<studio.cache.assets.maxAge> in Cache-Control header. Other urls will be set to default max-age=0, must-revalidate
studio.cache.assets.maxAge.includeUrls: /static-assets/**,/1/plugin/file/**

Copy-icon

Forwarded-заголовки

Forwarded-заголовки настраиваются для определения фактического имени хоста и протокола, когда CMS Engine находится за балансировщиком нагрузки или обратным прокси. По умолчанию forwarded-заголовки отключены.

# Indicates if Forwarded or X-Forwarded headers should be used when resolving the client-originated protocol and
# address. Enable when Engine is behind a reverse proxy or load balancer that sends these
cms.engine.forwarded.headers.enabled=false

Copy-icon

Policy Headers

Политика безопасности контента

Вы можете настроить, какие ресурсы могут быть загружены (например, JavaScript, CSS, изображения и т. д.) и с каких URL-адресов они могут быть загружены.

# Value for the Content-Security-Policy header
studio.security.headers.contentSecurityPolicy.value: default-src 'unsafe-inline'
# Set to true to enable the Content-Security-Policy-Report-Only header (this will report in the user agent console instead of actually blocking the requests)
studio.security.headers.contentSecurityPolicy.reportOnly: true

Copy-icon

Чтобы блокировать нежелательные запросы, установите для studio.security.headers.contentSecurityPolicy.reportOnly значение false. По умолчанию для этого свойства установлено значение true.

X-Permitted-Cross-Domain-Policies

Вы можете настраивать, какие дополнительные домены могут получать доступ к вашему домену. По умолчанию заголовок X-PERMITTED-CROSS-DOMAIN-POLICIES установлен в none, что означает, что внедрение не разрешено.

# Value for the X-PERMITTED-CROSS-DOMAIN-POLICIES header
studio.security.headers.permittedCrossDomainPolicies.value: none

Copy-icon

cmsSite Cookie Domain

Этот раздел позволяет настроить куки cmsSite так, чтобы они устанавливались на основном домене вместо поддомена, чтобы обеспечить видимость куки cmsSite в разных поддоменах.

# Use base domain instead of subdomain for the cmsSite cookie
studio.cookie.useBaseDomain: false

Copy-icon

Цели бессерверного delivery-процесса

Этот раздел позволяет вам настроить бессерверный delivery-процесс.

##########################################################
##                 Serverless Delivery                  ##
##########################################################
# Indicates if serverless delivery is enabled
# studio.serverless.delivery.enabled: false
# The URL for the serverless delivery deployer create URL
# studio.serverless.delivery.deployer.target.createUrl: ${studio.preview.createTargetUrl}
# The URL for the serverless delivery deployer delete URL
# studio.serverless.delivery.deployer.target.deleteUrl: ${studio.preview.deleteTargetUrl}
# The template name for serverless deployer targets
# studio.serverless.delivery.deployer.target.template: aws-cloudformed-s3
# Replace existing target configuration if one exists?
# studio.serverless.delivery.deployer.target.replace: false
# The URL the deployer will use to clone/pull the site's published repo. When the deployer is in a separate node
# (because of clustering), this URL should be an SSH/HTTP URL to the load balancer in front of the Studios
# studio.serverless.delivery.deployer.target.remoteRepoUrl: ${env:CMS_DATA_DIR}/repos/sites/{siteName}/published
# The deployer's local path where it will store the clone of the published site. This property is not needed if
# the deployer is not the preview deployer, so you can leave an empty string ('') instead
# studio.serverless.delivery.deployer.target.localRepoPath: ${env:CMS_DATA_DIR}/repos/aws/{siteName}
# Parameters for the target template. Please check the deployer template documentation for the possible parameters.
# The following parameters will be sent automatically, and you don't need to specify them: env, site_name, replace,
# disable_deploy_cron, local_repo_path, repo_url, use_cms_search
# studio.serverless.delivery.deployer.target.template.params:
#   # The delivery search endpoint (optional is authoring is using the same one, specified in the SEARCH_URL env variable)
#   search_url:
#   aws:
#     # AWS region (optional if specified through default AWS chain)
#     region: us-east-1
#     # AWS access key (optional if specified through default AWS chain)
#     default_access_key:
#     # AWS secret key (optional if specified through default AWS chain)
#     default_secret_key:
#     cloudformation:
#       # AWS access key (optional if aws.accessKey is specified)
#       access_key:
#       # AWS secret key (optional if aws.secretKey is specified)
#       secret_key:
#       # Namespace to use for CloudFormation resources (required when target template is aws-cloudformed-s3)
#       namespace: myorganization
#       # The domain name of the serverless delivery LB (required when target template is aws-cloudformed-s3)
#       deliveryLBDomainName:
#       # The SSL certificate ARN the CloudFront CDN should use (optional when target template is aws-cloudformed-s3)
#       cloudfrontCertificateArn:
#       # The alternate domains names (besides *.cloudfront.net) for the CloudFront CDN (optional when target template is aws-cloudformed-s3)
#       alternateCloudFrontDomainNames:

Copy-icon

Настройка уведомлений о рабочем процессе

CMS Studio предоставляет простой вариант рабочего процесса, который включает в себя этапы отправки контента на утверждение, рецензии, утверждения или отклонения публикации контента, а также мгновенной публикации или публикации по расписанию.

Подробнее о рабочем процессе CMS Studio можно узнать здесь.

Регулярные выражения для валидации данных

DC CMS использует ограничения с использованием регулярных выражений для валидации API-запросов, касающихся пользователей и групп, что снижает риск вредоносных данных. В рамках переопределений конфигурации CMS Studio у вас есть возможность настраивать шаблоны регулярных выражений для валидации как имен пользователей, так и имен групп в соответствии с вашими конкретными требованиями.

##########################################################
##                  Input Validations                   ##
##########################################################
# These properties override default validation regex patterns
# from cms common validations.
# Key should have the form `studio.validation.regex.KEY_NAME`
# Value should be a valid java regex.
#
# studio.validation.regex.HTTPParameterName: "^[a-zA-Z0-9_\\-]{1,32}$"
# studio.validation.regex.SITEID: "^[a-z0-9\-_]*$"
# studio.validation.regex.EMAIL: "^([\\w\\d._\\-#])+@([\\w\\d._\\-#]+[.][\\w\\d._\\-#]+)+$"
# studio.validation.regex.USERNAME: "^[a-zA-Z][\\w.\\-@+]+$"
# studio.validation.regex.GROUP_NAME: "^[a-zA-Z][\\w.\\-]*$"
# studio.validation.regex.ALPHANUMERIC: "^[a-zA-Z0-9]*$"
# studio.validation.regex.SEARCH_KEYWORDS: "^[\\w\\s\\-\\\"\\.\\*]*$"
# studio.validation.regex.CONTENT_PATH_WRITE: "^/?([\\w\\- ]+/?)*(((cms\\-level\\-descriptor\\.level)|([\\w\\- ]))+\\.[\\w]+)?$"
# studio.validation.regex.CONTENT_PATH_READ: "^/?([\\w\\p{IsLatin}@$%^&{}\\[\\]()+\\-=,.:~'`]+(\\s*[\\w\\p{IsLatin}/@$%^&{}\\[\\]()+\\-=,.:~'`])*(/?))*$"
# studio.validation.regex.CONTENT_FILE_NAME_WRITE: "^((cms\\-level\\-descriptor\\.level)|([a-z0-9_\\-])+)\\.xml$"
# studio.validation.regex.CONFIGURATION_PATH: "^([a-z0-9\\-_/]+([.]*[a-z0-9\\-_])+)*(\\.[\w]+)?/?$"

Copy-icon

Сообщение о коммите

Сообщения о коммите при изменении контента могут быть настроены путем их переопределения с использованием одного из файлов переопределения.

# Repository commit prologue message
studio.repo.commitMessagePrologue:
# Repository commit postscript message
studio.repo.commitMessagePostscript:
# Sandbox repository write commit message
studio.repo.sandbox.write.commitMessage: "User {username} wrote content {path}"
# Published repository commit message
studio.repo.published.commitMessage: "Publish event triggered by {username} on {datetime} via {source}.\n\nPublish note from user: \"{message}\"\n\nCommit ID: {commit_id}\n\nPackage ID: {package_id}"
# Commit message to mark commit not to process when syncing database
studio.repo.syncDB.commitMessage.noProcessing: "STUDIO: NO PROCESSING"
# Create new repository commit message
studio.repo.createRepository.commitMessage: "Create new repository."
# Create sandbox branch commit message
studio.repo.createSandboxBranch.commitMessage: "Create {sandbox} branch."
# Initial commit message
studio.repo.initialCommit.commitMessage: "Initial commit."
# Create as orphan commit message
studio.repo.createAsOrphan.commitMessage: "Created as orphan."
# Templates updated commit message
studio.repo.blueprintsUpdated.commitMessage: "Blueprints updated."
# Create folder commit message
studio.repo.createFolder.commitMessage: "Created folder site: {site} path: {path}"
# Delete content commit message
studio.repo.deleteContent.commitMessage: "Delete file {path}"
# Move content commit message
studio.repo.moveContent.commitMessage: "Moving {fromPath} to {toPath}"
# Copy content commit message
studio.repo.copyContent.commitMessage: "Copying {fromPath} to {toPath}"

Copy-icon

Журнал аудитов

DC CMS предоставляет возможность отключить задачу, отвечающую за заполнение журнала аудита внешними изменениями из Git. Когда эта задача отключена, таблица аудита не будет записывать внешние операции, синхронизированные из Git, хотя обновления и изменения, внесенные через CMS Studio, по-прежнему будут аудироваться. Отключение этой задачи может повысить производительность при выполнении крупных операций Git pull.

Чтобы отключить заполнение журнала аудита, в файле studio-config-override.yamlустановите для свойства studio.clockJob.task.auditLogProcessing.disableAudit значение true.

Черный список публикации

DC CMS предоставляет возможность установки черного списка публикации, предотвращая публикацию нежелательных элементов. Настройка включает использование списка регулярных выражений (regexes), разделенных запятыми, для указания элементов, которые следует исключить из публикации.

Для настройки черного списка публикации выполните следующие шаги:

  1. С использованием предпочтительного текстового редактора откройте файл CMS_HOME/bin/apache-tomcat/shared/classes/cms/studio/extension/studio-config-override.yaml.
  2. Вставьте следующие строки в файл studio-config-override.yaml, указывая регулярное выражение для элементов, которые вы хотите исключить из публикации. По умолчанию, DC CMS не публикует файлы с расширением .keep. Чтобы добавить своё регулярное выражение, добавьте запятую, за которой следует ваше регулярное выражение, после .*/\.keep:

# Publishing blacklist configuration, items matching regexes on this list will never be published
studio.configuration.publishing.blacklist.regex: >-
.*/\.keep

Copy-icon

Элементы, включенные в черный список публикации, не будут подвергаться публикации. Вместо этого они будут помечены как опубликованные и занесены в лог-файл Tomcat с информацией о причинах их исключения из процесса публикации.

[DEBUG] 2021-04-22T08:16:01,023 [studio.clockTaskExecutor-42] [deployment.PublishingManagerImpl] | File /static-assets/css/.keep of the site mysite will not be published because it matches the configured publishing blacklist regex patterns.

Copy-icon

Пример

Давайте рассмотрим практический пример.

Начнем с создания веб-сайта, используя шаблон “Web Blog”. Затем создадим папку с именем mytempimages по пути /static-assets/images.

Предположим, что вы хотите, чтобы файлы, расположенные в /static-assets/images/mytempimages, оставались неопубликованными во время массовой публикации или когда пользователь выполняет действие "Опубликовать" для нескольких элементов из дашборда. Чтобы реализовать это, добавьте в studio.configuration.publishing.blacklist.regex регулярное выражение для элементов, которые находятся по пути /static-assets/images/mytempimages .

# Publishing blacklist configuration, items matching regexes on this list will never be published
studio.configuration.publishing.blacklist.regex: >-
.*/\.keep,\/static-assets\/images\/mytempimages\/.*

Copy-icon

Сохраните изменения и перезапустите CMS Studio.

Затем загрузите изображение в папку /static-assets/images/mytempimages. Чтобы опубликовать загруженное изображение, щелкните правой кнопкой мыши по нему, затем выберите Опубликовать. Появится диалоговое окно, в котором нужно выбрать вариант мгновенной публикации.

После публикации снова откройте боковую панель и перейдите в /static-assets/images/mytempimages. Заметьте, что ваш файл теперь помечен как опубликованный.

Для дополнительной информации проверьте логи tomcat, где отмечено, что загруженный файл не будет опубликован из-за его включения в черный список публикации.

Конфигурация редактора типов контента

В файле конфигурации редактора типов контента вы можете указать, какие инструменты будут доступны в редакторе типов контента.

Подробнее можно узнать здесь.

Конфигурация преобразователя зависимостей

CMS Studio извлекает и отслеживает зависимости между элементами контента для помощи авторам в публикации, управлении рабочим процессом и основными операциями с контентом, такими как копирование и удаление.

Подробнее можно узнать здесь.

Конфигурация инструментов сайта

В CMS Studio вы можете настроить инструменты, отображаемые в разделе “Инструменты сайта”. Подробнее об этом можно узнать здесь.

Конфигурация обработки активов

Обработка активов позволяет вам определить преобразования для статических активов (в настоящее время только изображений), с использованием pipeline-обработки, которая выполняются при загрузке активов в CMS Studio.

Подробнее можно узнать здесь.

Конфигурация профилей AWS

У DC CMS много интеграций с AWS. Узнайте, как настроить профили AWS, здесь.

Конфигурация профилей Box

DC CMS может интегрировать с Box. Узнайте, как настроить профили Box, здесь.

Конфигурация профилей WebDAV

DC CMS может интегрировать с WebDAV. Узнайте, как настроить профили WebDAV, здесь.

Поддержка нескольких окружений в CMS Studio

Подробнее можно узнать здесь.

Доступ и разрешения

Подробную информацию можно узнать здесь.

Настройка навигационного меню

Подробнее можно узнать здесь.

Связанные статьи

Общая конфигурация DC CMS

Документация для системного администратора