2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codebeamer 2.1 Docker インストレーションノート

Last updated at Posted at 2024-01-04

はじめに

ここで記載する手順は Codebeamer 2.1 まで有効です。Codebeamer 2.2 以降では、この手順では導入できませんので注意願います。

本稿では Docker イメージを使用して Codebeamer の環境を構築する手順を説明します。前提として、

  • Codebeamer 2.1 の Docker イメージを利用
  • OS は Ubuntu 22.04 LTS
  • DB は Postgresql 15 をホストに導入
  • Apache を前段に立て、SSL 処理は Apache 側で実施
  • Apache から Codebeamer(Tomcat)に proxy_http でリクエストをパス

という構築方法になります。

なお、筆者は PTC Japan に在籍していますが、本記事はあくまで個人として作成したものであり、PTC Japan は本記事に関して一切の責任を持たず、またお問合せにも対応しませんので予めご了承ください。

OS 環境のアップデート

最新パッチの適用

作業の最初に、Ubuntu を最新の状態にします。

sudo apt-get update
sudo apt-get upgrade

##タイムゾーンの設定

サーバーのシステムクロックを日本時間へ、ハードゥエアクロックを UTC へ変更します。

sudo timedatectl set-timezone Asia/Tokyo
sudo timedatectl set-local-rtc 0

変更が有効になったか確認します。

timedatectl
               Local time: Thu 2024-01-04 10:34:51 JST
           Universal time: Thu 2024-01-04 01:34:51 UTC
                 RTC time: Thu 2024-01-04 01:34:51
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

codebeamer ユーザーの作成

sudo useradd -m -g www-data codebeamer
passwd codebeamer

Apache 環境の構築

Apache の導入

apache2 を導入します。

sudo apt -y install apache2

SSL 化のための準備(サーバー証明書の取得と設定)

443/TCP を HTTPS で受けるために、最初にサーバー証明書を準備します。

sudo apt -y install certbot

certbot が導入できたら、サーバー証明書を取得します。この手順は、apache が起動して 80/TCP をリッスンしていることを確認した上で、/var/www/html に書き込み権限を持っているユーザー id で実施する必要があります。80/TCP が閉じていたり、/var/www/html への書き込み権限がない場合には、コマンドの実行が失敗するので注意が必要です。また、下記でmy.serverとなっている部分は、実際のサーバーの FQDN を指定します。

sudo certbot certonly --webroot -w /var/www/html -d my.server

証明書が下記に保存されますので、この場所を記録しておきます。この証明書は、後工程で Apache の設定で必要になります。

  • /etc/letsencrypt/live/my.server/cert.pem
  • /etc/letsencrypt/live/my.server/privkey.pem
  • /etc/letsencrypt/live/my.server/chain.pem

Let's Encrypt の証明書は3ヶ月しか有効期限がないため、定期的に再発行が必要です。root ユーザーの crontab に再発行用のコマンドを登録します。

sudo crontab

crontab には下記の設定をします。

0 0 1 * * /usr/bin/certbot renew > /dev/null 2>&1

Apache の設定

apache の設定を変更して、443/TCP を HTTPS で受け入れるようにします。

sudo vi /etc/apache2/sites-available/default-ssl.conf

変更点・追記点を下記に示します。SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile は前の手順で取得したサーバー証明書のパスをセットします。

default-ssl.conf
ServerName my.server
SSLCertificateFile /etc/letsencrypt/live/my.server/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.server/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/my.server/chain.pem

default-ssl.conf ファイル末尾近くにに次の二行を追加します。</VirtualHost> の直前が適切な場所です。

default-ssl.conf
ProxyRequests   Off
ProxyPass       / http://localhost:8080/ keepalive=on

default-ssl.conf の修正を確定して、閉じます。

SSL とリバースプロキシーを有効にします。リバースプロキシーは、443/TCP (HTTPS)を apache で受け、tomcat にリクエストを転送するために必要になります。

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http

上記手順で、proxy や proxy_http モジュールが有効化できない場合には、apt によってこれらのモジュールがインストールされたかどうかを確認してください。ubuntu の場合は apache2 と同時にインストールされているはずです。

最後に、apache を再起動します。

sudo systemctl restart apache2

PostgreSQL 環境の構築

Codebeamer 2.1 のサポートする Postgresql のバージョンは 15 ですが、Ubuntu 22.04 LTS の deb リポジトリには Postgresql-14 までしかありません。このため、手動で Postgresql-15 のリポジトリを追加して導入します。

鍵の追加

sudo install -m 0755 -d /etc/apt/keyrings
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/postgresql.gpg > /dev/null

リポジトリの追加

