-->

2026年6月11日木曜日

alfresco community 7.4→alfresco26.xへの移行(ansibleインストール)

Alfresco アップグレード手順:v7.4 → v26.x(Ubuntu 22 → 24)
⛔ 移行元:Ubuntu 22 + Alfresco 7.4 ✅ 移行先:Ubuntu 24 + Alfresco 26.x
🔄
本記事について
従来の移行手順(Samba共有フォルダ経由)をrsync over SSHに置き換えています。 WindowsホストでLinuxパーティションを読む際の日本語ファイル名の文字化けを回避し、VM間で直接転送します。

1 概要・注意事項

項目移行元VM移行先VM
OSUbuntu 22.04 ServerUbuntu 24.04 Server
AlfrescoCommunity 7.4Community 26.x
インストール方法Alfresco公式Ansibleロール
仮想化基盤Hyper-V / Windows Server 2016
データベースPostgreSQL
検索サービスSolr(Community版)
⚠️
Windows経由のファイルコピーは避ける
WindowsホストでLinux(ext4)パーティションを読むと日本語ファイル名が文字化けします。必ずLinux同士(rsync/SSH)で転送してください。

2 移行先VMにAlfresco 26.x をインストール

Ubuntu 24.04 ServerにAlfresco公式Ansibleロールで新規インストールします。

リポジトリ取得・Python環境構築

移行先VM
# 公式Ansibleロールをクローン
git clone https://github.com/Alfresco/alfresco-ansible-deployment.git
cd alfresco-ansible-deployment

# Python仮想環境を構築
sudo apt install pipenv python3-venv
python3.12 -m venv venv
source venv/bin/activate

# Ansibleの依存関係をインストール
pip3 install pipenv
python3.12 -m pipenv install --deploy
python3.12 -m pipenv run ansible-galaxy install -r requirements.yml

アクセスURLの設定

アクセスする可能性のあるURLを全て指定します。誤るとファイル操作等ができなくなります。

移行先VM
sudo vi playbooks/group_vars/all.yml
playbooks/group_vars/all.yml
acs_play_known_urls: [
  http://サーバーのIPアドレス:8080/share,
  https://サーバーのIPアドレス:8080/share,
  https://ドメイン名/share
]
acs_play_major_version: 26

Community版向けに検索サービスを設定

初期設定はEnterprise版の検索サービスが選択されているため、Solrに切り替えます。

移行先VM
sudo vi inventory_local.yml
inventory_local.yml(変更箇所)
# Solrを有効化(コメントを解除)
search:
  children:
    repository:        # ← コメント解除

# Enterprise Searchを無効化(コメントアウト)
search_enterprise:
  children:
    # repository:      # ← コメントアウト
elasticsearch:
  children:
    # repository:      # ← コメントアウト

Vaultパスワード生成・インストール実行

移行先VM
# Vaultパスワードを生成
openssl rand -base64 21 > ~/.vault_pass.txt
export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt

# シークレットを自動生成
pipenv run ansible-playbook \
  -e vault_init=encrypted_file playbooks/secrets-init.yml

# インストール実行(Community版として指定)
pipenv run ansible-playbook playbooks/acs.yml \
  -i inventory_local.yml \
  -e "acs_play_repository_acs_edition=Community"

3 データ転送の事前準備

🔄
従来手順との変更点
従来のSamba共有フォルダ(/mnt/smb)経由の転送をrsync over SSHに変更しています。Sambaのセットアップが不要になり、日本語ファイル名の文字化けも回避できます。

移行先VM:SSH サーバーの確認

移行先VM
sudo systemctl status ssh
# 起動していない場合
sudo apt install openssh-server
sudo systemctl enable --now ssh

移行先VM:一時受け取りディレクトリの作成

Alfrescoの管理ディレクトリに直接転送すると権限エラーが発生しやすいため、ホームディレクトリ配下の一時ディレクトリに受け取ります。

移行先VM
mkdir -p ~/alfresco_restore/content
mkdir -p ~/alfresco_restore/search-services
mkdir -p ~/alfresco_restore/search-services-config
mkdir -p ~/alfresco_restore/extension
mkdir -p ~/alfresco_restore/web-extension
mkdir -p ~/alfresco_restore/messages

