ownCloud10をCentOS6にTarでインストールする

2018年12月11日

ownCloudについての全投稿は/tag/owncloudを参照してほしい。

ownCloudのWindowsクライアントが勝手に更新してしまうで書いたように、CentOS6にはLinuxパッケージマネージャを使ってのownCloud10のインストールはできない。また、ownCloud公式でも(製品環境においては)tarからのインストールが推奨されているようだ。

そこでこれを行ってみる。さらに既にインストールして動作しているownCloud9.1.5の環境を引き継がねばならない。

ownCloudのインストール

Download ownCloudから現時点での最新の10.0.10のtarをダウンロードし、/var/www/oc10に展開する。権限を適切に設定する。

旧ownCloudの設定状態と停止

rpmでインストールしたowncloud9.1.5は次のような構成だ。

/etc/cron.d/owncloud
/etc/owncloud
/etc/owncloud/ca-bundle.crt
/etc/owncloud/config.php
/usr/share/doc/owncloud-9.1.5
/usr/share/doc/owncloud-9.1.5/3rdpa
...
/usr/share/owncloud
/usr/share/owncloud/3rdparty
...
/var/lib/owncloud
/var/lib/owncloud/apps
/var/lib/owncloud/data

この他、/etc/httpd/conf.d/に複数のowncloud関連のファイルがインストールされ、修正して自環境に合わせるようにしてある。

停止するには、単純に/etc/httpd/conf.d/内の該当ファイルを別の場所に移動し、httpdをリロードする。

さて、どのように移行したら良いのか?

Linuxでのマニュアルインストール

Manual Installation on Linuxという説明がある。

PHPのアップデート

php7.2への更新を強く推奨するとあるが、必要なのは5.6以上とのこと。とりあえず5.6のままで行く。また、初めてownCloudをインストールする場合はphpの拡張をかなりインストールしないといけないのだが、既に動いていた環境なので、すべて入っているものとして話を進める。

MySQL

MySQL/MariaDBが必要だという。それだけだ。

Apacheの設定

Apacheの設定については大したことは書いていない。
これではさっぱりわからない。

ディレクトリ構造

今回/var/www/oc10にインストールしたが、インストールされたディレクトリ構造は以下である。

total 256
-rw-r--r--  1 apache apache  8859 Sep 17 20:05 AUTHORS
-rw-r--r--  1 apache apache 83056 Sep 17 20:05 CHANGELOG.md
-rw-r--r--  1 apache apache 34520 Sep 17 20:05 COPYING
drwxrwxrwx 22 apache apache  4096 Sep 17 20:05 apps
drwxrwxrwx  2 apache apache  4096 Sep 17 20:05 config
-rw-r--r--  1 apache apache  4371 Sep 17 20:05 console.php
drwxr-xr-x 17 apache apache  4096 Sep 17 20:07 core
-rw-r--r--  1 apache apache  5033 Sep 17 20:05 cron.php
-rw-r--r--  1 apache apache 30898 Sep 17 20:05 db_structure.xml
-rw-r--r--  1 apache apache   179 Sep 17 20:05 index.html
-rw-r--r--  1 apache apache  3678 Sep 17 20:05 index.php
drwxr-xr-x  3 apache apache  4096 Sep 17 20:05 l10n
drwxr-xr-x  6 apache apache  4096 Sep 17 20:05 lib
-rwxr-xr-x  1 apache apache   283 Sep 17 20:05 occ
drwxr-xr-x  2 apache apache  4096 Sep 17 20:05 ocs
drwxr-xr-x  2 apache apache  4096 Sep 17 20:05 ocs-provider
-rw-r--r--  1 apache apache  3201 Sep 17 20:05 public.php
-rw-r--r--  1 apache apache  5488 Sep 17 20:05 remote.php
drwxr-xr-x  4 apache apache  4096 Sep 17 20:05 resources
-rw-r--r--  1 apache apache    26 Sep 17 20:05 robots.txt
drwxr-xr-x 12 apache apache  4096 Sep 17 20:05 settings
-rw-r--r--  1 apache apache  1968 Sep 17 20:05 status.php
drwxr-xr-x  6 apache apache  4096 Sep 17 20:05 updater
-rw-r--r--  1 apache apache   273 Sep 17 20:07 version.php