echo deb [arch=amd64,arm64,ppc64el signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list

PostgreSQL の導入

postgresql を導入します。

sudo apt update
sudo apt install postgresql-15 postgresql-contrib

"postgres" ユーザーのパスワードを変更します。こちらは OS のパスワードになります。

sudo passwd postgres

データベースの管理権限のパスワードを変更します。

sudo -u postgres psql
ALTER ROLE postgres WITH password '<パスワード>'

上記で <パスワード> の部分には実際のパスワードにする文字列を入力します。

PostgreSQL の環境設定

/etc/postgresql/15/main/postgresql.conf を編集モードで開きます。

まず、localhost 以外からの接続を受け入れるようにします。

postgresql.conf
listen_addresses = '*'

さらに、codebeamer のデータベースとして必要となる下記の項目を postgresql.conf ファイルの最後部に追記します。

postgresql.conf
effective_io_concurrency = 200
jit = on
max_locks_per_transaction = 5000
random_page_cost = 1.1
temp_buffers = 64MB
work_mem = 80000
default_statistics_target = 1000
checkpoint_timeout = 2700

つづいて、/etc/postgresql/15/main/pg_hba.conf ファイルを修正します。

sudo vi /etc/postgresql/15/main/pg_hba.conf

下記の項目を追加します。

pg_hba.conf
# for Codebeamer
host    codebeamer    cbroot        0.0.0.0/0        md5

postgresql を再起動します。

sudo systemctl restart postgresql

Codebeamer 用データベース作成

Postgresql 環境にログインします。

sudo -u postgres psql

Codebeamer 用データベースを作成します。下記の <パスワード> には、実際のパスワードをテキストで入力します。

CREATE DATABASE codebeamer LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' ENCODING 'UTF8' TEMPLATE = template0;
CREATE USER cbroot WITH PASSWORD '<パスワード>';
ALTER DATABASE codebeamer OWNER TO cbroot;

エクステンションを作成します。

\c codebeamer
CREATE EXTENSION pg_trgm;

postgresql の準備は以上で終了です。

Docker の準備

Official information

Docker のインストール

Docker GPG Key の登録

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

リポジトリの登録

echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

リポジトリのアップデート

sudo apt update

docker グループの作成とユーザー登録

sudo groupadd docker
sudo usermod -aG docker codebeamer

docker のインストール

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose docker-compose-plugin

docker インストール後は OS の再起動が必要です。

sudo shutdown -r now

Codebeamer のインストール

docker-compose ファイルの作成

Codebeamer のフォルダを作成します。ルート以外のユーザーで、適当な場所で下記コマンドを実行します。

mkdir -p Docker/codebeamer

上記で作成したフォルダ(Docker/codebeamer)へ移動し、docker-compose.yml を作成します。docker-compose.yml ファイルには下記を記述します。

docker-compose.yml
version: '2.1'

services:
  codebeamer-app:
    image: intland/codebeamer:2.1.0.0
    container_name: codebeamer
    ports:
      - 8080:8080
    extra_hosts:
      - host.docker.internal:host-gateway
    environment:
      - DEBUG=false
      - TZ=Asia/Tokyo
      - WAIT_HOSTS=host.docker.internal:5432
      - WAIT_HOSTS_TIMEOUT=120
      - "CB_database_JDBC_Username=cbroot"
      - "CB_database_JDBC_Password=<password>"
      - "CB_database_JDBC_Driver=org.postgresql.Driver"
      - "CB_database_JDBC_ConnectionURL=jdbc:postgresql://host.docker.internal:5432/codebeamer"
      - "HEAPSIZE_OVERRIDE=-Xss1m -Xms2000M -Xmx8000M"
    volumes:
      - codebeamer-logo:/home/appuser/codebeamer/repository/config/logo
      - codebeamer-repository-docs:/home/appuser/codebeamer/repository/docs
      - codebeamer-repository-search:/home/appuser/codebeamer/repository/search
      - codebeamer-logs:/home/appuser/codebeamer/logs
      - codebeamer-tmp:/home/appuser/codebeamer/tomcat/tmp
    restart: always


volumes:
  codebeamer-logo:
  codebeamer-repository-docs:
  codebeamer-repository-search:
  codebeamer-logs:
  codebeamer-tmp:

Codebeamer の起動

上記で作成した docker-compose.yml ファイルを使用して Codebeamer の Docker イメージをスタートします。下記コマンドは docker-compose.yml ファイルがあるディレクトリで実施してください。

docker compose up -d

Docker イメージが起動したかどうかは、下記コマンドで確認できます。

docker ps

次のように表示されたら、起動は完了しています。

CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS                            PORTS                                       NAMES
1bbb0c93cd5d   intland/codebeamer:2.1.0.0   "/home/appuser/entry…"   3 seconds ago   Up 2 seconds (health: starting)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   codebeamer
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?