データベースとミドルウェアのデプロイ
環境のセットアップ後、Ubuntu 22.04 x86_64 のデプロイ先で実行します。本ページはサービスのインストールのみを扱い、qOntology の業務データは次ページでインポートします。設定内の <..._PASSWORD> と <SERVER_IP> をすべて置き換えてください。
この 1 台構成では Nginx の 8897 を入口とし、ミドルウェアは 127.0.0.1 で待ち受けます。以下のユーザー、インストール先、データディレクトリは新規環境を想定しています。同名サービスや既存データがある場合はインスタンスを確認し、再初期化しないでください。
1. MySQL 5.7.44
1.1. パッケージと依存関係の準備
MySQL 公式アーカイブで 5.7.44、Linux Generic、x86_64 の glibc 2.12 バイナリーを選び、~/qontology-packages にアップロードします。例のファイル名は mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz です。異なるパッケージでは実際の名前と実行ライブラリ要件に合わせて調整してください。Ubuntu 標準の apt install mysql-server で代用しないでください。
# パッケージ情報を更新し、MySQL バイナリーに必要な実行ライブラリをインストール
sudo apt update
sudo apt install -y libaio1 libnuma1 libncurses5 libtinfo5
# サービスユーザーとインストール先を作成し、パッケージを展開
sudo useradd --system --user-group --home-dir /var/lib/mysql57 --shell /usr/sbin/nologin mysql57
sudo install -d /opt/mysql57
cd "$HOME/qontology-packages"
sudo tar -xzf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql57 --strip-components=1
# データベースユーザーが書き込めるデータ・ログディレクトリを作成
sudo install -d -o mysql57 -g mysql57 -m 750 /var/lib/mysql57 /var/log/mysql57
# MySQL のバージョンと共有ライブラリの不足を確認
/opt/mysql57/bin/mysqld --version
ldd /opt/mysql57/bin/mysqldバージョンは 5.7.44、ldd に not found がないことを確認します。不足する互換ライブラリを追加し、ABI が異なるライブラリを強制的にシンボリックリンクで接続しないでください。参考:MySQL 汎用バイナリーのインストール。
1.2. 設定と初回初期化
sudoedit /etc/mysql57.cnf を実行して記述します。
[mysqld]
user=mysql57
basedir=/opt/mysql57
datadir=/var/lib/mysql57
port=3306
bind-address=127.0.0.1
socket=/var/lib/mysql57/mysql.sock
pid-file=/var/lib/mysql57/mysql.pid
log-error=/var/log/mysql57/error.log
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
explicit_defaults_for_timestamp=1
[client]
socket=/var/lib/mysql57/mysql.sock
default-character-set=utf8mb4データディレクトリが空の場合に限り、一度だけ実行します。
sudo /opt/mysql57/bin/mysqld --defaults-file=/etc/mysql57.cnf --initialize --user=mysql57
sudo grep 'temporary password' /var/log/mysql57/error.logこのホストで生成された root の仮パスワードを控え、次の初回ログイン時に変更します。ログやパスワードを公開の問題報告に貼り付けないでください。
1.3. systemd の設定
sudoedit /etc/systemd/system/mysql57.service を実行します。
[Unit]
Description=MySQL 5.7 for qOntology
After=network.target
[Service]
Type=simple
User=mysql57
Group=mysql57
ExecStart=/opt/mysql57/bin/mysqld --defaults-file=/etc/mysql57.cnf
Restart=on-failure
TimeoutStopSec=300
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target# サービス定義を読み込み、MySQL を起動して自動起動を有効化
sudo systemctl daemon-reload
sudo systemctl enable --now mysql57
# サービス状態を確認し、仮パスワードでログインして変更を準備
sudo systemctl status mysql57 --no-pager
MYSQL_HISTFILE=/dev/null /opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p --connect-expired-password仮パスワードで MySQL にログイン後、以下の新パスワードを置き換えて実行します。パスワードに単一引用符がある場合は、SQL 文字列の規則に従ってエスケープしてください。
ALTER USER 'root'@'localhost' IDENTIFIED BY '<MYSQL_ADMIN_PASSWORD>';
SELECT VERSION();
EXIT;アプリケーション用アカウントはデータの初期化で作成します。API は root で接続しません。
2. Redis 6.x
2.1. インストールと設定
# Redis をインストールしてバージョンを確認
sudo apt install -y redis-server
redis-server --version
# 待ち受けアドレス、認証、永続化の設定を編集
sudoedit /etc/redis/redis.conf6.x がインストールされたことを確認します。同じ設定を追記せず、既存の値を変更してください。
bind 127.0.0.1 ::1
protected-mode yes
port 6379
requirepass <REDIS_PASSWORD>
dir /var/lib/redis
appendonly yes空白や特殊文字を含むパスワードは、Redis の設定文字列規則に従って二重引用符とエスケープを使用します。パッケージ付属の systemd、ログ、プロセス管理設定は維持してください。データディレクトリは Redis ユーザーが所有します。AOF は永続化用であり、バックアップ領域は別途計画が必要です。
2.2. 起動と検証
# 自動起動を有効にし、設定反映のため Redis を再起動
sudo systemctl enable redis-server
sudo systemctl restart redis-server
# サービス状態を確認し、パスワード認証で接続を検証
sudo systemctl status redis-server --no-pager
redis-cli -h 127.0.0.1 -p 6379 --askpass PING要求に従ってパスワードを入力し、PONG が返ることを確認します。qOntology は Redis の 論理データベース 3 を使用するため、後続設定も揃えます。失敗時は journalctl -u redis-server と /var/log/redis/redis-server.log を確認してください。
3. Neo4j Community 4.4.40
3.1. ダウンロードとディレクトリ準備
Neo4j のリリース一覧で Community 4.4.40 の Linux tar を選択するか、公式配布 URL を使用します。
# ダウンロードディレクトリに移動し、指定バージョンの Neo4j を取得
cd "$HOME/qontology-packages"
curl -fLO https://dist.neo4j.org/neo4j-community-4.4.40-unix.tar.gz
# サービスユーザーとインストール先を作成して展開
sudo useradd --system --user-group --home-dir /var/lib/neo4j --shell /usr/sbin/nologin neo4j
sudo install -d /opt/neo4j
sudo tar -xzf neo4j-community-4.4.40-unix.tar.gz -C /opt/neo4j --strip-components=1
# サービスユーザーが書き込めるデータ・ログ・実行時ディレクトリを準備
sudo install -d -o neo4j -g neo4j -m 750 /var/lib/neo4j /var/log/neo4j /opt/neo4j/run
sudo chown -R neo4j:neo4j /opt/neo4j/run3.2. Java、データディレクトリ、接続の設定
sudoedit /opt/neo4j/conf/neo4j.conf を実行し、対応する既存項目を変更します。
dbms.directories.data=/var/lib/neo4j
dbms.directories.logs=/var/log/neo4j
dbms.directories.run=/opt/neo4j/run
dbms.default_listen_address=127.0.0.1
dbms.default_advertised_address=127.0.0.1
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
dbms.connector.https.enabled=false
dbms.memory.heap.initial_size=512m
dbms.memory.heap.max_size=2G
dbms.memory.pagecache.size=1Gメモリ値は初期設定例です。ホストの空きメモリとグラフ規模に応じて調整し、各サービスにホスト全体のメモリを割り当てないでください。初回起動前に Bash でパスワードを設定します。
# 入力を表示せずに初期パスワードを読み取り
read -rsp 'Neo4j 初期パスワード: ' NEO4J_INITIAL_PASSWORD
printf '\n'
# Java 17 で新規データベースのパスワードを設定し、一時変数を削除
sudo -u neo4j env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
/opt/neo4j/bin/neo4j-admin set-initial-password "$NEO4J_INITIAL_PASSWORD"
unset NEO4J_INITIAL_PASSWORD新規データベース用の操作です。既存データベースのパスワード再設定には使用しません。
3.3. サービス管理と検証
sudoedit /etc/systemd/system/neo4j.service を実行します。
[Unit]
Description=Neo4j for qOntology
After=network.target
[Service]
Type=simple
User=neo4j
Group=neo4j
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
WorkingDirectory=/opt/neo4j
ExecStart=/opt/neo4j/bin/neo4j console
Restart=on-failure
LimitNOFILE=60000
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target# サービス定義を読み込み、Neo4j を起動して自動起動を有効化
sudo systemctl daemon-reload
sudo systemctl enable --now neo4j
# サービス状態を確認し、Java 17 でグラフクエリ端末を起動
sudo systemctl status neo4j --no-pager
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
/opt/neo4j/bin/cypher-shell -a bolt://127.0.0.1:7687 -u neo4jパスワード入力後に RETURN 1; を実行し、1 が返ることを確認します。:exit で終了します。HTTP はサーバー上で curl -I http://127.0.0.1:7474/ を実行して確認できます。リモート接続のためにグラフデータベースを一時的にインターネットへ直接公開しないでください。
4. kkFileView 4.4.0
4.1. 固定バージョンの成果物を取得
kkFileView 4.4.0 公式リリースの Linux 配布パッケージを使用します。直接取得できるバイナリーがない場合は、Maven を準備したマシンで以下のソースビルドを実行できます。プロジェクトの依存リポジトリへの接続が必要です。
# kkFileView 4.4.0 のソースを取得してプロジェクトディレクトリに移動
git clone --branch v4.4.0 --depth 1 https://github.com/kekingcn/kkFileView.git kkFileView-4.4.0
cd kkFileView-4.4.0
# Java 17 でビルドし、テスト実行は省略
env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
PATH="/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH" \
mvn clean package -DskipTests
# ビルド成果物と同一バージョンの設定ファイルを確認
test -f server/target/kkFileView-4.4.0.jar
test -f server/src/main/config/application.properties-DskipTests はテスト実行を省略するため、ビルド成功はテスト合格を意味しません。JAR と同じタグの application.properties をサーバーの ~/qontology-packages/kkfileview/ にアップロードします。配布パッケージの場合は、展開した bin/、config/ から同名ファイルをこの一時配置先に置きます。5.x の設定を混在させないでください。
4.2. Office とサービスファイルの配置
# Office 変換コンポーネントと CJK フォントをインストールし、Office のバージョンを確認
sudo apt install -y libreoffice fonts-noto-cjk
libreoffice --version
# サービスユーザーとインストール・データ・ログのディレクトリを作成
sudo useradd --system --user-group --home-dir /var/lib/kkfileview --shell /usr/sbin/nologin kkfileview
sudo install -d /opt/kkfileview/bin /opt/kkfileview/config
sudo install -d -o kkfileview -g kkfileview -m 750 /var/lib/kkfileview /var/lib/kkfileview/files /var/log/kkfileview
# JAR と設定ファイルを配置し、プレビュー設定を編集
sudo install -m 644 "$HOME/qontology-packages/kkfileview/kkFileView-4.4.0.jar" /opt/kkfileview/bin/
sudo install -o root -g kkfileview -m 640 "$HOME/qontology-packages/kkfileview/application.properties" /opt/kkfileview/config/
sudoedit /opt/kkfileview/config/application.properties対応する既存項目を変更し、それ以外は 4.4.0 の元ファイルを維持します。
server.port=8012
server.address=127.0.0.1
server.servlet.context-path=/kkfileview
office.home=/usr/lib/libreoffice
file.dir=/var/lib/kkfileview/files/
cache.type=jdk
base.url=http://<SERVER_IP>:8897/kkfileview/
trust.host=<SERVER_IP>
file.upload.disable=truetrust.host にはブラウザーで実際に使用するホスト名または IP を、プロトコル・ポートなしで設定します。複数ドメインは、このバージョンの規則に従ってカンマ区切りにします。制限はファイルの取得元と一致させてください。ここではアプリケーション内のプレビューを残し、kkFileView ホームの独立したアップロード機能は無効化します。base.url やコンテキストパスを変更したら再起動が必要です。4.4.0 の設定定義
4.3. systemd の設定と起動
sudoedit /etc/systemd/system/kkfileview.service を実行します。
[Unit]
Description=kkFileView for qOntology
After=network.target
[Service]
Type=simple
User=kkfileview
Group=kkfileview
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Environment=HOME=/var/lib/kkfileview
Environment=KKFILEVIEW_BIN_FOLDER=/opt/kkfileview/bin
WorkingDirectory=/opt/kkfileview/bin
ExecStart=/usr/lib/jvm/java-17-openjdk-amd64/bin/java -Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -Dspring.config.location=/opt/kkfileview/config/application.properties -jar /opt/kkfileview/bin/kkFileView-4.4.0.jar
Restart=on-failure
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target# サービス定義を読み込み、プレビューを起動して自動起動を有効化
sudo systemctl daemon-reload
sudo systemctl enable --now kkfileview
# サービス状態、初期化ログ、HTTP 応答を確認
sudo systemctl status kkfileview --no-pager
sudo journalctl -u kkfileview -n 100 --no-pager
curl -I http://127.0.0.1:8012/kkfileview/Office は初回起動に時間がかかる場合があります。この段階ではサービス応答と変換プロセスの初期化を確認し、Office/PDF の一連のプレビューは Nginx とアプリケーションの配置後に検証します。Java のヒープ上限には LibreOffice 子プロセスのメモリは含まれません。
5. ミドルウェアのチェックリスト
| サービス | 確認方法 | 期待する結果 |
|---|---|---|
| MySQL | ログイン後に SELECT VERSION(); | 5.7.44、管理者認証が正常 |
| Redis | redis-cli --askpass PING | PONG |
| Neo4j | cypher-shell で RETURN 1; | 1 が返る |
| kkFileView | /kkfileview/ への要求と journal の確認 | HTTP 応答があり、Office 初期化にエラーがない |
sudo ss -lntp で待ち受けアドレスとポートを確認します。停止は sudo systemctl stop <SERVICE_NAME>、再起動は sudo systemctl restart <SERVICE_NAME> です。MySQL エラーログは /var/log/mysql57/、Neo4j ログは /var/log/neo4j/ にあり、kkFileView のコンソールログは journal が収集します。
次はデータの初期化です。
