エンタープライズ運用ガイド 2.5.1

ディレクトリ構成

Backlogは以下の構成でインストールされます。

<インストール先のディレクトリ>
├── backlog-job-worker
│     └── hikaricp.properties #データベース接続の最大コネクション数
├── data #Backlogの各データの保存先
├── logs #Backlogの各ログの保存先
├── .env #各設定値
├── docker-compose.yml #Backlogの各コンテナ定義
└── Licenses.txt #Backlogが利用しているオープンソースソフトウェアの情報

Backlogの停止・起動

停止

Backlogを停止します

cd <インストール先のディレクトリ>
docker-compose down

起動

Backlogを起動します

cd <インストール先のディレクトリ>
docker-compose up -d

使用するサービス

サービス名 説明
backlog-api BacklogのAPI
backlog-davsvn Backlogのファイル機能・Subversion機能
backlog-job-worker 内部のデータ処理
backlog-solr Backlogの全文検索
backlog-web BacklogのWebサービス
cron 内部のデータ処理
database-migration データベースのバージョン管理
elasticsearch Backlogの全文検索
elasticsearch-init 全文検索の初期設定
fluentd Backlogのログ収集
git-backlog-worker 内部のデータ処理
git-http BacklogのGit HTTPサービス
git-rpc 内部のデータ処理
git-ssh BacklogのGit SSHサービス
git-webhook-worker 内部のデータ処理
kanban-backend Backlogのボード機能
kanban-notification 内部のデータ処理
memcached 各種キャッシュ保存場所
nginx リバースプロキシ
redis 各種キャッシュ保存場所

利用するポート番号

以下のポート番号を利用してサービスを公開しますので、iptables等を利用されている場合は、下記のポート番号への外部からのアクセスを許可してください。

利用ポート番号
HTTPS 443
Git SSH 8972

ファイルデータの保存ディレクトリ

Backlogのファイルデータは、以下のディレクトリに保存されます。

data
├── attachment
│       └── pull_request
├── davsvn
│       ├── share
│       └── svn
├── elasticsearch
├── git
├── image
└── solr
        ├── issue
        ├── pull_request
        ├── shared_file
        └── wiki
ディレクトリのパス 説明
data/attachment/pull_request Git機能のプルリクエストに添付されたファイルが保存される
data/davsvn/share ファイル機能で管理されるファイルが保存される
data/davsvn/svn Subversion機能のリポジトリが保存される
data/elasticsearch 検索のインデックス
data/git Git機能のリポジトリが保存される
data/image 画像ファイルが保存される
data/solr 検索のインデックス

ログの保存ディレクトリ

<インストール先のディレクトリ>/logsに各サービスのログが保存されます。

logs
├── ${tag[1]} #ログの一時保存領域
│       └── ${tag[1]}
├── backlog-api
├── backlog-davsvn
├── backlog-davsvn-mntlog
│       ├── dav-job-worker
│       ├── httpd-davsvn
│       ├── svn-hook
│       └── svnserve
├── backlog-job-worker
├── backlog-solr
├── backlog-web
├── database-migration
├── elasticsearch
├── elasticsearch-init
├── git-http
├── git-rpc
├── git-rpc-mntlog
├── git-ssh
├── kanban-backend
├── kanban-notification
├── memcached
├── nginx
└── redis

.envのパラメーター

