DropBoxを企業単位で使おうと思った時に、1ユーザー当たり毎月¥1,500掛かってしまうのはスタートアップ企業にとっては痛い出費ですよね。
というわけで、EC2とS3というAWSの素晴らしいサービスをつかって、DropBoxのようなオンラインストレージサービスを構築してみることにしました。
使うのはownCloudというWebアプリーケーションです。
EC2にサーバーを立てる
まずは、AWS マネジメントコンソールのサービスからEC2を選択し、EC2の管理画面から[ナビゲーション]->[キーペア]->[キーペアの作成]
よりキーペアを作成してください。
次に、AWS marketplaceにあるownCloud powered by owncloud.jpにアクセスすると、インストール画面が表示されるので、Continueボタンを押してください。
すると、こんな起動設定画面が表示されます。
ここで注意してほしいのが、最新のver.8.1をダウンロードするとハマります。
必ずver.8.0を選択してください(2015/07/28現在)。
Regionは東京リージョン、インスタンスタイプはとりあえずt1.micro
にします。
Key Pairは、先ほど作成したキーペアを設定しておきます。
そして、Launch with 1-Clickのボタンを押すとEC2インスタンスが作成されます。
あとは起動したインスタンスに割り当てられたパブリックDNS(ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.comみたいなの)にアクセスするだけでownCloudのログイン画面が表示されます。
ID/PASSはそれぞれ、admin/EC2のインスタンスIDでアクセスできます。
実はこれだけでオンラインストレージサービスがEC2上に構築できています。
ただし、このままではownCloudのメニューにある管理ページで下記の警告が表示されたままになっていたり、S3を使えていなかったりします。
なのでもう少しだけ設定していきます。
EC2をセットアップする
marketplaceのownCloudは設定が足りていないので、初期設定をします。
# yumを最新に更新
yum update -y
# remiのレポジトリ追加
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6.rpm
# 日本時間に変更
sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
# 日本時間になっているか確認
date
# 日本語設定に変更
vi /etc/sysconfig/i18n
# 起動時のタイムゾーンを日本時間に変更
vi /etc/sysconfig/clock
- LANG=en_US.UTF-8
+ LANG=ja_JP.UTF-8
- ZONE="UTC"
+ ZONE="Asia/Tokyo"
SSLを設定する
さすがにhttpはマズイかなーと思うので、こちらを参考にオレオレSSLを設定します。
# mod_sslではなくmod24_sslをインストールすることに注意
yum -y install mod24_ssl
openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
cd /etc/httpd/conf
mkdir ssl.crt
mkdir ssl.key -m 700
mv /root/server.crt ssl.crt/
mv /root/server.key ssl.key/
chmod 400 ssl.key/server.key
vi /etc/httpd/conf.d/ssl.conf
- #DocumentRoot "/var/www/html"
- #ServerName www.example.com:443
+ DocumentRoot "/var/www/html/owncloud"
+ ServerName www.example.com:443
- SSLCertificateFile /etc/pki/tls/certs/localhost.crt
+ SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
- SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
+ SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
PHPのdefault_charsetをUTF-8にする
php.iniのdefault_charsetがコメントアウトされているので、コメントを外します。
vi /etc/php.ini
service httpd restart
- ;default_charset = "UTF-8"
+ default_charset = "UTF-8"
これで先ほど出ていた警告はすべて消えているはずです。
IAMユーザーを作成する
IAMとはAWSにおけるユーザーとそのアクセス権限を管理できるサービスなのですが、今回はownCloud用のユーザーを作成します。
AWS マネジメントコンソールのサービスからIAMを選択すると、IAMの管理画面が表示されるので、[ナビゲーション]->[ユーザー]->[新規ユーザーの作成]
よりユーザーを作成してください。
作成後は必ず 認証情報のダウンロード をしておいてください。
次に、作成したユーザーに権限を付与します。
IAMユーザー一覧で作成したユーザーをクリックすると、ユーザーの設定が可能になります。
[ポリシーのアタッチ]より、今回はAdministratorAccessを付与します(とりあえず)。
S3にバケットを作成する
AWS マネジメントコンソールのサービスからS3を選択するとバケット一覧が表示されるので、[バケットを作成]よりownCloud用のバケットを作成してください。
外部ストレージにS3を指定する
あとはownCloudにログインし、右上のメニューから管理ページに進み、外部ストレージの設定をすればOKです。
アクセスキー、シークレットキーはIAMでユーザーを作成した際にダウンロードした認証情報内に書かれているものを、またバケット名はさきほどS3で作成したものを設定してください。
緑ランプがつけば正しく設定できています。
あとはownCloudにファイルをアップしてS3にそのファイルが反映されていれば、すべての設定および確認作業は完了です!
まとめ
簡易的に説明しているので、他にも設定しなければいけないことはたくさんあります。
Elastic IPを使ってIPを固定化したり、IAMの権限を制限したりだとか。
ただ、ある程度使いこなせてきてからでも十分変更可能な内容ではあるので、ぜひ導入を検討してみてはどうでしょうか。
あと、ownCloudのデスクトップアプリを使えば、DropBoxのようにフォルダをマウントしてくれるので、各人のPCにインストールしておくといいかもです。