うっかりエンジニアのメモ

未来の自分に宛てたメモ

さくらVPSにowncloudをインストール

owncloudとは

owncloudは自分のサーバ上にdropboxのようなクラウドファイル同期環境を実現するオープンソースソフトウェアです。

クラウドストレージサービスはすでにDropboxなどが定番でしょうか。しかし、デフォルトの容量が2GBと少なく、いろいろ頑張って無料範囲内で増量しても、せいぜい10GB。ですので

  • メジャーなクラウドストレージサービスでは足りない人
  • 諸事情でDropboxにはつなげられないけどクラウドでファイル同期したい人

に、おすすめです。

今回はowncloud6.0.1をさくらのVPSに入れてみました。

環境

LAMP環境をすでに構築してあるものとします。

さくらVPSLAMP環境を構築する手順は過去記事を参考にどうぞ。

準備

MySQL

owncloudは管理のためにDBを利用します。v6.0.1ではMySQLSQLiteを選択できるので、ここでは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の実行ユーザはよく考えて、最初に決めましょう。