エンタープライズ運用ガイド 2.5.0
目次
ディレクトリ構成
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の米国およびその他の国における登録商標または商標です。
 - その他記載されている会社名および商品名は各社の登録商標または商標です。