s3fsを使う

ブログ書くのひさしぶりですが、自分の備忘録です。
s3fsを使うのと、ApacheのDocumentRootにするのをCloudPackの後藤さんが出来たといってたので
それに便乗して僕もやってみる。ていうかやってみたい。

OSはUbuntuで。

インストール

まずは前準備。

sudo aptitude update
sudo aptitude install build-essential libcurl4-openssl-dev libxml2-dev libfuse-dev comerr-dev libfuse2 libidn11-dev libkadm55 libkrb5-dev libldap2-dev libselinux1-dev libsepol1-dev pkg-config fuse-utils

本体のインストール
なんだか最新のでは動かなかった(おそらくFUSEのバージョン問題)ので、
少し古いバージョンでインストール。

wget http://s3fs.googlecode.com/files/s3fs-1.19.tar.gz
tar xvzf s3fs-1.19.tar.gz
cd s3fs-1.19/
sudo ./configure
sudo make
sudo make install

確認。

ubuntu@hoge-ubuntu:$ which s3fs
/usr/local/bin/s3fs

設定

/etc/fuse.confでFUSE側の設定。

# Set the maximum number of FUSE mounts allowed to non-root users.
# The default is 1000.
#
#mount_max = 1000

# Allow non-root users to specify the 'allow_other' or 'allow_root'
# mount options.
#
user_allow_other

ここはお好みで。
次にpasswd-s3fsを作成する。これは/etcかユーザのホームディレクトリに.passwd-s3fsとして作成しても可能のよう。
今回は/etc/passwd-s3fsを作成。中身はアクセスキー:シークレットキーというフォーマット。
passwd-s3fsは適切な権限でみえるようにしておくこと。

マウントポイントの作成とマウント

試しにApacheのDocumentRootでアクセスさせようとしてるのでユーザをwww-dataにしておく。

sudo mkdir /mnt/s3
sudo chown www-data:www-data /mnt/s3

s3fsでマウント。
use_cacheとかdefault_aclなんかのオプションなどは適宜つける感じで。

sudo -u www-data /usr/local/bin/s3fs YOUR_BUCKET /mnt/s3 -o allow_other

とりあえずこれで機能する。
あとはApache側の設定でDocumentRootを/mnt/s3にした後に、ためしにindex.htmlをコピーしてみてみる。

sudo -u www-data cp -p /var/www/index.html /mnt/s3/index.html

でhttpアクセスする、と。ここまででとりあえずうまくいった。
あとはfstabなりinitスクリプトで自動マウントするようにすればよい。

しかし、自分でインストールして思ったがどうもやや安定していないところがあったので
そこはまた今度追求にしときます。

P.S.そうそう思い出した。Macからsshして、s3fsでmountすると何故かリモートログインから出されてしまうっていうのがありました。なんだろう。。。