[DevOps][Docker] DropBoxのような環境を構築できるOwnCloudをDockerで動かす

By |1月 28, 2014|AWS, DevOps, |


Docker便利ですね。Dockerってなに?という方は[GCE][DevOps][Docker] Google Compute EngineでDockerを試すをご覧ください。

さて、実際Dockerを何か役に立つことに使ってみたいな、ということで個人でも(ゆるい)会社でも必要になる「ファイル共有」をDockerを使ってAWS上にサクっと構築したいと思います。

まずEC2でDockerが既にあるとします(この辺は割愛します)DockerはホストOSが仮想か否か問わないので手元にある物理サーバでも、共有サーバでもVPSでもDocker環境を構築できるサーバであれば何でも構いません。

今回はOwnCloudという自前でDropBoxのような環境を構築できるツールをLAMP環境が既に構築されたコンテナにインストールします。

※以降の設定を完了しOwnCloudがすぐ動くコンテナは https://index.docker.io/u/joeartsea/owncloud/ のリポジトリに公開しています。Dockerはこういうgithubっぽいことができるので便利!

それではホストOS上で以下を実行し公開されているLAMP環境コンテナを落としつつ実行します(-p: ポートは任意で変えてください)

[html]
$ sudo docker run -i -t -d -p 80:80 dockerfiles/centos-lamp /bin/bash
c637046d2982375102ee36d4dd9d81a53e5d3eeff3e94b16dac1afd2b034c9a1
[/html]

立ち上がったようです。プロセスを確認します。

[html]
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c637046d2982 dockerfiles/centos-lamp:latest /bin/bash 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, 22/tcp
[/html]

動いてますね。ではattachしてコンテナに入ります(何も表示されない場合はログイン後に一度エンターを押してみてください)

[html]
$ sudo docker attach c637046d2982
bash-4.1#
[/html]

ログインできましたので、とりあえずApacheを起動してみます。

[html]
bash-4.1# service httpd status
httpd is stopped
bash-4.1# service httpd start
Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.4 for ServerName
[ OK ]
[/html]

フォワードしたポートにアクセスして以下のように表示されれば問題ありません。表示されない場合、まずはファイアウォール関係を疑ってください。

次にOwnCloudをダウンロード&展開し公開ディレクトリへ移動します。

[html]
bash-4.1# wget http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2
bash-4.1# bzip2 -dc owncloud-6.0.1.tar.bz2 | tar xvf –
bash-4.1# mv owncloud/* /var/www/html/
[/html]

これでアクセスしてみるとPHPのmbstringがないというエラーメッセージが表示されましたのでyumでインストールしてApacheを再起動します。

[html]
bash-4.1# yum install -y php-mbstring
bash-4.1# service httpd restart
[/html]

これでどうだ!…今度はdataディレクトリを作れないと…/var/www/htmlの権限系をいじります。

[html]
bash-4.1# chown -R apache:apache /var/www/html
bash-4.1# chmod 0755 /var/www/html
[/html]

これで…今度はdataディレクトリは作れたけど、その中の.htaccessが動いてないよというエラーです…httpd.confを編集してApacheを再起動します。

[html]
bash-4.1#vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* — "Options All"
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All ←NoneからAllに変更
#
bash-4.1# service httpd restart
[/html]

やっと動きました…セットアップ画面になると思います。ひとまずDBはたいしたことしないと思うのでデフォルトのSqliteで良いと思います。その場合はアドバンスト設定する必要はありません。

デフォルトのユーザ名とパスワードを入力してセットアップボタンをクリックしてください。これで以下のようにログイン状態が表示されると思います。

日本語化するには右上の自分のユーザ名をクリックして「Personal」メニューから変更できます!

OwnCloudを使ってS3をDropboxのように使うパッケージもあるみたいですよ!