パラメーター名 初期値 説明 設定ツールで入力
BACKLOG_DB_HOST 接続先データベースのホスト ✔︎
BACKLOG_DB_PORT 接続先データベースのポート ✔︎
BACKLOG_DB_NAME 接続先データベースのスキーマ名 ✔︎
BACKLOG_DB_USER 接続先データベースのユーザー名 ✔︎
BACKLOG_DB_PASSWORD 接続先データベースのパスワード ✔︎
BACKLOG_SMTP_HOST SMTPサーバーのホスト ✔︎
BACKLOG_TIMEZONE タイムゾーン ✔︎(初回のみ)
BACKLOG_MAIL_NOTIFICATIONS_ADDRESS_FORMAT Backlogから送信されるメールの送信元メールアドレス
指定しない場合は、課題の登録などを実行した人のメールアドレスになるため、なりすましやスパムと判定される場合があります。
BACKLOG_WEB_PLAY_SESSION_SECRET_KEY 設定ツールで自動生成された値 このパラメーターは変更しないでください
BACKLOG_API_PLAY_SESSION_SECRET_KEY 設定ツールで自動生成された値 このパラメーターは変更しないでください
FIXED_IP_ADDRESS_PREFIX 10.254.249 Docker Composeのネットワークに使用する固定IPのプレフィックス
LOG_REMAIN_DAYS 7 ログの保存期間
LDAPS_USING false LDAPS通信の有無
GIT_SSH_HOST_PRIVATE_KEY_ENC 設定ツールで自動生成された値 このパラメーターは変更しないでください
KANBAN_OAUTH2_CLIENT_ID 設定ツールで自動生成された値 このパラメーターは変更しないでください
BACKLOG_DATA_DIRECTORY ./data Backlogのデータディレクトリのパス
BACKLOG_LOG_DIRECTORY ./logs ログディレクトリ
BACKLOG_CERT_DIRECTORY SSL証明書と秘密鍵のディレクトリ ✔︎(初回のみ)
BACKLOG_WEB_JAVA_OPTS ‘-Xmx2048M -Xms512M -XX:MaxMetaspaceSize=512m’ backlog-webのJVM起動オプション
BACKLOG_API_JAVA_OPTS ‘-Xmx1024M -Xms512M -XX:MaxMetaspaceSize=512m’ backlog-apiのJVM起動オプション
BACKLOG_JOBWORKER_JAVA_OPTS ‘-Xmx1024M -Xms512M -XX:MaxMetaspaceSize=256m’ backlog-job-workerのJVM起動オプション
BACKLOG_KANBAN_JAVA_OPTS ‘-Xmx1024M -Xms512M -XX:MaxMetaspaceSize=256m’ kanban-backendのJVM起動オプション
BACKLOG_WEB_DB_MAXIMUM_POOL_SIZE 10 backlog-webのDB接続コネクション最大数
BACKLOG_API_DB_MAXIMUM_POOL_SIZE 10 backlog-apiのDB接続コネクション最大数
BACKLOG_DAVSVN_START_SERVERS 5 backlog-davsvnのHTTPサーバーの設定
詳しくはこちら
BACKLOG_DAVSVN_MIN_SPARE_SERVERS 5 backlog-davsvnのHTTPサーバーの設定
詳しくはこちら
BACKLOG_DAVSVN_MAX_SPARE_SERVERS 10 backlog-davsvnのHTTPサーバーの設定
詳しくはこちら
BACKLOG_DAVSVN_MAX_REQUEST_WORKERS 256 backlog-davsvnのHTTPサーバーの設定
詳しくはこちら
BACKLOG_DAVSVN_MAX_CONNECTIONS_PER_CHILD 0 backlog-davsvnのHTTPサーバーの設定
詳しくはこちら

データをバックアップする

Backlogで扱うデータは以下に保存されています。これらのファイルは定期的にバックアップすることを推奨します。

詳細設定ファイルを作成する

docker-compose.ymlと同じ階層にdocker-compose.override.ymlを作成します。
docker-compose.override.ymlには、変更したいサービスとその設定値を記載します。
作成後は、起動と同じコマンドで再起動してください。

services:
  backlog-web:
    environment:
    ...

  backlog-api:
    environment:
    ...

詳しくは以下のサイトをご覧ください。
https://docs.docker.jp/compose/extends.html#understanding-multiple-compose-files

Active Directoryと連携する

LDAPSポート番号を変更する

LDAPS接続する場合は、詳細設定ファイルにLDAPSポート番号を記載します。
編集後は、起動と同じコマンドで再起動してください。

backlog-api:
  environment:
    - LDAPS_PORT=8636 #デフォルト 636

backlog-web:
  environment:
    - LDAPS_PORT=8636 #デフォルト 636

Active Directory証明書サービスを使用する

LDAPS接続を利用し、かつActive Directory証明書サービスを利用した場合は、Active Directory証明書サービスで発行した証明書を任意のディレクトリに配置し、詳細設定ファイルに以下の内容を追記します。
編集後は、起動と同じコマンドで再起動してください。

backlog-api:
  volumes:
    - /path/to/cert/dir:/mnt/certs #`/path/to/cert/dir`を証明書を配置したディレクトリに書き換えてください
  command: -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true

backlog-web:
  volumes:
    - /path/to/cert/dir:/mnt/certs #`/path/to/cert/dir`を証明書を配置したディレクトリに書き換えてください
  command: -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true

Active Directoryを用いてユーザーを作成する

Active Directoryの情報を利用してBacklogユーザーを作成できます。
操作する際には、あらかじめActive Directory用のゾーン定義や、SRVリソースレコードを設定しておいてください。
Windows Server 2012 R2、Windows Server 2016、Windows Server 2019でのActive Directoryに対応しています。

