CMDBuild3.3.2 インストール手順 （CentOS7）

# CMDBuildとは

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

詳細は以下をご参照ください。
https://www.cmdbuild.org/en
https://www.ossl.co.jp

また、本記事は以下記事のアップデート版となります。
https://qiita.com/satoruf/items/558132e8cf6e4e0a55e6

# CMDBuildの特長

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

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


# 稼働条件
・CMDBuild 3.3.2
・メモリ16GB推奨
・ディスク空き容量120GB以上推奨
・PostgreSQL 9.6 to 10.x;
・ApacheTomcat 9.0
・JDK 1.11
・DMS（Alfresco Community recommended - optional）
稼働条件の詳細は以下に記載されております。
https://www.cmdbuild.org/en/download/latest-version

# CMDbuildインストール環境（CentOS7）
・CentOS 7.9
・CMDBuild 3.3.2
・PostgreSQL 9.6.23
・openjdk 11
・ApacheTomcat 9.0.53
・Alfresco Community 6

・SELinuxはDisabled、Firewalldは停止されていること
・作業はすべてrootで実施
・CMDbuildインストール時に必要なパッケージをインストールするためインターネットへの接続が可能なこと

# CMDBuildインストール手順
### Javaインストール
以下のサイトからOracleJDK11をダウンロードし、適当なディレクトリに配置しインストールします。
https://jdk.java.net/archive/
・ファイル名：openjdk-11_linux-x64_bin.tar.gz
・配置先：/root

```shell-session
# cd /root
# wget https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz
# mkdir -p /usr/java
# tar xvzf openjdk-11_linux-x64_bin.tar.gz -C /usr/java
# alternatives --install /usr/bin/java java /usr/java/jdk-11/bin/java 1
# alternatives --install /usr/bin/javac javac /usr/java/jdk-11/bin/javac 1
# ln -s /usr/java/jdk-11 /usr/java/latest
# ln -s /usr/java/latest /usr/java/default
```
javaインストール確認

```shell-session
# java --version
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

# javac --version
javac 11
```

### PostgreSQLインストール

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

```shell-session
# rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install postgresql96-server postgresql96-devel
# /usr/bin/postgresql-9.6-setup initdb
```

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

```shell-session
# vim /var/lib/pgsql/9.6/data/postgresql.conf 
※以下の設定値を修正
#listen_addresses = 'localhost'
#port = 5432
↓
listen_addresses = '*'
port = 5432
```
パス：/var/lib/pgsql/9.6/data
設定ファイル：postgresql.conf

```shell-session
# vim /var/lib/pgsql/9.6/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-9.6.service 
# systemctl start postgresql-9.6.service
```

### Tomcatインストール
以下のサイトからApache Tomcatをダウンロードし、インストールします。
http://tomcat.apache.org/
・ファイル名：apache-tomcat-9.0.53.tar.gz
・Tomcatインストール先ディレクトリ：/opt/tomcat/cmdbuild

```shell-session
# cd /root
# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz
# tar zxvf apache-tomcat-9.0.53.tar.gz 
# mkdir -p /opt/tomcat
# mv apache-tomcat-9.0.53 /opt/tomcat/cmdbuild
# rm -rf /opt/tomcat/cmdbuild/webapps/docs
# rm -rf /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
```

### CMDBuild3.3.2インストール
以下のサイトからCMDBuild3.3をダウンロードし、適当なディレクトリに配置します。
https://www.cmdbuild.org/en/download/latest-version
・ファイル名：cmdbuild-3.3.2.war
・配置先：/root

```shell-session
# cd /root
# mv cmdbuild-3.3.2war /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 
```

