前回の『Mac に Docker インストールしてみた』の続きです。 実際に Nginx + PHP + MySQL 環境を構築するにあたって、今回は Nginx コンテナを起動させて、静的コンテンツの表示までを行いたいと思います。 Docker Machine の起動 前回から、PC をシャットダウンしたり、再起動している場合は、もう一度 Docker Machine を起動させなければいけないので、下記のコマンドで起動させてください。(それ以外の方は次の『Nginx コンテナを起動させる』から読んでください) $ docker-machine start dev-machine Starting "dev-machine"... (dev-machine) Waiting for an IP... Machine "dev-machine" was started. Waiting for SSH to be available... Detecting the provisioner... Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command. 前回と同じ手順を踏んで、Docker Machine に接続できるようにしていきます。 $ docker-machine env dev-machine export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.

Read more →

Docker + Docker Machine のインストール まずは、Docker 本体と Docker Machine をインストールします。 Mac だと Docker を直接的に実行できないのですが、Docker Machine を使用すると、一旦VM上で CoreOS や boot2docker を実行して、その上で簡単に Docker を実行できるようになります。 インストール自体はどちらも Homebrew で簡単にインストールすることができます。 $ brew install docker docker-machine Machine の作成 docker-machine コマンドで新しく Machine を作成します。 $ docker-machine create -d virtualbox dev-machine ・・・(省略) Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env dev-machine 上記の dev-machine の部分は Machine の名前になるので、好きな名前をつけてかまいません。

Read more →

はじめに 今まで Jenkins を使う機会はたくさんあったのですが、インストールや設定周りなどをやったことがなかったので、今回 CentOS 6.7 に実際にインストールして軽く触ってみました。 Java をインストールする Jenkins は Java で書かれているので、まずは Java をインストールします。 $ sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel Java がちゃんとインストールできているか確認します。 $ java -version openjdk version "1.8.0_71" OpenJDK Runtime Environment (build 1.8.0_71-b15) OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode) Jenkins のインストール Java のインストールが確認できたので、Jenkins のインストールに入っていきます。 まずは、Jenkins のレポジトリを追加します。 $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key Jenkins のレポジトリを追加できたので、Jenkins をインストールします。 $ sudo yum install jenkins Jenkins の起動 Jenkins のインストールが完了したので、起動させます。

Read more →

はじめに SQLアンチパターンという本を読んでいたら、再帰的なデータに対して『閉包テーブル(Closure Table)』という考え方があっったので、MySQL 5.6 で試してみました。 再帰的なデータとは、例えば上司を1人までもつことができ、部下は複数持つことができる、下記の組織図のようなツリー構造のデータのことを指します。 テーブル作成 それでは早速テーブルを作成してみましょう。 CREATE TABLE `Employees` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `TreePaths` ( `ancestor` bigint(20) NOT NULL, `descendant` bigint(20) NOT NULL, PRIMARY KEY (`ancestor`,`descendant`), KEY `descendant` (`descendant`), CONSTRAINT `TreePaths_ibfk_1` FOREIGN KEY (`ancestor`) REFERENCES `Employees` (`id`), CONSTRAINT `TreePaths_ibfk_2` FOREIGN KEY (`descendant`) REFERENCES `Employees` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 閉包テーブルでは、Employees テーブルに自分自身の id を親に持つカラムを設けるのではなく、別のテーブルを用いて、ツリー構造の情報を格納します。

Read more →

Elasticsearch とは Elasticsearch とは2010年に OSS としてリリースされた分散型全文検索サーバです。 実際に CentOS 6.7 にインストールしてつかってみることで Elasticsearch の基本を学んでいきたいと思います。 前回の記事で設定した内容をそのまま使用するので、まだ見てない方はぜひ参照してみてください。 Elasticsearch のインストール Elasticsearch は Java で実装されているので、まずは Java をインストールします。 $ sudo yum install -y java インストールできているか確認します $ java -version openjdk version "1.8.0_65" OpenJDK Runtime Environment (build 1.8.0_65-b17) OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode) Elasticsearch を yum でインストールするので、レポジトリのGPGキーをインストールします sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch レポジトリを追加します。 /etc/yum.repos.d/elasticsearch.repo [elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=http://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1 yum でインストールします。

Read more →

fluentd とは fluentd とはTreasure Dataという会社が開発している、さまざまなログの収集手段を提供するログ管理ツールです。 今回は CentOS 6.7 で実際にインストールしてつかってみることによって基本的な設定を学んでいきたいと思います。 td-agent をインストール td-agent ? となるかと思いますが、td-agent には以下のものが同梱されています。 Ruby コアライブラリ fluentd とプラグイン つまり、ad-agent の中に fluentd が入っていて、プラグインなども一緒に入っているので、通常は td-agent をインストールします。 インストールにあたっては公式にインストールスクリプトが公開されているので今回はそちらをつかってインストールします。 $ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh 起動は次のコマンドでできます。 $ sudo /etc/init.d/td-agent start 設定ファイルの編集 それでは設定ファイルを編集してみましょう。 まずは、ログ収集の設定を行います。なお、デフォルトの設定はすべて削除してしまって問題ありません。 /etc/td-agent/td-agnet.conf <source> # 入力に in_tail プラグインを指定 type tail # 監視するログファイルのパスを指定 path /var/log/httpd/access_log # ログにつけるタグを指定 tag apache.access # 監視するファイルをどの行まで読み込んだかを記録するファイルの指定 pos_file /var/log/td-agent/httpd-access_log.pos # ログの書式を指定 format apache2 </source> 次に上記の記述の下にログ出力の設定を追記していきます。

Read more →

Gooseとは GooseとはGo言語で作られたDBマイグレーションツールです。 develop環境やproduction環境など各環境に簡単に設定を変更でき、かなり便利そうなので実際にMySQLで試してみました。 Gooseパッケージの取得 まずは go get して Goose パッケージを取得します。 ※ Goをインストールしていない人や、GOPATHを設定していない人は公式ドキュメントを参考に導入してみてください。 $ go get bitbucket.org/liamstask/goose/cmd/goose dbディレクトリの作成 プロジェクトのルート直下に db ディレクトリを作成します。 $ mkdir db configファイルの作成 取得したGooseパッケージのサンプルからconfigファイルをコピーします。 $ cp $GOPATH/src/bitbucket.org/liamstask/goose/db-sample/dbconf.yml db/ configファイルの編集 まずは先ほどコピーしてきたconfigファイルの中身をのぞいてみます。 デフォルトで test / develop / production のそれぞれの環境に PostgreSQL の driver が設定してあるのが、なんとなくわかるかと思います。 db/dbconf.yml test: driver: postgres open: user=liam dbname=tester sslmode=disable development: driver: postgres open: user=liam dbname=tester sslmode=disable production: driver: postgres open: user=liam dbname=tester sslmode=verify-full customimport: driver: customdriver open: customdriver open import: github.

Read more →