CMDBuild4.0.0 インストール手順 （RHEL8）

CMDBuildは、クラウド環境に最適な構成管理システムです。
仮想化環境での論理構成と物理構成の複雑化、変更の高頻度・高速化による構成情報の爆発に対して、強力な自動化機能、外部システム連携機能を備え、運用管理自動化基盤を実現します。

詳細は以下をご参照ください。

https://www.cmdbuild.org/en

https://www.ossl.co.jp

また、本記事は以下記事のアップデート版となります。

・CMDBuild2.5 インストール手順（CentOS７）

https://qiita.com/satoruf/items/558132e8cf6e4e0a55e6

・CMDBuild3.3 インストール手順（CentOS７）

https://qiita.com/Yoshitami/items/6ef617de18bc00b5a661

# １．CMDBuildの特長

#### オープンソース（GNU Affero General Public License）
・主要機能が無料で使用可能
・サポートライセンスを購入すれば、モバイルアプリおよびQA、障害対応、バグフィックス／ワークアラウンドの提供、新機能の早期提供をサポート

#### 自由なデータモデル
・構成アイテム（サーバ等）と属性情報（担当者連絡先、契約情報、ロケーション等）の関係を自由に定義可能
・ITIL V3に準拠したプロセスをサポート


# ２．稼働条件

* メモリ16GB以上推奨
* ディスク空き容量150GB以上（SSD推奨）
* 4コア以上推奨
* PostgreSQL 17.x（17.4推奨）
* PostGIS 3.5.x（オプション）
* Apache Tomcat 10（最新バージョン推奨）
* Java 17（OpenJDK推奨）
* Docker（オプション）

稼働条件の詳細は以下をご参照ください。

https://www.cmdbuild.org/en/download/latest-version

# ３．CMDBuildのインストール環境（RHEL8）

* Red Hat Enterprise Linux release 8.10 (Ootpa)
* CMDBuild 4.0.0
* PostgreSQL 17-17.4
* OpenJDK 17.0.2
* ApacheTomcat 10.1.40
* スタンドアロン構成
* SELinuxはDisabled、Firewalldは停止されていること
* 作業はすべてrootで実施
* CMDbuildインストール時に必要なパッケージをインストールするためインターネットへの接続が可能なこと

# ４．CMDBuildインストール手順

### Javaインストール

以下のサイトからOracleJDK17をダウンロードし、適当なディレクトリに配置しインストールします。

https://jdk.java.net/archive/

・ファイル名：openjdk-17.0.2_linux-x64_bin.tar.gz
・配置先：/root/work

```shell-session
# mkdir /root/work
# cd /root/work
# wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
# mkdir -p /usr/java
# tar zxvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/java/
# alternatives --install /usr/bin/java java /usr/java/jdk-17.0.2/bin/java 1
# alternatives --install /usr/bin/javac javac /usr/java/jdk-17.0.2/bin/javac 1
# ln -s /usr/java/jdk-17.0.2 /usr/java/latest
# ln -s /usr/java/latest /usr/java/default
```

javaインストール確認

```shell-session
# java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

# javac --version
javac 17.0.2
```

### PostgreSQLインストール

以下のコマンドでPostgreSQLをインストールし、DBの初期化を行います。

```shell-session
# yum module disable postgresql
# rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install postgresql17-server
# /usr/bin/postgresql-17-setup initdb
```

初期化後、以下の設定ファイルの修正を行います。
※PostgreSQLの修正は環境に合わせて修正を行ってください。
パス：/var/lib/pgsql/17/data
設定ファイル：postgresql.conf

```shell-session
# vim /var/lib/pgsql/17/data/postgresql.conf 
※以下の設定値を修正
#listen_addresses = 'localhost'
#port = 5432
↓
listen_addresses = '*'
port = 5432
```

パス：/var/lib/pgsql/17/data
設定ファイル：postgresql.conf

```shell-session
# vim /var/lib/pgsql/17/data/pg_hba.conf 
※以下のように修正します。
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
```

設定修正後、PostgreSQLのサービスの自動起動を有効化し、起動します。

```shell-session
# systemctl enable postgresql-17.service 
# systemctl start postgresql-17.service 
```

### Tomcatインストール

以下のサイトからApache Tomcatをダウンロードし、インストールします。

http://tomcat.apache.org/

・ファイル名：apache-tomcat-10.1.40.tar.gz
・Tomcatインストール先ディレクトリ：/opt/tomcat/cmdbuild