サービス起動後、CMDBuildのWebUIにアクセスできることを確認し、初期設定を行います。
http://＜CMDbuildのIPアドレス＞:8080/cmdbuild
![SnapCrab_Mozilla Firefox_2020-10-30_12-47-46_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/a93a7ab3-94e6-44f3-5e3b-896c95966942.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」を選択後にエラーが発生する場合は、以下を実施し、再度CMDBuildのWebUIにアクセスし、初期設定を行います。

```shell-session
# cp -p /opt/tomcat/cmdbuild/webapps/cmdbuild/WEB-INF/lib_ext/postgresql-42.2.5.jar /opt/tomcat/cmdbuild/lib/
# systemctl restart cmdbuild.service
```

初期設定完了後、CMDBuildのログイン画面に切り替わり、以下のアカウントでログインできることを確認します。
![SnapCrab_CMDBuild - Mozilla Firefox_2020-10-30_13-2-10_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/5f2e2e18-fb24-687b-534b-7b1a25f2ffbe.png)

http://＜IPアドレス＞:8080/cmdbuild
ユーザ：admin
パスワード：admin

ログイン後、以下のようなDemo画面が表示されることを確認します。
![SnapCrab_CMDBuild - Mozilla Firefox_2020-10-30_13-11-7_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/bb228108-b764-76b7-dc1b-7fd03100a539.png)

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

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

・設定変更例　
　　DMSサービスの有効化）

```shell-session
# cd /opt/tomcat/cmdbuild/webapps/cmdbuild
# ./cmdbuild.sh restws setconfig org.cmdbuild.dms.enabled true
cmdbuild r setconfig org.cmdbuild.dms.enabled 'true'
# ./cmdbuild.sh restws reload
OK
```

・設定の確認

```shell-session
# cd /opt/tomcat/cmdbuild/webapps/cmdbuild
# ./cmdbuild.sh restws configs
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.core.logger.config                                         paxg2c6uehd0gggg4c69sudlpmttq4ohgfefeoaqd75o9l4eslk566q0e2s3g0pa7v02g77sppdm8r1jnmmb6t759avjkelbv...
org.cmdbuild.core.config.ready                                          true
org.cmdbuild.sql.ddl_log.enabled                                        true
org.cmdbuild.auth.preferredPasswordAlgorythm                            cm3easy
org.cmdbuild.workflow.enabled                                           true
org.cmdbuild.dms.enabled                                                true ※設定変更したDMSサービスが有効化される
```

・現在のステータス確認

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

BIM Service                     disabled
BIM_ Bimserver client           disabled
Clustering                      disabled
DMS Service                 *   ready
DMS_ CMIS client            *   ready
DMS_ SharePoint Online          disabled
Email Queue                     disabled
GIS Service                     disabled
GIS_ GeoServer client           disabled
Log Service                 *   ready
Multitenant                     disabled
Scheduler Service (core)    *   ready
Scheduler_ Jobs                 disabled
Workflow Engine             *   ready

version: 3.3.2
build:   6bd7d2d/6bd7d2d69bfda629db7499d47127fff0e06aa427 (2021-05-03T14:38:23Z) (dirty)
runtime: java 11 (OpenJDK 64-Bit Server VM Oracle Corporation 11+28)
uptime:  qiita-cmdbuild332 18m 49.504s
memory:  150 MB used, 2,147 MB total, 4,294 MB max (java heap memory)
process: pid 1159, 2,075 MB total (process memory)
db pool: 1 active, 19 idle, 50 max
```

# Alfresco Communityインストール手順（オプション）
CMDbuildから添付ファイル機能を使用するためにAlfresco Communityをインストールします。

### Alfresco用Javaのインストール
Alfresco Community v6はJava11に対応していないため、Java8を使用します。
以下のサイトからJDK8をダウンロードし、適当なディレクトリに配置します。
https://www.oracle.com/jp/java/technologies/javase/javase8-archive-downloads.html
・ファイル名：jdk-8u202-linux-x64.tar.gz
・配置先：/root

```shell-session
# cd /root
# tar xvzf jdk-8u202-linux-x64.tar.gz -C /usr/java
# alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_202/bin/java 2
# alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_202/bin/javac 2
```

javaインストール確認

```shell-session
# alternatives --config java
2 プログラムがあり 'java' を提供します。
  選択       コマンド
-----------------------------------------------
 + 1           /usr/java/jdk-11/bin/java
*  2           /usr/java/jdk1.8.0_202/bin/java
```

```shell-session
# alternatives --config javac
2 プログラムがあり 'javac' を提供します。
  選択       コマンド
-----------------------------------------------
 + 1           /usr/java/jdk-11/bin/javac
*  2           /usr/java/jdk1.8.0_202/bin/javac
```

### Alfresco Communityのインストール

AlfrescoのDBを作成します。

```shell-session
# psql -U postgres
postgres=# create database alfresco;
CREATE DATABASE
postgres=# \q
```

以下のサイトからAlfresco Communityをダウンロードし、適当なディレクトリに配置します。
https://www.alfresco.com/jp/
・ファイル名：alfresco-community-installer-201604-linux-x64.bin
・配置先：/root

Alfresco Communityのインストールを行います。

```shell-session
# cd /root
# chmod +x alfresco-content-services-community-full-installer-6.0.2.1-ea-linux-x64.bin 
# ./alfresco-content-services-community-full-installer-6.0.2.1-ea-linux-x64.bin \
--unattendedmodeui none --mode unattended \
--enable-components libreofficecomponent,alfrescosolr4,aosmodule,alfrescogoogledocs \
--disable-components javaalfresco,postgres,alfrescosolr,alfrescowcmqs \
--prefix /opt/alfresco \
--installer-language ja \
--alfresco_admin_password admin \
--jdbc_username postgres --jdbc_password postgres \
--tomcat_server_port 10080 --tomcat_server_shutdown_port 10005 --tomcat_server_ssl_port 10443 \
--tomcat_server_ajp_port 10009 --alfresco_ftp_port 1121 \
--baseunixservice_install_as_service 1 \
--alfrescocustomstack_services_startup demand \
--jdbc_url jdbc:postgresql://localhost/alfresco
```

### Alfresco Communityの設定
Alfresco Communityが使用するjavaのパスを修正します。

```shell-session
# vim /opt/alfresco/tomcat/bin/setenv.sh 
※以下を修正
JAVA_HOME=/usr
↓
JAVA_HOME=/usr/java/jdk1.8.0_202
```

以下のファイルを作成し、CMDbuildとの連携ができるようにします。
パス：/opt/alfresco/tomcat/shared/classes/alfresco
ファイル：cmdbuild-model-context.xml、cmdbuildModel.xml

```shell-session
# vim /opt/alfresco/tomcat/shared/classes/alfresco/extension/cmdbuild-model-context.xml
※以下を設定します。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!-- Registration of new models -->
    <bean id="example.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/cmdbuildModel.xml</value>
            </list>
        </property>
    </bean>

</beans>
```

```shell-session
# vim /opt/alfresco/tomcat/shared/classes/alfresco/extension/cmdbuildModel.xml
※以下を設定します。
<?xml version="1.0" encoding="UTF-8"?>

<!-- The important part here is the name - Note: the use of the my: namespace which is defined further on in the document -->
<model name="cmdbuild:module" xmlns="http://www.alfresco.org/model/dictionary/1.0">

        <description>Custom Model for CMDBuild</description>
        <author>CMDBuild Team</author>
        <version>1.0</version>

        <imports>
                <!-- Import Alfresco Dictionary Definitions -->
                <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
                <!-- Import Alfresco Content Domain Model Definitions -->
                <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
        </imports>

        <!-- Introduction of new namespaces defined by this model -->
        <namespaces>
                <namespace uri="org.cmdbuild.dms.alfresco" prefix="cmdbuild" />
        </namespaces>

        <aspects>
                <aspect name="cmdbuild:classifiable">
                        <title>Classification</title>
                        <properties>
                                <property name="cmdbuild:classification">
                                        <type>d:text</type>
                                </property>
                        </properties>
                </aspect>
        </aspects>

</model>
```

上記のファイル設定後、サービスを起動します。

```shell-session
# systemctl start alfresco.service 
```

### Alfresco リポジトリの作成
再起動後、ブラウザからAlfrescoのWebUIにアクセスし、以下のアカウントでログインし、CMDBuildで使用するリポジトリを作成します。

![SnapCrab_Alfresco » ログイン — Mozilla Firefox_2021-6-8_19-3-16_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/c047eb71-2991-0354-8096-62ea15418ea7.png)

http://＜IPアドレス＞:10080/share
ユーザ：admin
パスワード：admin

ログイン後、メニューバーより、リポジトリを選択し、を移動し、
作成 ＞ フォルダ を選択し、「User Homes」を作成し、作成した「User Homes」に移動後、「cmdbuild」を作成します。
![SnapCrab_Alfresco » リポジトリブラウザ — Mozilla Firefox_2021-6-8_19-7-56_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/0172f716-1610-13ce-8d43-5b0a4803f4f5.png)


### CMDBuild DMS設定

CMDBuildのWebUIにログインし、アドミニストレーションモジュールへ移行します。
http://＜CMDbuildのIPアドレス＞:8080/cmdbuild

ナビゲーションツリーよりDMS ＞ Settingsの順に移動し、Alfrescoとの連携設定を行います。
![SnapCrab_CMDBuild — Mozilla Firefox_2021-6-8_19-25-49_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/1e9b6576-1a31-993c-d934-04bbedc718f5.png)


以下の情報を入力し、設定を保存します。
・Active：チェックを入れる
・DMS Category：AlfrescoCategory
・Server Type：CMIS
・Host：http://localhost:10080/alfresco/api/-default-/public/cmis/versions/1.1/atom
・Webserver Path：/User Homes/cmdbuild
・Username：admin
・Password：admin


![SnapCrab_Alfresco » リポジトリブラウザ — Mozilla Firefox_2021-6-8_19-49-44_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/ae9fe090-f989-153d-4893-60279f027e93.png)

### Alfrescoとの連携確認

CMDBuildのWebUIにログインし、Alfrescoへのファイルを添付が行えることの確認を行います。

適当なカードを開き、クリップマークを選択し、「Add attachment」を選択します。
適当なファイルを「Brows...」から開くか、ファイルをドロップし、保存します。

![SnapCrab_CMDBuild — Mozilla Firefox_2021-6-8_19-33-32_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/a212eeb2-aaf7-e80d-6140-07e559427e27.png)


ファイルの添付に成功すると以下のように表示され、ファイルのダウンロードができます。
![SnapCrab_CMDBuild — Mozilla Firefox_2021-6-8_19-48-29_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/efcdfe9e-2077-bb68-dd3c-de1c8e27442f.png)

AlfrescoのWebUIからも添付したファイルが表示、ダウンロードすることが可能です。
![SnapCrab_Alfresco » リポジトリブラウザ — Mozilla Firefox_2021-6-8_19-49-44_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/16a8211f-1f31-a605-2b47-7c05c0a5c11e.png)

また、CMDbuildのWebUI上から添付ファイルの削除を行うと、Alfresco上からもファイルが削除されます。
![SnapCrab_CMDBuild — Mozilla Firefox_2021-10-8_15-11-12_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/3f48d0f3-02cf-40b5-1c5e-b8acee4c6257.png)

以下の画面のようにAlfresco上のWebUIでも添付したファイルが表示さず削除されていることを確認できます。
![SnapCrab_Alfresco » リポジトリブラウザ — Mozilla Firefox_2021-10-8_15-16-31_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66557/772c7639-a739-eea1-1e47-891ff7af7316.png)