どう考えても、このディレクトリ自体をウェブサーバのコンテンツとするらしい。

そして、configの中に以下のファイルがある。

-rw-r--r-- 1 apache apache  2419 Sep 17 20:05 config.apps.sample.php
-rw-r--r-- 1 apache apache 47936 Sep 17 20:05 config.sample.php

これも、どう考えても設定ファイルの雛形であるようだ。おそらく、config.sample.php–>config.php、config.apps.sample.php–>config.apps.phpとするのだろう。

しかし、どう検索してみても、config.apps.phpが何をするものかわからない。とりあえず、これは無視しておく。

config.phpの内容

とりあえずconfig.sample.phpをコピーしてconfig.phpを作成し、所有者等を変更しておく。

これについては以下を参考にする。

のっけに「ほとんどのパラメータは管理画面から設定可能なので、必ずしも編集する必要はない」とある。

そして、configディレクトリ内の*.config.phpという名前のファイルはすべて読み込まれるとある。したがって、config.apps.sample.phpをconfig.apps.phpと名称変更しても、これは読み込まれないらしい。

また、これらはの*.config.phpファイルは同じように扱われることがわかる。特に特定の名前を特別扱いするわけではないらしい。

とりあえずhttpdにホストさせてみる

とりあえず/etc/httpd/conf/httpd.confに適当なドメインで書いてみる。

<VirtualHost *:80>
  ServerAdmin webmaster@foobar.com
  ServerName foobar.com
  DocumentRoot /var/www/oc10/
  <Directory /var/www/oc10/>
    AllowOverride All
  </Directory>
  ErrorLog logs/foobar.com-error_log
  CustomLog logs/foobar.com-access_log combined
</VirtualHost>

アクセスしてみると、エラーログに以下が出る。

[Fri Nov 23 12:25:31 2018] [error] [client *.*.*.*] PHP Fatal error:  Class 'RedisCluster' not found in /var/www/oc10/config/config.php on line 1014

Redis clusterとやらをサポートするためのPHPモジュールが無いらしい。必要無いので、この部分をコメントアウトする。

次はこれだ。

[Fri Nov 23 12:31:57 2018] [error] [client *.*.*.*] PHP Fatal error:  Class 'Memcached' not found in /var/www/oc10/config/config.php on line 1034

これも不要なのでコメントアウトする。

この状態で実行すると、今度はブラウザの方に以下が表示される。

App directory "/var/www/oc10/apps-external" not found! Please put the ownCloud apps folder in the ownCloud folder or the folder above. You can also configure the location in the config.php file.

appsはあるが、apps-externalというのは無い。説明によれば、更新ソフトがあった場合にここが使われるという。単純にapps-externalを作成して、権限を設定しておく。

次の画面になる。

「サンプル設定ファイルのコピーのままだ。ドキュメントを読んで設定しろ」と言っている。単純に以下の行を削除する。

'copied_sample_config' => true,

以下の画面になる。

Storage&Databaseをクリックして、以下の画面にする。

さて、ここに旧ownCloudのデータベースとデータを指定したいわけだ。

  • 以前の管理者名とパスワード
  • 以前のMySQLデータベース名とパスワード
  • 以前のデータディレクトリ

以下のように指定してみる。

以下のエラーになる。

これではダメのようだ。

config.phpに設定する

そこで、データディレクトリとデータベース情報をconfig.phpに書いてやることにする。

するとconfig.phpが勝手に書き換わってしまっている。ということは単に旧バージョンのconfig.phpをここに入れれば良いことだったのか?