```shell-session
# cd /root/work
# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.40/bin/apache-tomcat-10.1.40.tar.gz
# tar zxvf apache-tomcat-10.1.40.tar.gz 
# mkdir -p /opt/tomcat
# mv apache-tomcat-10.1.40 /opt/tomcat/cmdbuild
# rm -rf /opt/tomcat/cmdbuild/webapps/docs/ /opt/tomcat/cmdbuild/webapps/examples/
```

setenv.shを作成します。
パス：/opt/tomcat/cmdbuild/bin
設定ファイル：setenv.sh

```shell-session
# vim /opt/tomcat/cmdbuild/bin/setenv.sh
※以下を設定します、以下の値は環境に合わせて修正を行ってください。
JAVA_HOME=/usr/java/default
export CATALINA_OPTS="-Dfile.encoding=UTF-8 -Xms8g -Xmx10g -server"
LANG="ja_JP.UTF-8"
```

起動スクリプトを作成します。
パス：/usr/lib/systemd/system
設定ファイル：cmdbuild.service 

```shell-session
# vim /usr/lib/systemd/system/cmdbuild.service 
※以下を設定します。
[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=oneshot
ExecStart=/opt/tomcat/cmdbuild/bin/startup.sh
ExecStop=/opt/tomcat/cmdbuild/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat

[Install]
WantedBy=multi-user.target
```

### CMDBuild4.0.0インストール
以下のサイトからCMDBuild4.0.0をダウンロードし、適当なディレクトリに配置します。

https://www.cmdbuild.org/en/download/latest-version

・ファイル名：cmdbuild-4.0.0.war
・配置先：/root/work
※warファイルは予めダウンロードし準備しておくこと

```shell-session
# cd /root/work
# mv cmdbuild-4.0.0.war /opt/tomcat/cmdbuild/webapps/cmdbuild.war
```

tomcatユーザを作成し、Tomcatインストールディレクトリのオーナ/グループを修正します。

```shell-session
# useradd -M tomcat
# chown -R tomcat. /opt/tomcat
```

warファイルの配置、Tomcatディレクトリの権限修正後、CMDbuildのサービスの自動起動を有効化し、起動します。

```shell-session
# systemctl enable cmdbuild.service 
# systemctl start cmdbuild.service 
```

ログを確認しサービスが起動されたことを確認します。
パス：/opt/tomcat/cmdbuild/logs
ログファイル：cmdbuild.log 

```shell-session
# cat /opt/tomcat/cmdbuild/logs/cmdbuild.log 
2025-04-18T10:40:14.354+09:00 [system] INFO  org.cmdbuild.log.LogbackHelper - logback configured
2025-04-18T10:40:14.356+09:00 [system] INFO  o.c.w.LogbackConfigurationContextListener - logger ready
```

サービス起動後、CMDBuildのWebUIにアクセスし初期設定を行います。
http://＜CMDBuildのIPアドレス＞:8080/cmdbuild

![SnapCrab_CMDBuild — Mozilla Firefox_2025-4-16_14-2-34_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/de0e4b1d-ce7f-4153-add0-95290fc866d0.png)

以下の情報を入力し、「Test database connection」を選択し、設定に問題がないことを確認します。
設定に問題がないことを確認し、「Configure」を選択し、初期設定を完了します。

```shell-session
・Type：Demo                # 「Empty」、「Demo」、「Existing」、「Upload backup」より選択
・Name：cmdbuild            # DB名を入力
・Host：localhost           # PostgreSQLのアドレスを入力
・Port：5432                # PostgreSQLのポートを入力
・Username：cmdbuild        # DBのユーザを入力
・Password：password        # DBのユーザパスワードを入力
・Admin username：postgres　# DBの管理ユーザを入力
・Admin password：postgres　# DBの管理ユーザパスワードを入力
```

※事前にDB、ロールの作成は必要なく、デモデータベース作成の際に必要なDB、ロールが作成されます。
※上記の情報を入力し、「Test database connection」を選択しDBに接続できることを確認します。ここでエラーが発生する場合は、DBの設定を確認してください。

パッチの適応を行います。

![SnapCrab_CMDBuild — Mozilla Firefox_2025-4-16_14-3-14_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/f5e647a5-d48c-48db-9e0d-0a2f3542e0e7.png)


初期設定完了後、CMDBuildのログイン画面に切り替わり、以下のアカウントでログインできることを確認します。

![SnapCrab_CMDBuild — Mozilla Firefox_2025-4-16_14-3-56_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/40de1207-8442-461c-a038-352ec9b14a6a.png)

