Alfresco Community Edition — Upgrade Guide
Alfresco アップグレード手順
v7.4 → v26.x(Ubuntu 22 → 24)
🖥 Hyper-V / Windows Server 2016
📦 Ansible 公式ロール
🐘 PostgreSQL
☀️ Solr(Community版)
⛔ 移行元:Ubuntu 22 + Alfresco 7.4
→
✅ 移行先:Ubuntu 24 + Alfresco 26.x
🔄
本記事について
従来の移行手順(Samba共有フォルダ経由)をrsync over SSHに置き換えています。 WindowsホストでLinuxパーティションを読む際の日本語ファイル名の文字化けを回避し、VM間で直接転送します。
従来の移行手順(Samba共有フォルダ経由)をrsync over SSHに置き換えています。 WindowsホストでLinuxパーティションを読む際の日本語ファイル名の文字化けを回避し、VM間で直接転送します。
目次
1 概要・注意事項
| 項目 | 移行元VM | 移行先VM |
|---|---|---|
| OS | Ubuntu 22.04 Server | Ubuntu 24.04 Server |
| Alfresco | Community 7.4 | Community 26.x |
| インストール方法 | Alfresco公式Ansibleロール | |
| 仮想化基盤 | Hyper-V / Windows Server 2016 | |
| データベース | PostgreSQL | |
| 検索サービス | Solr(Community版) | |
⚠️
Windows経由のファイルコピーは避ける
WindowsホストでLinux(ext4)パーティションを読むと日本語ファイル名が文字化けします。必ずLinux同士(rsync/SSH)で転送してください。
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共有フォルダ(
従来の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.properties の db.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に
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.properties の db.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 件のコメント:
コメントを投稿