環境
- OS : Ubuntu 16.04 LTS
- Apache2.4
- php7 (途中5.6を使います)
経緯
Ubuntu14.04 LTS からUbuntu16.04LTSへのアップデートを行った際に、Apacheが2.4になった。そこで、ついでにphpも更新し7にした。この際にownCloudがうまく動いてくれなくなったので、アップデートすることにした。
問題点
- ownCloudを7.X->9.Xにしようとすると“Updates between multiple major versions and downgrades are unsupported.”と出てきてアップデートできない。
- どうやら、この問題はownCloudを一気に大幅にアップデートしすぎらしい。参照
- それじゃぁ、順番にアプデしていこう!と思って、8.0.14を入れようとすると、
「php7じゃダメ。php7は8.2移行が対応してるよ。」って言われる。 - それじゃぁと思って8.2.7を導入しようとすると…“Updates between multiple major versions and downgrades are unsupported.”が現れる…。
- Ubuntu 16.04からはphp7が標準となっている。
=> つらい
アップデート作業
php5.6に一度戻して、php7に対応したownCloudのバージョンまで上げ、その後php7でowncloudをアプデしていく作戦
Ubuntu 16.04にphp5.6を
※古い設定が残っていたため、うまくいった可能性が…あまり検証できていません。
Ubuntu 16.04 に PHP5 をインストール。 | freefielder.jp を参考にさせていただきました。
- ondrejさんが公開しているPPAリポジトリを追加
sudo add-apt-repository ppa:ondrej/php sudo apt-get update
- 追加されたそれっぽいのをインストール
apt-get install libapache2-mod-php5.6
ここで関連するいろんなパッケージもインストールされていました。
- 設定の更新
/etc/apache2/mods-avaible/ にphp5.6.confとphp5.6.loadが存在するので、既存のphp7の設定と置き換える(無理やり)/etc/apache2/mods-enabled/ にあるphp7.0.confとphp7.0.loadを適当な名前に置き換える
(このときのphp5.6は以前のバージョンが残っていただけな気もします…。)# sudo -s 実行後、ルート権限での操作だとします。 cd /etc/apache2/mods-enabled/ mv php7.0.conf php7.0.conf@ mv php7.0.load php7.0.load@
さらに、先ほどのmods-aviableにあるファイルのシンボリックリンクを作成します。
ln -s /etc/apache2/mods-avaible/php5.6.conf /etc/apache2/mods-enabled/php5.6.conf ln -s /etc/apache2/mods-avaible/php5.6.load /etc/apache2/mods-enabled/php5.6.load
- phpinfoを表示すると、無事にphp5.6に変更できていました。
<?php phpinfo() ?>
ownCloud8.0.14へのアップデート
基本的なownCloudのアップデート方法はOwnCloud 8 系から 9.0.0 にアップデートする | ぶっちろぐ を参考にさせていただきました。
ownCloudの過去のバージョンはownCloud Server Changelogにあります。とりあえず自分は8.0.14から。
アップデートの方法は上記リンクにとてもわかりやすく書いてあるので、そちらを参考に。
(※バックアップは取っておこう!)
ざっくり概要だけ書くと
- wget で欲しいバージョンをownCloud Server Changelogよりダウンロード(tar.bz2を利用)
- 現在のowncloudディレクトリの名前を変更 -> owncloud_oldなど(自分は/var/www/owncloud に設置していた)
- 新しいowncloudを展開して、同じディレクトリに設置
sudo tar xvf owncloud-8.0.14.tar.bz2 -C /var/www/
- 古いowncloudからowncloud_old/config/config.phpだけを新しいowncloud/config/にコピー
- 所有者の変更
chown -R www-data:www-data /var/www/owncloud
- ディレクトリに移動し、アップデートコマンドをwww-dataユーザで実行
cd /var/www/owncloud/ sudo -u www-data ./occ upgrade # apacheではユーザ名がwww-dataとなる
- しばらくすると、無事にowncloudがアップデートできたみたい。
が、しかし…ブラウザ上でアクセスするとうまくいってないです。。。
サーバーのログなども見ても、いまいち原因がわからない…。むりやりphp5を動かしてたのが原因なのかなんなのか…。
続いてアップデート
気にせず、次のバージョンいってみよ〜〜w (ダメな気がする…。
続いて8.1.9のインストール。。。上記と同様にダウンロードしてきて展開して所有者変えてconfig.php持ってきて…
うまくいった。。。けどやっぱりブラウザからアクセスするとミスる。
続いて8.2.7のインストール。ここからはphp7が利用できるので、mods-availableとmods-enabledをいじって(戻して)php7に。
それから同様にしてアップデート作業…
無事に成功。さらに、php7にもどしたせいか、ブラウザからアクセスすると無事に動作してるっぽい。
それでも、ユーザ名、パスワードを入れると全然反応が返ってこなかったので一度サーバーを再起動。。。なんだか挙動が怪しかったのですが、数回ログイン操作を繰り返していると無事にログインできました!!
続いて、9.0.4…。アプデ作業にも慣れてきたかな。。。
アップデートコマンド実行時になんだかでてきました。
ownCloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade - Hint: You can speed up the upgrade by executing this SQL command manually: ALTER TABLE `*PREFIX*filecache` ADD COLUMN checksum varchar(255) DEFAULT NULL AFTER permissions; Continue with update (y/n)
なんだか、上記のコマンドを入力すればアップデート作業を高速化できるけど、やらずに続行する?(y/n)みたいな意味っぽいので、とりあえずyで。
今回も無事にアップデート成功。。。
最後に、9.1へのアップデート。これも今までと同様のコマンドで実行を行いました。
どうやら、今回のアップデートではデータベースの変更が自動的に行われているみたいです。
ついに、ownCloudが9.1までアプデできました。。。長い戦いだった…。
7.X -> 8.0 -> 8.1 -> 8.2 -> 9.0 -> 9.1
と途中phpのバージョンを切り替えながら9.1までアップデートしてきました。いやぁ…本当に長い戦いだった。。。
ついでに設定
なんだか警告が出たので、公式サイトにある通りの対応をしておいた。
- The “Strict-Transport-Security” HTTP header is not configured to at least “15552000” seconds. For enhanced security we recommend enabling HSTS as described in our security tips.
公式サイトにある通り、下記を自分の場合は/etc/apache2/sites-available/ に設置しているowncloud.confに追記。無事に警告が消えた。
<Directory /var/www/owncloud/> # ..その他の設定 <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule> </Directory>
また、owncloudにアクセスする際には常にhttpsを利用するようにしたかったので、/etc/apache2/sites-avaible/default.confにRedirectを記述しました。
<VirtualHost *:80> # ...いろいろ設定 Redirect permanent /owncloud https://example.com/owncloud # example.comは自分の環境に合わせる <VirtualHost>
これで無事に以前のownCloudに戻った!(と思う)
まとめ
9.1を使ってみた感想としては(7.Xとの比較)
- レスポンスが早い(クリックしてからページの遷移にストレスを感じない)
- 動画のストリーミングがスムーズ(以前は止まったり、途中から再生ができなかったり…)
- pdfのビュワーも高速
みたいな感じですかね〜
できれば消したくないファイルなどもあったので、ownCloudを消して入れ直すってことはしたくなかったので、無事にデータを保持したまま移行することができてよかった〜。
それにしても、アップデートを長らく放置していたため、すごい苦労をした気がします。これからはこまめにアップデートしよう。。。