単純にコピーして、URL等を現在の環境に合わせてやる。versionが9.1.5.2になっているので、これを10.0.10にする。

すると、以下の表示になる。

仰せの通り、/var/www/oc10にて「./occ upgrade」を実行することにする。所有者でないと実行できないので、実際には、「sudo -u apache ./occ upgrade」とする。

以下のようになる。

[root@www8321uj oc10]# sudo -u apache ./occ upgrade
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
2018-11-23T04:15:13+00:00 Set log level to debug
2018-11-23T04:15:13+00:00 Turned on maintenance mode
2018-11-23T04:15:13+00:00 Repair step: Repair MySQL database engine
2018-11-23T04:15:13+00:00 Repair step: Repair MySQL collation
2018-11-23T04:15:13+00:00 Repair info: All tables already have the correct collation -> nothing to do
2018-11-23T04:15:13+00:00 Repair step: Repair SQLite autoincrement
2018-11-23T04:15:13+00:00 Repair step: Repair orphaned reshare
2018-11-23T04:15:13+00:00 Repair step: Repair duplicate entries in oc_lucene_status
2018-11-23T04:15:13+00:00 Repair info: lucene_status table does not exist -> nothing to do
2018-11-23T04:15:13+00:00 Repair step: Upgrade app code from the marketplace
2018-11-23T04:15:13+00:00 Repair warning: Market app is unavailable for updating of apps. Please update manually, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
2018-11-23T04:15:13+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
2018-11-23T04:15:13+00:00 Repair warning: Please install or update the following apps manually or disable them with:
occ app:disable activity
occ app:disable comments
occ app:disable dav
occ app:disable federatedfilesharing
occ app:disable federation
occ app:disable files
occ app:disable files_external
occ app:disable files_pdfviewer
occ app:disable files_sharing
occ app:disable files_texteditor
occ app:disable files_trashbin
occ app:disable files_versions
occ app:disable files_videoplayer
occ app:disable firstrunwizard
occ app:disable gallery
occ app:disable notifications
occ app:disable provisioning_api
occ app:disable systemtags
occ app:disable templateeditor
2018-11-23T04:15:13+00:00 Repair warning: For manually updating, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
2018-11-23T04:15:13+00:00 OC\RepairException: Upgrade is not possible
2018-11-23T04:15:13+00:00 Update failed
2018-11-23T04:15:13+00:00 Maintenance mode is kept active
2018-11-23T04:15:13+00:00 Reset log level

どうもアプリが無いと言ってる。ブラウザ画面は以下になる。

config.phpのアプリの場所を旧バージョンのままにしておいたせいらしい。きちんと、「/var/www/oc10/apps」に変更してみる。

[root@www8321uj oc10]# sudo -u apache ./occ upgrade
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
2018-11-23T04:21:55+00:00 Set log level to debug
2018-11-23T04:21:55+00:00 Repair step: Repair MySQL database engine
2018-11-23T04:21:55+00:00 Repair step: Repair MySQL collation
2018-11-23T04:21:55+00:00 Repair info: All tables already have the correct collation -> nothing to do
2018-11-23T04:21:55+00:00 Repair step: Repair SQLite autoincrement
2018-11-23T04:21:55+00:00 Repair step: Repair orphaned reshare
2018-11-23T04:21:55+00:00 Repair step: Repair duplicate entries in oc_lucene_status
2018-11-23T04:21:55+00:00 Repair info: lucene_status table does not exist -> nothing to do
2018-11-23T04:21:55+00:00 Repair step: Upgrade app code from the marketplace
2018-11-23T04:21:56+00:00 Repair warning: Market app is unavailable for updating of apps. Please update manually, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
2018-11-23T04:21:56+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
2018-11-23T04:21:56+00:00 Repair warning: Please install or update the following apps manually or disable them with:
occ app:disable activity
occ app:disable files_pdfviewer
occ app:disable files_texteditor
occ app:disable gallery
occ app:disable templateeditor
2018-11-23T04:21:56+00:00 Repair warning: For manually updating, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
2018-11-23T04:21:56+00:00 OC\RepairException: Upgrade is not possible
2018-11-23T04:21:56+00:00 Update failed
2018-11-23T04:21:56+00:00 Maintenance mode is kept active
2018-11-23T04:21:56+00:00 Reset log level

