owncloudとは
owncloudは自分のサーバ上にdropboxのようなクラウドファイル同期環境を実現するオープンソースソフトウェアです。
クラウドストレージサービスはすでにDropboxなどが定番でしょうか。しかし、デフォルトの容量が2GBと少なく、いろいろ頑張って無料範囲内で増量しても、せいぜい10GB。ですので
に、おすすめです。
今回はowncloud6.0.1をさくらのVPSに入れてみました。
環境
LAMP環境をすでに構築してあるものとします。
さくらVPSにLAMP環境を構築する手順は過去記事を参考にどうぞ。
準備
MySQL
owncloudは管理のためにDBを利用します。v6.0.1ではMySQLかSQLiteを選択できるので、ここではMySQLを選択します。
owncloud用のDBを作成し、owncloud用のユーザを作成します。
mysql> create database owncloud character set utf8; mysql> grant all privileges on owncloud.* to 'owncloud'@'localhost' identified by '【パスワード】' with grant option; mysql> flush previleges;
Apache
/etc/httpd/conf.d/owncloud.conf
を新規作成し、
<Directory /var/www/html/owncloud/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
と入力して保存。
owncloudインストール
cd /etc/yum.repos.d/ wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-6/isv:ownCloud:community.repo yum install owncloud
デフォルトでowncloudは/var/www/html/owncloud
にインストールされます。rootユーザでファイルが生成されているとあかんので、apacheユーザにしておきます。
chown -R apache:apache /var/www/html/owncloud
Apacheを再起動します。
service httpd restart
owncloudへのアクセス
http://host.your.domain/owncloud
初期設定画面が表示されたら、インストールは完了です。
トラブルシューティング
手元のマシンからMySQL DBへ接続できない
リモート(たとえば手元のMacBook Pro)から、すべてのDBにアクセスできるDBユーザを作成済みで、正しいユーザ名とパスワードであるにもかかわらず、接続できない。
原因
ファイアウォールでMySQLのポートへの接続が制限されているかも。
解決策
iptablesに下記を追加します。
-A INPUT -p tcp --dport 3306 -j ACCEPT -A INPUT -p tcp --sport 3306 -j ACCEPT
iptablesを再起動します。
service iptables restart
owncloudにログインしようとするとリダイレクトループでログインできない
解決策
セッションファイルの所有者を確認します。
CentOS 6.5の場合、PHPのセッションファイルはデフォルトで/var/lib/php/session
下に保存されるので、所有者をapacheの実行ユーザに変更する。
chown -R apache:apache /var/lib/php/session
原因
たぶんこのハマり方したのは自分だけのような気が…。
owncloud redirect loop
でググると、海外のフォーラムはよくひっかかる。それぞれ原因は異なるように見え、解決策を見つけることはできず。
うーん…と悩みつつ、あらためてコマンド履歴を振り返ると、owncloudのアクセス中にhttpd.conf
を編集した形跡が…!
思い出しました。owncloudインストール後に、Apacheの実行ユーザとグループをhoge
に変えていたことを。
つまりこんなことが起きてました。
- Apacheの実行ユーザが
apache
の状態で、owncloudにログイン /var/lib/php/session
下に、所有者apache
でセッションファイルが生成される- owncloudにログイン中(=セッション有効中)に
httpd.conf
を開き、Apacheの実行ユーザをhoge
に変更 - Apache再起動
- ブラウザからowncloud利用しようとするとログイン画面へ飛ばされる
- ログイン画面で正しいユーザID/パスワードを入力する
- ログイン情報は正しいのでログインしようとするが、セッションファイルを生成するディレクトリの所有者が
apache
なので、生成できない - ここでリダイレクトループ発生?
完全におばかさんでした。 Apacheの実行ユーザはよく考えて、最初に決めましょう。