アプリケーションで大容量のファイルを扱う必要がある場合にS3をマウントして使用するための設定です。S3をファイルシステムとしてマウントするにはs3fsとs3fsが使用しているFUSE(Filesystem in Userspace)が必要になります。
使用したインスタンスのイメージですが、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』を使用しました。
[2013.01.16追記]
Amazonの堀内さんとEC2からのS3の利用について少し話をさせてもらったところ、s3fsなどは使わずにAPIを利用することをお勧めされてました。アップロードしたファイルをAPIでS3に保存して、そのAPIから返ってきたS3のURLをDBに保存していくのがベストだということです。(記事:AWS SDK2 for PHPを使ってS3にファイルをアップロードする)
管理者になる
使用したインスタンスのイメージですが、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』を使用しました。
[2013.01.16追記]
Amazonの堀内さんとEC2からのS3の利用について少し話をさせてもらったところ、s3fsなどは使わずにAPIを利用することをお勧めされてました。アップロードしたファイルをAPIでS3に保存して、そのAPIから返ってきたS3のURLをDBに保存していくのがベストだということです。(記事:AWS SDK2 for PHPを使ってS3にファイルをアップロードする)
管理者になる
インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -
ライブラリのインストール
FUSE に 必要なライブラリをインストールします。既にインストール済みのものがあれば除いてください。
#yum -y install gcc-c++
#yum -y install make
#yum -y install openssl-devel
#yum -y install curl-devel
#yum -y install libxml2-devel
FUSE のインストール
FUSE はバージョン2.8.5をソースからコンパイルしてインストールします。
#cd /usr/local/src
#wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
#tar xzvf fuse-2.8.5.tar.gz
#cd fuse-2.8.5
#./configure
#make
#make install
FUSEの設定
インストールしたFUSEの関連モジュールを読み込むための設定をします。
#echo /usr/local/lib >> /etc/ld.so.conf
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
#ldconfig
s3fsのインストール
s3fsをインストールします。いろいろバージョンがありますが、この記事を書いている時点では、s3fs-r203.tar.gzでないとうまくいきませんでした。
#cd /usr/local/src
#wget http://s3fs.googlecode.com/files/s3fs-r203.tar.gz
#tar xzvf s3fs-r203.tar.gz
#cd s3fs
#make
#make install
s3fsの設定
設定ファイルを作成します。AWSへのアクセスキーとセキュリティキーをコロンで区切って記述して保存します。
#vi /etc/passwd-s3fs
accesskey:securetkey
S3をマウントする
今回はS3のs3-bucket-nameとバケットを/s3ディレクトリにマウントします。
#cd / #mkdir s3 #modprobe fuse #s3fs s3-bucket-name /s3 -o allow_other,default_acl=public-read
次回起動時のためにfstabにも記載しておきます。
#vi /etc/fstab
/usr/bin/s3fs s3-bucket-name /s3 fuse allow_other,default_acl=public-read 0 0