面倒くさい。まだダメだと言ってる。アプリが足りないという。インストールするかdisableにしろと言ってるアプリは以下だ。

occ app:disable activity
occ app:disable files_pdfviewer
occ app:disable files_texteditor
occ app:disable gallery
occ app:disable templateeditor

Upgrade Marketplace Applicationsに説明があるという。

インストールの仕方がわからない。とりあえずdisableの仕方はわかった。

sudo -u apache ./occ app:disable activity

などとしてすべてdisableする。

再度挑戦してみると、今度はうまく行ったようだ。1分程度で終了した。

[root@www8321uj oc10]# sudo -u apache ./occ upgrade
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
2018-11-23T04:34:29+00:00 Set log level to debug
2018-11-23T04:34:29+00:00 Repair step: Repair MySQL database engine
2018-11-23T04:34:29+00:00 Repair step: Repair MySQL collation
2018-11-23T04:34:29+00:00 Repair info: All tables already have the correct collation -> nothing to do
2018-11-23T04:34:29+00:00 Repair step: Repair SQLite autoincrement
2018-11-23T04:34:29+00:00 Repair step: Repair orphaned reshare
2018-11-23T04:34:29+00:00 Repair step: Repair duplicate entries in oc_lucene_status
2018-11-23T04:34:30+00:00 Repair info: lucene_status table does not exist -> nothing to do
2018-11-23T04:34:30+00:00 Repair step: Upgrade app code from the marketplace
2018-11-23T04:34:30+00:00 Repair warning: Market app is unavailable for updating of apps. Please update manually, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
2018-11-23T04:34:30+00:00 Updating database schema
2018-11-23T04:34:44+00:00 Updated database
2018-11-23T04:34:44+00:00 Updating <federatedfilesharing> ...
2018-11-23T04:34:45+00:00 Updated <federatedfilesharing> to 0.3.1
2018-11-23T04:34:45+00:00 Updating <dav> ...
2018-11-23T04:34:48+00:00 Repair step: Remove invalid calendar and addressbook shares
2018-11-23T04:34:48+00:00 Updated <dav> to 0.4.0
2018-11-23T04:34:48+00:00 Updating <files_sharing> ...
2018-11-23T04:34:50+00:00 Updated <files_sharing> to 0.11.0
2018-11-23T04:34:50+00:00 Updating <files_trashbin> ...
2018-11-23T04:34:51+00:00 Updated <files_trashbin> to 0.9.1
2018-11-23T04:34:51+00:00 Updating <notifications> ...
2018-11-23T04:34:53+00:00 Updated <notifications> to 0.3.5
2018-11-23T04:34:53+00:00 Repair step: Repair mime types
2018-11-23T04:34:53+00:00 Repair step: Detect file cache entries with path that does not match parent-child relationships
2018-11-23T04:34:53+00:00 Repair step: Generate ETags for file where no ETag is present.
2018-11-23T04:34:53+00:00 Repair info: ETags have been fixed for 0 files/folders.
2018-11-23T04:34:53+00:00 Repair step: Clean tags and favorites
2018-11-23T04:34:53+00:00 Repair info: 0 tags of deleted users have been removed.
2018-11-23T04:34:53+00:00 Repair info: 0 tags for delete files have been removed.
2018-11-23T04:34:53+00:00 Repair info: 0 tag entries for deleted tags have been removed.
2018-11-23T04:34:53+00:00 Repair info: 1 tags with no entries have been removed.
2018-11-23T04:34:53+00:00 Repair step: Drop old database tables
2018-11-23T04:34:53+00:00 Drop old database tables
2018-11-23T04:34:53+00:00 
2018-11-23T04:34:53+00:00  Starting ...
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: calendar_calendars
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: calendar_objects
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: calendar_share_calendar
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: calendar_share_event
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: file_map
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: foldersize
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: fscache
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: gallery_sharing
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: locks
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: log
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: media_albums
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: media_artists
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: media_sessions
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: media_songs
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: media_users
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: permissions
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: pictures_images_cache
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: principalgroups
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: principals
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: queuedtasks
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: sharing
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: clndr_calendars
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: clndr_objects
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: clndr_share_event
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: clndr_share_calendar
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: clndr_repeat
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: contacts_addressbooks
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Drop old database table: contacts_cards
2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00 2018-11-23T04:34:53+00:00  Done
 28/28 [============================] 100%2018-11-23T04:34:53+00:00 