移行元VM:Alfrescoの停止

移行元VM
sudo systemctl stop alfresco-content.service
sudo systemctl stop alfresco-search.service
# 停止確認
sudo systemctl status alfresco-content.service
# → inactive (dead) になればOK

screenでセッションを保持する

転送に時間がかかるため、端末を閉じてもサーバー上で継続できるよう screen を使用します。

移行元VM
# screenセッション開始
screen -S alfresco_migrate

# デタッチ(セッションを維持したまま端末を閉じる)
# Ctrl + A → D

# 後で再接続
screen -r alfresco_migrate

4 移行元からデータ転送(rsync) 変更

以下のコマンドはすべて移行元VM上で実行します。--omit-dir-timesオプションでディレクトリのタイムスタンプ変更エラーを回避します。rsyncは差分転送のため、中断後に再実行しても続きから再開されます。

コンテンツストア

移行元VM
sudo rsync -avz --progress --omit-dir-times \
  /var/opt/alfresco/content-services/content/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/content/

Solrインデックス・バックアップ

移行元VM
sudo rsync -avz --progress --omit-dir-times \
  /var/opt/alfresco/search-services/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/search-services/

Solrモデル・設定

移行元VM
sudo rsync -avz --progress --omit-dir-times \
  /etc/opt/alfresco/search-services/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/search-services-config/

カスタマイズ設定(カスタムモデルがある場合)

移行元VM
sudo rsync -avz --progress --omit-dir-times \
  /etc/opt/alfresco/content-services/classpath/alfresco/extension/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/extension/

sudo rsync -avz --progress --omit-dir-times \
  /etc/opt/alfresco/content-services/classpath/alfresco/web-extension/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/web-extension/

sudo rsync -avz --progress --omit-dir-times \
  /etc/opt/alfresco/content-services/classpath/alfresco/messages/ \
  ユーザー名@移行先VMのIPアドレス:~/alfresco_restore/messages/

データベースダンプ

移行元VM
# ダンプ作成
sudo -u postgres pg_dumpall > /tmp/alfresco_dump.sql

# 移行先VMへ転送
scp /tmp/alfresco_dump.sql \
  ユーザー名@移行先VMのIPアドレス:/tmp/

5 移行先へデータを適用

移行先VMで一時ディレクトリから正式パスへ移動します。

Alfrescoを停止

移行先VM
sudo systemctl stop alfresco-content.service
sudo systemctl stop alfresco-search.service

コンテンツストアの差替

移行先VM
# 既存コンテンツを削除
sudo rm -rf /var/opt/alfresco/content-services/content/contentstore
sudo rm -rf /var/opt/alfresco/content-services/content/contentstore.deleted

# 移行データをコピー
sudo cp -a ~/alfresco_restore/content/contentstore \
  /var/opt/alfresco/content-services/content/
sudo cp -a ~/alfresco_restore/content/contentstore.deleted \
  /var/opt/alfresco/content-services/content/

Solrデータの差替

移行先VM
# 既存Solrインデックスを削除
sudo rm -rf /var/opt/alfresco/search-services/alfresco/index
sudo rm -rf /var/opt/alfresco/search-services/archive/index
sudo rm -rf /etc/opt/alfresco/search-services/solrhome/alfrescoModels

# 移行データをコピー
sudo cp -a ~/alfresco_restore/search-services/alfresco/index \
  /var/opt/alfresco/search-services/alfresco/
sudo cp -a ~/alfresco_restore/search-services/archive/index \
  /var/opt/alfresco/search-services/archive/
sudo cp -a ~/alfresco_restore/search-services-config/solrhome/alfrescoModels \
  /etc/opt/alfresco/search-services/solrhome/

権限を修正

移行先VM
sudo chown -hR alfresco:alfresco /var/opt/alfresco/content-services/content/
sudo chown -hR alfresco:alfresco /var/opt/alfresco/search-services/
sudo chown -hR alfresco:alfresco /etc/opt/alfresco/search-services/solrhome/

6 データベースの移行

移行先VM
# PostgreSQLでDBを再作成
sudo -u postgres psql -c "DROP DATABASE IF EXISTS alfresco;"
sudo -u postgres psql -c "CREATE DATABASE alfresco;"

