Ubuntuを14.04LTSへ、DSpaceを5.0へアップグレード

手元の環境でDSpace5.0の準備ができたのでzuki-ebtsu.jpサイトに適用することにした。しかし、DSpace バージョン5.0はバージョン9.0以降のPostgeSQLが必要なので、この際、延ばし延ばしにしていたUbuntuの14.04LTSへのアップグレードも行うことにした。Ubuntuのアップグレードは、次の手順で問題なく終わった。

sudo apt-get update
sudo apt-get upgrade
apt-cache policy update-manager-core
sudo do-release-upgrade

途中、いくつかの質問にはすべて既存の設定ファイルを残す方向で答えた。特に問題はなく無事終了した(覚えていないが30分くらいだったか)。

しかし、既存のシステムがまったく動かななかった。以下、その対処法を記録しておく。

Webサイトが表示されない。

単なるhtmlのトップページもまったく表示されなかった。これは、Apache2設定ファイルで指定されているDocumentRootが/var/wwwから/var/www/htmlに変更になったためだった。設定を元に戻したら、表示されるようになった。また、/etc/apache2/conf.d配下は読まなくなり、代わりに/etc/apache2/conf-enableを読むようになったので配下にあった設定ファイルを移動させた。

VuFindに接続できない。

アクセスが拒否された。これはApache2.4でアクセス制御の設定方法が変わったためで、次のように変更することでアクセスできるようになった。

# 2.2
Order allow,deny
Allow from all

# 2.4
Require all granted

PostgreSQL 9.3が利用できない

PostgreSQLのバージョンアップといえば、昔はクラスタの移動が必要だったが、今は複数のバージョンを混在することができるので、新しいバージョンをインストールして旧バージョンで作成したバックアップから新バージョンにレストアすれば良いようだった。以下は、Ubuntu で PostgreSQL を使ってみよう(続編)を参考に行った。Ubuntuのアップグレードでは以前のPostgreSQL 8.4が残り、9.3がインストールできる状態にあった。

手順は

  1. 8.4でバックアップを取得
  2. 9.3をインストール
  3. postgresユーザを9.3を使用するように設定
  4. 9.3にdspaceユーザを作成
  5. 所有者dspaceで9.3にdspaceデータベースを作成
  6. 8.4のバックアップデータを9.3にレストア
  7. dspaceユーザの使用バージョンを9.3に設定
pg_dump -f dspace-db.backup -F c -O -v dspace          # 8.4
sudo apt-get install postgresql-9.3
sudo vi /etc/postgresql-common/user_clusters
    postgres  postgres  9.3  main  postgres
sudo -u postgres createuser -d -P dspace
sudo -u postgres createdb -O dspace -E UNICODE dspace
pg_restore -d dspace -c -F c -O dspace-db.backup
sudo vi /etc/postgresql-common/user_clusters
    dspace dspace  9.3  main  dspace

しかしこれではDSpaceは8.4に接続し、9.3には接続しない。これは、9.3の方の接続ポートがデフォルトの5432ではなく5433になっていたからであった。DSpaceの設定を次のように変更した。

vi /usr/local/dspace/config/dspace.cfg
    db.url = jdbc:postgresql://localhost:5433/dspace

これで9.3に接続するようになったが、dspaceのパスワードが違うというエラーで接続できない。これは、PostgreSQLのpg_hba.confの設定が若干変わったためで、dspaceユーザに正しいパスワードを設定すると接続するようになった。

2015.04.08 追記

PostgreSQLのアップグレードはpg_upgradeclusterコマンドで旧クラスターから新クラスターに移行し、pg_dropclusterで旧クラスタを削除するという手順が正しかったようだ。両コマンドは共にPerlスクリプトであり、ざっと読んだところ辻褄を合わせるためには、9.3の接続ポートを5432に戻した後、pg_dropclusterで旧クラスタを削除すれば良さそうだ。


プロフィール
新着エントリ
アーカイブ