2018-11-23T04:34:53+00:00 Repair step: Drop old background jobs
2018-11-23T04:34:53+00:00 Repair step: Remove getetag entries in properties table
2018-11-23T04:34:53+00:00 Repair info: Removed 0 unneeded "{DAV:}getetag" entries from properties table.
2018-11-23T04:34:53+00:00 Repair step: Repair outdated OCS IDs
2018-11-23T04:34:53+00:00 Repair step: Repair invalid shares
2018-11-23T04:34:53+00:00 Repair step: Remove old share propagation app entries
2018-11-23T04:34:53+00:00 Repair step: Move user avatars outside the homes to the new location
2018-11-23T04:34:53+00:00 Repair step: Remove shares of a users root folder
2018-11-23T04:34:53+00:00 Repair step: Repair unmerged shares
2018-11-23T04:34:53+00:00 Repair step: Disable extra themes
2018-11-23T04:34:53+00:00 Repair step: Repair sub shares
2018-11-23T04:34:53+00:00 Starting code integrity check...
2018-11-23T04:35:10+00:00 Finished code integrity check
2018-11-23T04:35:10+00:00 Update successful
2018-11-23T04:35:10+00:00 Maintenance mode is kept active
2018-11-23T04:35:10+00:00 Reset log level

最後から三行目に「Update succesful」とあるが、しかし二行目にあるように「Maintenance mode is kept active」となっている。ブラウザでの表示も以下のままだ。

これはmaintenance:modeコマンドで解除する。

sudo -u apache ./occ maintenance:mode --off

するとブラウザは以下の画面になる。

ログインしてみると、やっと以下の表示になる。

まとめ

相当に四苦八苦したのだが、結局のところ以下である。

引き継ぐべき旧バージョンのデータ

rpmでのインストールの場合には以下になる。

  • MySQLを使用したので、そのデータベース
  • /var/lib/owncloud/dataにあるデータ
  • /etc/owncloud/config.phpの設定ファイル
  • /etc/httpd/conf.d/内に作成されていたhttpd設定ファイル

新バージョンowncloudの解凍と設定

適当な場所に解凍する、するとconfigディレクトリの中にconfig.sample.phpがあるのだが、これは無視してよい。先の旧バージョンのconfig.phpをコピーして、適当に変更する。

更新の実行と存在しないアプリのdisable

 sudo -u apache ./occ upgrade

で更新を実行する。

「アプリが無い」と言われたら、インストールするか(やり方不明)、disableする。以下のようにする。

sudo -u apache ./occ app:disable activity

アプリが見つからないうちは更新されないので、再度upgradeを行う。「Update successful」と出たら、以下でメンテモードをOFFにする。

sudo -u apache ./occ maintenance:mode --off

データディレクトリの移動に注意

データディレクトリを移動する場合には、データベースの内容も更新しないといけない。

ownCloudのデータディレクトリ移動に注意を参照のこと。