http://＜IPアドレス＞:8080/cmdbuild
ユーザ：admin
パスワード：admin
ログイン時に言語を選択することができます。

初期設定完了後、CMDBuildのログイン画面に切り替わり、以下のアカウントでログインできることを確認します。

![SnapCrab_CMDBuild — Mozilla Firefox_2025-4-16_14-4-6_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/234f8545-73c3-45a3-91bc-ca8181f52cda.png)


# ５．cmdbuildスクリプト

CMDBuildのサービスが起動している状態で、用意されている「cmdbuild.sh」を使用することにより、設定の変更、設定の確認、現在のステータス等を確認することができます。

パス：/opt/tomcat/cmdbuild/webapps/cmdbuild
ファイル：cmdbuild.sh

簡単に使用方法を記載します。

### 設定の確認

cmdbuild.shを使用して現在の設定の確認を行います。

```shell-session
# cd /opt/tomcat/cmdbuild/webapps/cmdbuild
# ./cmdbuild.sh restws getconfigs
org.cmdbuild.database.ext                                               plpgsql
org.cmdbuild.database.db.admin.password                                 postgres
org.cmdbuild.database.db.password                                       password
org.cmdbuild.database.db.username                                       cmdbuild
org.cmdbuild.database.db.admin.username                                 postgres
org.cmdbuild.database.db.url                                            jdbc:postgresql://localhost:5432/cmdbuild
org.cmdbuild.workflow.enabled                                           true
org.cmdbuild.core.logger.config                                         paxg246o2vh0gggg5989sudlqmttq4ohgfevu8qat555k2anmuebd5j73s40p4ec329gqr4p7du8kh6nr8h6... (2312 chars)
org.cmdbuild.core.config.ready                                          true
org.cmdbuild.sql.ddl_log.enabled                                        true
org.cmdbuild.auth.preferredPasswordAlgorythm                            cm3easy
org.cmdbuild.plugin.info                                                pax0hb2lr290g0gg0gi5dxap
```


### ステータスの確認

cmdbuild.shを使用して現在のステータスの確認を行います。

```shell-session
# cd /opt/tomcat/cmdbuild/webapps/cmdbuild
# ./cmdbuild.sh restws status
system status: READY

BIM Service                     disabled
Card Cache Service              disabled
Clustering                      disabled
DMS Service                     disabled
DMS_ Alfresco                   disabled
DMS_ Postgres Service           disabled
DMS_ SharePoint Online          disabled
Email Queue                     disabled
FTP Service                     disabled
GIS Service                     disabled
GIS_ GeoServer client           disabled
Log Service                 *   ready
Multitenant                     disabled
Scheduler Service (core)    *   ready
Scheduler_ Jobs                 disabled
Waterway Engine             *   ready
Waterway_ Events            *   ready
Waterway_ Jobs                  disabled
Waterway_ Webhook           *   ready
Workflow Engine             *   ready

version:   4.0.0
build:     e086bff/master (2025-02-28T13:45:03Z)
runtime:   java 17.0.2 (OpenJDK 64-Bit Server VM Oracle Corporation 17.0.2+8-86)
uptime:    cmdbuild4 4h 15m 7.63s
memory:    315 MB used, 8,693 MB total, 10,737 MB max (java heap+metaspace memory)
process:   pid 944, 6,352 MB total (process memory)
db pool:   1 active, 19 idle, 50 max


events:
2025-04-18T15:01:01.599591+09:00 FL_WARNING     sysmon node=cmdbuild4/944/s13l CMO: WARNING: system memory almost exausted, 86% used (6.803/7.849 GB)
[root@cmdbuild4 cmdbuild]# 
```


### スクリプトを使用したDBのリストア

cmdbuild.shを使用してDBのリストアが行えます。

CMDBuildのDBをpg_dumpコマンドを使用してバックアップします。

```shell-session
# mkdir -p /backup/cmdbuild
# pg_dump --host localhost --port 5432 --username "postgres" \
  --format custom --verbose --file /backup/cmdbuild/cmdbuild.backup cmdbuild
```

cmdbuild.shを使用してDBのリストアを行います。
スクリプトを使用することにより、現在のDBを削除し、新しいDBを作成してリストアすることができます
※サービスの停止、起動等は不要です。

```shell-session
# cd /opt/tomcat/cmdbuild/webapps/cmdbuild
# ./cmdbuild.sh dbconfig recreate /backup/cmdbuild/cmdbuild.backup 
dropping database cmdbuild
done
create database cmdbuild /backup/cmdbuild/cmdbuild.backup
apply patches
adjust configs
done
```