ownCloud 9.xでサーバ上のディレクトリをWebから見る方法

  • 1
    いいね
  • 0
    コメント

オレオレGyazoのWebインターフェースをownCloudで済まそうと思ったときに困ったが解決したので投稿。ownCloudでシンボリックリンクとかcifsマウントしたかった人にも役に立つかも。

環境

Ubuntu Server 16.04 LTS
Nginx 1.10.2
ownCloud 9.1.1 Beta

結論

ownCloudのローカルマウント機能を使う。

ownCloudにログインし、管理画面を開く。外部ストレージの設定画面から任意のディレクトリを追加。
0dc819dd501befb63bd4f59a3f6ec3d8.png
フォルダ名にはownCloudに表示させたい名前、設定にはローカルディレクトリのフルパス、利用可能には許可するユーザを指定。

Webサーバが見れるようにパーミッション設定をする。
下記は/home/nginx/LHSをローカルディレクトリとして設定したときのコマンド。
bash
$ sudo chown -R nginx:nginx /home/nginx/LHS
$ sudo chmod -R 750 /home/nginx/LHS

chown -Rでディレクトリの所有者を変更
chmod -Rでディレクトリのパーミッションを変更

模索

最初はシンボリックリンクを使用してオレオレGyazoのアップロードディレクトリを見えるようにすればいいだろうと思っていたが、ownCloud8以降からシンボリックリンクが無効になっているとのこと。

tkamada_の日々: OwnCloud 8でシンボリックリンクを有効にする方法

自分自身は、Gyazoの画像を見れればそれで良かったので、GyazoのアップロードディレクトリをownCloudの/data/user/以下に設置したが、それもWebインターフェイスから見ることができなかった。

どうやら、以前のownCloudでは、シンボリックリンクもマウントもすべて有効だったようだが、ownCloud9.xではただ単にdataディレクトリ内をWebインターフェイスで見せているわけではなく、ファイルキャッシュを持っていて、それをまず参照しているらしい。

ファイル一覧はまずそのファイルキャッシュを見て表示されるため、実際のディレクトリにファイルが存在していようがファイルキャッシュに存在していなければWebインターフェイスからは見えない。

見えるようにする(ファイルキャッシュを更新する)には下記コマンドでディレクトリをスキャンしなければならない。

# sudo -u nginx /var/www/html/owncloud/occ file:scan user

sudo -u nginx 実行ユーザを指定 ここではnginxを使用。apache(ubuntu)の場合はwww-data。
/var/www/html/owncloud/occ occの場所。コマンドラインでownCloudを操作できる。
file:scan user ファイルのスキャンをuserで行うコマンド。userはownCloudのアカウント。

このコマンドで、ownCloudのdata/user/files以下の変更をownCloudに知らせることができる。
ただし、今回の目的はGyazoのWebインターフェースなので変更をすぐに確認できないこの方法はなし。

解決

フォーラムに頼ったところ、超速で回答をもらえた。外人さんありがとう。
How to see changes in Data directory on ownCloud 9.x

「ownCloudのWebインターフェースを使わないでファイルを読みたいならownCloudのマウントでサーバ上の任意ディレクトリを使用すればいいよー。」とのこと。
おそらく、このマウント機能を使用したディレクトリにはファイルキャッシュは無く、アクセスの都度ディレクトリを見に行ってくれるのだろう。

私はこのディレクトリにSMBをマウントして不安定なownCloudのcifsの代わりにしている。

感想

バージョンアップに伴い、今までの方法で目的を完遂させることができなくなったりすることはよくあること。今回もownCloud9.xではファイルの扱いが大きく変わっていて、今までの情報では解決できなかった。

なにかわからないことがあったらTwitterにどうぞ。
@Fi9c