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がインストールできる状態にあった。
手順は
- 8.4でバックアップを取得
- 9.3をインストール
- postgresユーザを9.3を使用するように設定
- 9.3にdspaceユーザを作成
- 所有者dspaceで9.3にdspaceデータベースを作成
- 8.4のバックアップデータを9.3にレストア
- 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
で旧クラスタを削除すれば良さそうだ。