# ダンプをリストア
sudo -u postgres psql -f /tmp/alfresco_dump.sql

PostgreSQLパスワードの確認・設定

alfresco-global.propertiesdb.password とPostgreSQLの alfresco ユーザーのパスワードを一致させます。

移行先VM
# 設定ファイルのパスワードを確認
sudo grep "db.password" \
  /etc/opt/alfresco/content-services/classpath/alfresco-global.properties

# PostgreSQLのパスワードを設定ファイルに合わせる
sudo -u postgres psql
ALTER USER alfresco WITH PASSWORD '設定ファイルのdb.password';
\q
⚠️
パスワードが一致しないとAlfresco起動時に FATAL: password authentication failed for user "alfresco" エラーが発生します。

7 カスタマイズ設定の移行

⚠️
カスタムモデルを移行しないと404エラーが発生します
custom-model-context.xml と モデル定義XML(customModel.xml 等)の両方を配置してください。
移行先VM
# カスタムモデルを配置
sudo cp -a ~/alfresco_restore/extension/. \
  /etc/opt/alfresco/content-services/classpath/alfresco/extension/

# Share設定を配置
sudo cp -a ~/alfresco_restore/web-extension/. \
  /etc/opt/alfresco/content-services/classpath/alfresco/web-extension/

# メッセージファイルを配置
sudo cp -a ~/alfresco_restore/messages/. \
  /etc/opt/alfresco/content-services/classpath/alfresco/messages/

# 権限を修正
sudo chown -R alfresco:alfresco \
  /etc/opt/alfresco/content-services/classpath/alfresco/extension
sudo chown -R alfresco:alfresco \
  /etc/opt/alfresco/content-services/classpath/alfresco/web-extension
sudo chown -R alfresco:alfresco \
  /etc/opt/alfresco/content-services/classpath/alfresco/messages

配置確認

移行先VM
ls /etc/opt/alfresco/content-services/classpath/alfresco/extension/
# custom-model-context.xml と customModel.xml 等が存在すること

8 Alfresco起動・確認

移行先VM
sudo systemctl start alfresco-content.service
sudo systemctl start alfresco-search.service

# ログで起動確認
tail -f /var/opt/alfresco/tomcat/logs/catalina.out
起動成功の確認ポイント
catalina.outに Alfresco started が出力され、ブラウザから http://移行先VMのIP:8080/alfresco にアクセスできれば移行完了です。

移行元VMのAlfresco再起動(本番継続)

移行元VM
sudo systemctl start alfresco-content.service
sudo systemctl start alfresco-search.service

9 トラブルシューティング

カスタムモデルで404エラーが発生する

💡
custom-model-context.xml と モデル定義XML の両方が /etc/opt/alfresco/content-services/classpath/alfresco/extension/ に存在するか確認してください。片方だけでは動作しません。

DB認証エラーで起動失敗する

エラーログ
FATAL: password authentication failed for user "alfresco"
💡
alfresco-global.propertiesdb.password を確認し、PostgreSQLの alfresco ユーザーのパスワードと一致させてください。

rsync転送時にPermission deniedが発生する

💡
転送先の親ディレクトリまで含めて alfresco:alfresco 所有・パーミッション 750 になっていないか確認してください。一時ディレクトリ(~/alfresco_restore/)に転送してから移動する方法が安全です。

No space left on deviceが発生する

💡
LVMを使用している場合は lvextend + resize2fs でディスクを拡張してください。Solrインデックスは省略してAlfresco起動後に管理コンソールから再インデックスを実行する方法も有効です。

それでも起動・ログインできない場合(Ansibleで再インストール)

移行先VM
# vars/secrets.ymlを初期化
sudo vi vars/secrets.yml
# → 記載内容を全て削除して保存

# アンインストール
pipenv run ansible-playbook \
  playbooks/platform-cleanup.yml -i inventory_local.yml

# Vaultパスワード再作成
openssl rand -base64 21 > ~/.vault_pass.txt
export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
pipenv run ansible-playbook \
  -e vault_init=encrypted_file playbooks/secrets-init.yml

# 再インストール
pipenv run ansible-playbook playbooks/acs.yml \
  -i inventory_local.yml \
  -e "acs_play_repository_acs_edition=Community"

0 件のコメント:

コメントを投稿