詳しい操作方法はヘルプページを参照してください。

検索インデックスを再生成する

キーワード検索の結果が正しく表示されない場合、検索インデクシングを再生成するコマンドを実行してください。インデクシングデータが多い場合、再生成には時間がかかります。

課題検索(課題一覧)に問題があるとき

以下を実行してください。

docker-compose up elasticsearch-tool

グローバルバーの全体からキーワード検索に問題があるとき

まず、ログの保存ディレクトリのbacklog-solrのログに以下のメッセージが出力されているか確認してください。

java.lang.OutOfMemoryError: Java heap space

メッセージが出力されている場合

Solrのメモリが少ない可能性があります。詳細設定ファイルのdocker-compose.override.ymlを開き、Solrのメモリの値を修正してください。

backlog-solr:
  environment:
    - SOLR_JAVA_MEM=-Xms1024m -Xmx1024m #デフォルト -Xms512m -Xmx512m

編集後は、起動と同じコマンドで再起動してください。
再起動後、以下を実行してください。検索インデックスが再作成されます。

docker-compose up solr-tool

メッセージが出力されていない場合

以下を実行してください。検索インデックスが再作成されます。

docker-compose up solr-tool

検索インデックスの再生成の速度を変更する

詳細設定ファイルのインデクシングジョブの制限値を変更します。
編集後は、起動と同じコマンドで再起動してください。

backlog-job-worker:
  environment:
    - BACKLOG_WORKER_JOB_INDEXING_ISSUE_JOB_PERMITS=16 #デフォルト 6

リクエストのパケットサイズ上限を変更する

Wikiの文字数が多すぎて保存ができなくなった場合などは、詳細設定ファイルのパケットサイズの制限値を変更します。
編集後は、起動と同じコマンドで再起動してください。

backlog-api:
  environment:
    - MAX_MEMORY_BUFFER=25MB #デフォルト 20MB
    - MAX_DISK_BUFFER=60MB #デフォルト 55MB

backlog-web:
  environment:
    - MAX_MEMORY_BUFFER=25MB
    - MAX_DISK_BUFFER=60MB

Nginxの同時接続数の最大値を変更する

以下のコマンドでnginx.confをローカルにコピーします。
編集後は、起動と同じコマンドで再起動してください。

docker-compose cp nginx:/etc/nginx/nginx.conf .

nginx.confを編集し、docker-compose.override.ymlを編集します。

nginx:
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf

nginx.confの設定について詳しくは以下のサイトをご覧ください。
nginx documentation

MySQL 5.7の利用時の注意点

クエリキャッシュを無効にする

my.cnfでquery_cache_typeに0を指定してクエリキャッシュを無効にしてください。
BacklogがMySQL 8.0に対応したことにより、MySQLのクエリキャッシュを有効にするとBacklogが正しく動作しなくなるおそれがあります。
なお、MySQL 5.7でquery_cache_typeのデフォルト値は0のため、my.cnfで設定していない場合は追加する必要はありません。

[mysqld]
max_allowed_packet=128M
character-set-server=utf8mb4
sql_mode = "NO_ENGINE_SUBSTITUTION"
query_cache_type = 0

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4

課題の添付ファイルのファイルサイズの上限を上げる

課題に添付できるファイルサイズの上限は50MBです。課題にファイルを添付できない場合は、以下を確認してください。

リクエストのパケットサイズ上限を上げる

詳細設定ファイルでMAX_DISK_BUFFERを設定している場合は、その値を55MB以上に変更してください。
編集後は、起動と同じコマンドで再起動してください。

backlog-api:
  environment:
    - MAX_DISK_BUFFER=55MB #デフォルト 55MB

backlog-web:
  environment:
    - MAX_DISK_BUFFER=55MB

MySQLの設定を変更または追加する

my.cnfでmax_allowed_packetの値を128M以上に設定してください。
この設定は、MySQL 8.0とMySQL 5.7のどちらでも必要です。
編集後はMySQLを再起動してください。

[mysqld]
max_allowed_packet=128M

商標について

  • MySQLとJavaは、Oracle Corporation及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • Dockerは、米国及びその他の国におけるDocker, Inc. の商標または登録商標です。
  • Nginxは、米国及びその他の国におけるNginx Software Inc. 及びその子会社、関連会社の登録商標です。
  • Active DirectoryとWindows Serverは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
  • その他記載されている会社名および商品名は各社の登録商標または商標です。