<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>tjun memo</title>
	<atom:link href="http://tjun.jp/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://tjun.jp/blog</link>
	<description>面白いこと探してます。</description>
	<lastBuildDate>Thu, 17 May 2012 14:29:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/feed/" />
		<item>
		<title>さくらVPSでシングルユーザモードに入る</title>
		<link>http://tjun.jp/blog/2012/05/sakuravps_singleusermode/</link>
		<comments>http://tjun.jp/blog/2012/05/sakuravps_singleusermode/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:19:43 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[さくらvps]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1131</guid>
		<description><![CDATA[さくらVPSを利用していて、少し前に障害に伴ってOSの再起動がありました。 そしたら起動できなくなっちゃって、さくらVPSのサポートに問い合わせたところ、シングルユーザモードで起動する方法を教えてもらいました。 設定が何 [...]]]></description>
			<content:encoded><![CDATA[<p>
さくらVPSを利用していて、少し前に障害に伴ってOSの再起動がありました。<br />
そしたら起動できなくなっちゃって、さくらVPSのサポートに問い合わせたところ、シングルユーザモードで起動する方法を教えてもらいました。<br />
設定が何か間違っていて、マシン再起動時に立ち上がらないときは、シングルユーザモードで立ち上げて、問題の解決ができることがあります。<br />
<br />
教えてもらったのはデフォルトのCentosの場合の方法で、カスタムOSは出来るかわかりません、ということでした。<br />
自分はUbuntuなので、同じ方法ではうまく行かず、いろいろやったところ最終的には動いたけど結構はまりました。<br />
<br />
<br />
※ 真似する場合は自己責任でお願いします。<br />
<br />
<h3>まずCentosの方法</h3>
<br />
※ シングルユーザモードは「標準OS」をご利用いただいている場合の<br />
  操作方法のみのご案内となります。<br />
　カスタムOSの場合、OSのインストール方法により内容が異なります<br />
  ため弊社ではご案内しておりません。<br />
※ シングルユーザモードによるトラブルに関して、弊社では一切責任を<br />
　負いかねます。<br />
<br />
＜シングルユーザーモード＞<br />
<br />
1.VPSコントロールパネルのホームを開き、再起動ボタンを押す。<br />
<br />
2.すばやく、リモートコンソールボタンを押し、以下の画面で<br />
　Enterキーを押す<br />
<pre>
　Connected to domain www****u.sakura.ne.jp
　Escape character is ^]
</pre>
<br />
3.以下の画面で、更にEnterキーを押す。<br />
　※OSが起動してしまった場合は1.からやり直してください。<br />
　※2.の時から連続してEnterキー押下することでログインしやすくなります。<br />
<pre>
　Booting CentOS5 (2.6.**-***.**.*.***) in * seconds ....
</pre>
<br />
4.GRUBが起動します。<br />
<br />
　GNU GRUB  version 0.9*  (636K lower / 523244K upper memory)<br />
<br />
5.ご利用のカーネルに合わせます。<br />
　カーネルが複数表示される場合もございます。<br />
<br />
6.[e]キーを押して editモードへ入り、カーソルキーで以下の行に合わせます。<br />
<pre>
kernel /vmlinuz-2.*.**-***.**.*.** ro root=LABEL=/ console=tty0 cons>
</pre>
<br />
7.更に[e]キーを押して editモードへ入り、以下のように半角スペースと<br />
　半角数字の「1」を入力し、Enterキーでeditモードから抜けてください。<br />
<br />
　編集前<br />
　le=tty0 console=ttyS0,115200n8r<br />
<br />
　編集後<br />
　le=tty0 console=ttyS0,115200n8r 1<br />
<br />
8.GRUBの画面で[b]キーを押下しOSをリブートしてください。<br />
　OSの起動が終了するまでしばらく待ちます。<br />
<br />
9.以下の画面になれば、シングルユーザモードでログインされています。<br />
<pre>
　Telling INIT to go to single user mode.
　INIT: Going single user
　INIT: Sending processes the TERM signal
　INIT: Sending processes the KILL signal
　sh-3.2#
</pre>
10.root状態でログインされていますので、サーバ内の調査をお願い<br />
　 いたします。<br />
<br />
<br />
<br />
<h3> ubuntuの場合 </h3>
1.VPSコントロールパネルのホームを開き、再起動ボタンを押す。<br />
<br />
2.すばやく、リモートコンソールボタンを押し、以下の画面で<br />
　F1とかF3とかその辺のキーを押しまくる<br />
<pre>
　Connected to domain www****u.sakura.ne.jp
　Escape character is ^]
</pre>
3, うまくいくと以下のような画面になります。<br />
<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/QEMU1.jpg" alt="QEMU" title="QEMU.jpg" border="0" width="400" height="281" />
<br />
<br />
4, あとはrootでログインして、起動失敗している原因を調査します。<br />
<br />
<br />
<br />
自分の場合は、nginxの設定にあるディレクトリが、再起動で消えるディレクトリを設定してしまっていて起動に失敗しているのが原因でした。<br />
<br />
<br />
OS再インストールすることなく無事に復帰できたのでよかったです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/05/sakuravps_singleusermode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/05/sakuravps_singleusermode/" />
	</item>
		<item>
		<title>さくらVPSを512Mから1Gへ移行したメモ(ubuntu)</title>
		<link>http://tjun.jp/blog/2012/04/move_sakuravps_ubuntu/</link>
		<comments>http://tjun.jp/blog/2012/04/move_sakuravps_ubuntu/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 12:36:22 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[さくらvps]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1119</guid>
		<description><![CDATA[このブログはさくらVPSで動かしてます。 同じ料金で、メモリ512Mのマシンからメモリ1Gのマシンに乗り換えられるということで、乗り換えました。 ディスク容量も20Gから100Gと増えてお得。 そのときのメモです。 OS [...]]]></description>
			<content:encoded><![CDATA[<p>
このブログはさくらVPSで動かしてます。<br />
同じ料金で、メモリ512Mのマシンからメモリ1Gのマシンに乗り換えられるということで、乗り換えました。<br />
ディスク容量も20Gから100Gと増えてお得。<br />
<br />
そのときのメモです。<br />
<br />
<h3>OSのインストールまで</h3>
まず、契約します。<br />
<br />
最初はcentosが入ってるけど、今までubuntuで使ってたから、新しいサーバもubuntuにします。<br />
VPSコントロールパネルから、OS再インストール -> カスタムOSのインストール　というところでサーバを選択します。<br />
<br />
インストールを選ぶとVNSコンソールが開いて、そこからインストール画面にいきます。<br />
（pluginを有効にしないとVNSコンソールが開かず、結構はまりました。）<br />
<br />
<br />
インストーラは基本的には、適当に選んでいけばいいと思いますが、パーティション決めるところでは、<br />
* Guided use entire disk<br />
みたいなところを選ばないと、いつの間にかマシンのディスクが5Gしかないみたいなことになってハマるから注意<br />
<br />
インストールの最後の方で、ログインするユーザとパスワードを決めます。<br />
インストール終わったらログインしていろいろ設定します。<br />
<br />
<br />
<h3>ディスクサイズの確認</h3>
一度いろいろ設定したあとにディスクサイズが10Gくらいしか割り当てられてないっていうことがあったので、ちゃんと確認します。<br />
<pre>
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              96G  820M   90G   1% /
none                  498M  176K  497M   1% /dev
(以下略)
</pre>
今回はよさそう。<br />
<br />
<h3>とりあえず</h3>
とりあえず入れとくか、というものを入れる。<br />
<pre>sudo aptitude install vim screen zsh curl git-core build-essential</pre>
<br />
<h3>ssh関連の設定</h3>
rootログインを禁止して、パスワードでのログインも止めて、ポートも変えておきます。<br />
<br />
ローカルから公開鍵をscpでサーバへ。<br />
<pre>
(手元のpcで実行)
macbookair $ scp ~/.ssh/id_dsa.pub [username]@[ip]:
</pre>
<br />
vpsにログインして<br />
<pre>
$ mkdir .ssh
$ cat id_dsa.pub >> .ssh/authorized_keys
</pre>
<br />
これで、ログイン時にパスワードが聞かれないことを確認。<br />
<br />
次にsshサーバの設定。<br />
<pre>
$ sudo vim /etc/ssh/sshd_config
</pre>
<br />
<pre>
変えた箇所の例
Port 23456 などに変える 
PermitRootLogin no
PasswordAuthentication no
UsePAM no
</pre>
<br />
sshdの再起動<br />
<pre>
$ sudo service ssh restart
</pre>
<br />
<br />
<h3>ファイアウォールの設定</h3>
ubuntuはufwっていうのを使って設定します。<br />
<br />
今回は、さっき設定したsshと、あとでウェブサーバを立てるので80と443を開けて、他を閉じます。<br />
設定ミスるとログインできなくなるので気をつけて。<br />
<br />
今の状態を確認。<br />
<pre>
$ sudo ufw status
Status: inactive
</pre>
<br />
<pre>
sudo ufw default deny
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow <sshのport>
</pre>
<br />
ufwを有効にする。<br />
<pre>
sudo ufw enable
</pre>
<br />
<br />
<br />
他には、<br />
<ul>
<li>shellをzshにした</li>
<li>nginxとphp-fpmを入れてwordpressを動かした &#8211; <a href="http://tjun.jp/blog/2012/04/ubuntu-nginx-php-fpm-wordpress/">ubuntu10.04にnginxとphp-fpmを入れてwordpress動かす | tjun memo</a></li>
<li>余ったディスクをSparkleShareで使う &#8211; <a href="http://tjun.jp/blog/2012/04/sparkleshare/">さくらVPSにオレオレDropboxを作る | tjun memo</a></li>
</ul>
<br />
をやりました。<br />
<br />
そのあとDNSの切り替えをミスってて1日つながらなくなってた。<br />
<br />
<br />
<h3>関連するサイト：</h3>
<ul>
<li><a href="http://d.hatena.ne.jp/ymotongpoo/20120402/1333364114">さくらのVPSのプラン乗り換えをした &#8211; YAMAGUCHI::weblog</a></li>
</ul></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/04/move_sakuravps_ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/04/move_sakuravps_ubuntu/" />
	</item>
		<item>
		<title>ubuntu10.04にnginxとphp-fpmを入れてwordpress動かす</title>
		<link>http://tjun.jp/blog/2012/04/ubuntu-nginx-php-fpm-wordpress/</link>
		<comments>http://tjun.jp/blog/2012/04/ubuntu-nginx-php-fpm-wordpress/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 12:33:04 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[さくらvps]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1118</guid>
		<description><![CDATA[前の構成ではspawn-cgiを使っていたけど、php-fpmを使ったほうがいい、らしいのでそうします。 nginxやphp5が予め入っている場合は、一度uninstall してからの方がよいかもです。 レポジトリの追加 [...]]]></description>
			<content:encoded><![CDATA[<p>
前の構成ではspawn-cgiを使っていたけど、php-fpmを使ったほうがいい、らしいのでそうします。<br />
nginxやphp5が予め入っている場合は、一度uninstall してからの方がよいかもです。<br />
<br />
<h3>レポジトリの追加</h3>
<pre>
$ sudo aptitude install python-software-properties
$ sudo add-apt-repository ppa:nginx/stable
$ sudo add-apt-repository ppa:brianmercer/php5
$ sudo aptitude update
</pre>
<br />
<br />
<h3>インストール</h3>
<pre>
$ sudo aptitude install nginx
$ sudo aptitude install php5 php5-cgi php5-cli php5-mysql php5-gd php-apc php5-fpm
</pre>
<br />
<br />
<h3>php5-fpmの設定</h3> <br />
変更するファイルは２つあります。<br />
<br />
/etc/php5/fpm/php-fpm.conf<br />
<pre>
;変更箇所
;ログの場所を/var/log/php以下にする
error_log = /var/log/php/php5-fpm.log

;linuxなのでepoll指定
events.mechanism = epoll
</pre>
<br />
/etc/php5/fpm/pool.d/www.conf<br />
も編集<br />
<pre>
;同じサーバで動かすので、unix socketを使う
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/www.sock

;unix socket使えば必要ない気もするけど、ローカル以外から接続できないように。
listen.allowed_clients = 127.0.0.1

;slowログを出してみる
slowlog = /var/log/php/$pool.log.slow
request_slowlog_timeout = 2
request_terminate_timeout = 5
</pre>
他のパラメータは、あとで検討する。<br />
<br />
php5-fpmの起動<br />
<pre>
$ sudo service php5-fpm start
</pre>
<br />
<br />
<br />
<h3>nginxの設定</h3>
<br />
nginxは普通に設定すればいいですが、先程のphp5-fpmにunix socketで接続するため、<br />
<pre>fastcgi_pass   127.0.0.1:9000;</pre>
のようになっているところを、<br />
<pre>fastcgi_pass    unix:/var/run/php-fpm/www.sock;</pre>
に変更します。<br />
<br />
他の設定は以下のサイトなどを参考にやります。<br />
<ul>
<li><a href="http://kray.jp/blog/wordpress-tuning/">WordPressを100倍速くする！ MySQLの調整やnginx proxy cache | KRAY Inc</a></li>
<li><a href="http://sakuratan.biz/archives/4582">さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法（ベンチマーク付き） | さくらたんどっとびーず</a></li>
</ul>
<br />
<br />
<br />
以上です。<br />
nginxの設定が複雑でよく分からなくなっているでの、次回は、<br />
<ul>
<li><a href="http://cloudrop.jp/wordpress/more_tuning_on_nginx#toc-wordpress-conf">Nginxを使ったもう一歩進んだWordPressチューニング | cloudrop</a></li>
</ul>
にあるような設定を入れたいです。<br />
<br />
<br />
<br />
<h3>参考にしたサイト：</h3>
<ul>
<li><a href="http://www.justincarmony.com/blog/2011/10/24/setting-up-nginx-php-fpm-on-ubuntu-10-04/">Setting Up Nginx &amp; PHP-FPM on Ubuntu 10.04 | Justin Carmony</a></li>
<li><a href="http://blog.sanojimaru.com/post/18535554226/ubuntu10-04lts-nginx-php-fpm-wordpress-cakephp">Ubuntu10.04LTS+nginx+php-fpmでwordpressやCakePHPを動かす : blog.sanojimaru.com</a></li>
</ul></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/04/ubuntu-nginx-php-fpm-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/04/ubuntu-nginx-php-fpm-wordpress/" />
	</item>
		<item>
		<title>SparkleShareでさくらVPSにオレオレDropboxを作る</title>
		<link>http://tjun.jp/blog/2012/04/sparkleshare/</link>
		<comments>http://tjun.jp/blog/2012/04/sparkleshare/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 15:43:29 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[さくらvps]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1124</guid>
		<description><![CDATA[さくらVPSを同じお値段で移行して、サーバの容量にかなり余裕ができたので、それを使って自分専用Dropbox的なことをやってみようと思いました。 使うのは、SparkleShare というオープンソースのソフト。 インス [...]]]></description>
			<content:encoded><![CDATA[<p>
さくらVPSを同じお値段で移行して、サーバの容量にかなり余裕ができたので、それを使って自分専用Dropbox的なことをやってみようと思いました。<br />
<br />
<br />
使うのは、<a href="http://sparkleshare.org/">SparkleShare</a> というオープンソースのソフト。<br />
<br />
インストールは基本的には、上記サイトにあるようにやっていけば大丈夫です。<br />
<br />
<h3>クライアントのインストール</h3>
<br />
まずは、クライアントを入れます。<br />
<a href="https://github.com/hbons/SparkleShare/downloads">Downloads · hbons/SparkleShare</a>からダウンロードできます。<br />
自分は、mac版を入れて、Applicationsに入れました。他にもLinux版とWindows版のクライアントもあります。<br />
<br />
それを起動すると、以下のような画面でユーザ名とメールアドレスを入力します。<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/SparkleShare.jpg" alt="SparkleShare1" title="SparkleShare.jpg" border="0" width="540" height="364" />
<br />
で、最後まで進めます。<br />
<br />
すると、SparkleShare というディレクトリがホームフォルダにできています。<br />
その中に、keyが書かれたファイルが作られています。<br />
<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/SparkleShare-key.jpg" alt="SparkleShare key" title="SparkleShare-key.jpg" border="0" width="399" height="234" />
<br />
このファイルに書かれたkeyを後で使います。<br />
<br />
<br />
<h3>サーバ側の設定</h3>
サーバ側では、gitというユーザを作って、そのユーザでSparkleShareを利用することにします。<br />
<br />
以下のコマンドで、ユーザと、gitのプロジェクトと、.ssh以下のキーファイルを書くためのファイルの作成を行います。<br />
MyProject は他の名前でも大丈夫です。<br />
<pre>
sudo adduser ––disabled-password git
sudo git init ––bare /home/git/MyProject
sudo mkdir /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
</pre>
<br />
<br />
ここで作られたauthorized_keysのファイルに、先程クライアント側でできたkeyのファイルに書かれた文字列をコピーします。<br />
<br />
その後に、以下のコマンドを実行します。<br />
<pre>
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git
</pre>
<br />
以上で、サーバ側の設定は終わりです。<br />
<br />
<br />
<h3>クライアントにサーバの設定を追加する</h3>
サーバの設定が終わったら、そのサーバの情報をクライアントに追加します。<br />
まず、メニューバーにあるSparkleshareのアイコンをクリックして、 &#8220;Add Hosted Project&#8221; を選択します。<br />
<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/Skitch.jpg" alt="sparkleIcon" title="Skitch.jpg" border="0" width="144" height="46" />
<br />
で、そこに今のサーバのアドレスと、先程サーバ側で作ったプロジェクトへのpathを入力します。<br />
sshでデフォルトの22以外を使う場合は、以下のようにアドレスに続いてportを指定します。<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/SparkleShare3.jpg" alt="SparkleShare3" title="SparkleShare3.jpg" border="0" width="464" height="77" />
<br />
これで、今までの設定があっていれば、うまく設定が完了します。<br />
<br />
あとは、ファイルを~/SparkleShare/MyProjectに追加すれば、自動的にアップされます。<br />
<br />
<br />
他のマシンで共有する場合は、新しいマシンにクライアントを入れて、そのクライアントのkeyをサーバのauthorized_keysに追記して、クライアント側でサーバの設定を入力すれば、OKです。<br />
<br />
<br />
S3をバックエンドに持つDropboxのようなデータの冗長性はないですけど、サーバのディスクが余ってる人なら、Dropboxのような感覚で無料で使えるので試してみてもよいと思います。<br />
また、外部のサービスにはデータ置けないっていう会社の人も、LAN内のサーバで運用するなどすれば使えるかもしれません。<br />
<br />
<br />
<h3>関連しそうなサイト：</h3>
<ul>
	<li><a href="http://gihyo.jp/admin/serial/01/ubuntu-recipe/0210">Ubuntu Weekly Recipe：第210回　SparkleShareで自分専用のDropboxサービスを立ち上げる｜gihyo.jp … 技術評論社</a></li>
	<li><a href="http://www.nofuture.tv/linux/sparkleshare">SparkleShareメモ &#8211; nofuture.tv</a></li>
</ul>
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/04/sparkleshare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/04/sparkleshare/" />
	</item>
		<item>
		<title>stormのcluster環境のセットアップ&amp; storm UIを試す (後編1: １台で全て動かす)</title>
		<link>http://tjun.jp/blog/2012/04/storm-cluster-setup2-one/</link>
		<comments>http://tjun.jp/blog/2012/04/storm-cluster-setup2-one/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 12:01:34 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[storm]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1115</guid>
		<description><![CDATA[前回からだいぶ時間がたってしまいましたが・・・ 前編はこちら stormのcluster環境のセットアップ(centos) &#124; tjun memo Stormのことを知りたい、あるいは開発環境の設定やローカルモードでの実 [...]]]></description>
			<content:encoded><![CDATA[<p>
前回からだいぶ時間がたってしまいましたが・・・<br />
<br />
前編はこちら<br />
<ul>
	<li><a href="http://tjun.jp/blog/2012/01/storm-cluster-setup/">stormのcluster環境のセットアップ(centos) | tjun memo</a></li>
</ul>
<br />
Stormのことを知りたい、あるいは開発環境の設定やローカルモードでの実行を知りたい場合は、下記の記事を参照してください。<br />
<ul>
	<li><a href="http://tjun.jp/blog/2011/10/storm_intro/">twitterが発表したリアルタイム分散処理フレームワークStorm | tjun memo</a></li>
	<li><a href="http://tjun.jp/blog/2011/11/storm_eclipse/">EclipseでStormの開発環境を作る | tjun memo</a></li>
	<li><a href="http://tjun.jp/blog/2011/11/storm_localmode/">Stormをlocalmodeで実行する | tjun memo</a></li>
</ul>
<br />
<br />
前回はzookeeperやstormのインストールまで終わりました。<br />
今回は、１台の中で、nimbusやsupervisorを動かして、stormを使ってみます。<br />
<br />
<h3>Stormのクラスタの設定</h3>
<br />
stormの設定は、storm.yaml というファイルを作りますが、<br />
stormのサーバの設定用のstorm.yaml と、クライアントの設定用のstorm.yamlがあるので注意が必要です。<br />
サーバ用とは、stormを動かすための設定で、nimbusとsupervisorで通信したり、zookeeperとやりとりをするための設定です。<br />
クライアント用とは、stormにtopologyを投入する時に、workerはいくつにする、などの設定です。<br />
<br />
<br />
まず、server設定用を編集します。<br />
server用の設定は、Stormをインストールしたディレクトリを$STORM_HOMEとしたとき、$STORM_HOME/conf にあります。<br />
<pre>
$ vi /usr/local/storm-*.*.*/conf/storm.yaml
</pre>
<br />
zookeeperのIP, stormの一時ファイルの置き場、nimbus hostのIP, workerがどのポートを使うか(supervisor.slots.ports)、などを指定する必要があります。<br />
開けるポートの数は、動かすworkerの数以上である必要があります。<br />
とりあえず今回は<br />
zookeeper: 同じマシンで１台<br />
nimbus   : 同じマシン<br />
<br />
なので以下のような感じにします。<br />
<br />
<pre>
# storm.zookeeper.servers: 
# This is a list of the hosts in the Zookeeper cluster for your Storm cluster.
storm.zookeeper.servers:
- "127.0.0.1"
# - "localhost"
# - "127.0.0.1"

# If the port that your Zookeeper cluster uses is different than the default,
# you should set 'storm.zookeeper.port' as well.
# strom.zookeeper.port: 2181

# storm.local.dir: 
# The Nimbus and Supervisor daemons require a directory on the local disk
# to store small amounts of state (like jars, confs, and things like that).
# You should create that directory on each machine, give it proper permissions, 
# and then fill in the directory location using this config.
storm.local.dir: "/tmp/storm"

# java.library.path: 
# This is the load path for the native libraries that Storm uses (ZeroMQ and JZMQ).
# The default of "/usr/local/lib:/opt/local/lib:/usr/lib" should be fine for
# most installations, so you probably don't need to set this config.
# java.library.path:

# nimbus.host: 
# The worker nodes need to know which machine is the master in order to download
# topology jars and confs.
nimbus.host: "127.0.0.1"

# supervisor.slots.ports:
# For each worker machine, you configure how many workers run on that machine
# with this config. Each worker uses a single port for receiving messages, 
# and this setting defines which ports are open for use. If you define five ports here,
# then Storm will allocate up to five workers to run on this machine. If you define
# three ports, Storm will only run up to three. By default, this setting is configured
# to run 4 workers on the ports 6700, 6701, 6702, and 6703. 
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
</pre>
<br />
他にも設定できるパラメータはいくつかあります。<br />
デフォルトでは <a href="https://github.com/nathanmarz/storm/blob/master/conf/defaults.yaml">defaults.yaml</a>の値が使われます。<br />
<br />
storm.local.dirを実際に作っておきます。<br />
<pre>
$ mkdir /tmp/storm
</pre>
<br />
<h3>stormのクライアントの設定</h3>
stormのクライアント、stormクラスタに対してtopologyをsubmitする役割を持ちます。<br />
そのため、その設定にはnimbusのIP addressが必要です。<br />
<br />
stormのクライアントの設定は、<br />
~/.storm/storm.yaml<br />
に記述します。<br />
<br />
~/.storm.yaml<br />
<pre>
nimbus.host: "127.0.0.1"
</pre>
<br />
以上で設定は終わり。<br />
<br />
<h3>storm-starterを動かしてみる</h3>
zookeeper, nimbus, supervisor, uiの順に立ち上げていきます。<br />
uiとは、stormの処理の状態をwebから見えるようにするものです。デフォルトでポート8080を使います。<br />
<br />
それぞれ15秒くらい待ってから立ち上げていくのがよいと思います。<br />
<pre>
$ zkServer.sh start
$ storm nimbus &#038;
$ storm supervisor &#038;
$ storm ui &#038;
</pre>
<br />
<br />
これでちょっと待ってから、ブラウザで接続して状態を見てみます。<br />
以下のように表示されて、supervisor summaryのところに１台あれば、OKです。<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/Storm-UI.jpg" alt="Storm UI" title="Storm UI.jpg" border="0" width="540" height="316" />
（storm uiにはtwitter bootstrapが使われてます。）<br />
<br />
これで、無事にsupervisorが動いてることが確認できたので、実際にtopologyをsubmitしてみます。<br />
<br />
とりあえず、<a href="http://tjun.jp/blog/2011/11/storm_localmode/">Stormをlocalmodeで実行する</a> で作成したstorm-starter.jarを使います。<br />
storm-starterの中のExclamationTopologyを実行します。<br />
<br />
ソースを見てもらえばわかりますが、このtopologyは引数があればクラスタ環境で実行され、その引数がtopologyの名前になります。<br />
ということで、storm jar [jarの名前] [mainクラスの名前] [引数1]のようにすればtopologyをsubmitできます。<br />
<pre>
$ storm jar StormStarter.jar storm.starter.ExclamationTopology test
…..
[main] INFO  backtype.storm.StormSubmitter  - Jar not uploaded to master yet. Submitting jar...
37   [main] INFO  backtype.storm.StormSubmitter  - Uploading topology jar StormStarter.jar to assigned location: /tmp/storm/nimbus/inbox/stormjar-ea8d5f50-287e-4fcf-a371-81c84f465109.jar
53   [main] INFO  backtype.storm.StormSubmitter  - Successfully uploaded topology jar to assigned location: /tmp/storm/nimbus/inbox/stormjar-ea8d5f50-287e-4fcf-a371-81c84f465109.jar
53   [main] INFO  backtype.storm.StormSubmitter  - Submitting topology test in distributed mode with conf {"topology.workers":3,"topology.debug":true}
348  [main] INFO  backtype.storm.StormSubmitter  - Finished submitting topology: test
</pre>
こんな感じでfinisedまで出れば、submitは成功です。<br />
<br />
<br />
またブラウザでstorm UIを見てみると、Topology Summaryのところにtestという名前のtopologyが出てきます。<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/Storm-UI-2.jpg" alt="Storm UI 2" title="Storm UI-2.jpg" border="0" width="540" height="324" />
<br />
<br />
このtest をクリックすると、以下のような感じでtopologyの処理がどのくらい進んでるのか、各spoutやboltに対して見ることができます。<br />
<img src="http://tjun.jp/blog/wp-content/uploads/2012/04/Storm-UI3.jpg" alt="Storm UI3" title="Storm UI3.jpg" border="0" width="540" height="414" />
<br />
<br />
topologyの処理を止めるには、storm kill [topology名]です。<br />
<pre>
$ storm kill test
</pre>
<br />
nimbusやsupervisorやzookeeperを止めるには、<br />
<pre>
$ zkServer.sh stop
</pre>
です。storm uiだけは止まらないので、手動でkillします。<br />
<br />
<br />
ということで、無事にnimbusやsupervisorという仕組みを使ってstormを動かすことができました。<br />
今回は１台でzookeeperからstormまですべて動かしていますが、次はいつか複数台での動かし方について書きます。<br />
supervisorのノードでstorm.yamlにnimbusのIPをちゃんと書けばいいだけですが。。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/04/storm-cluster-setup2-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/04/storm-cluster-setup2-one/" />
	</item>
		<item>
		<title>How to build jzmq in Mac OS X Lion</title>
		<link>http://tjun.jp/blog/2012/04/how-to-build-jzmq-in-mac-os-x-lion/</link>
		<comments>http://tjun.jp/blog/2012/04/how-to-build-jzmq-in-mac-os-x-lion/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 09:48:04 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[storm]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1120</guid>
		<description><![CDATA[I tried to build jzmq, ( like this: Getting ZeroMQ and jzmq running on Mac OS X &#8211; pete&apos;s palaver )  [...]]]></description>
			<content:encoded><![CDATA[<p>
I tried to build jzmq, ( like this: <a href="http://blog.pmorelli.com/getting-zeromq-and-jzmq-running-on-mac-os-x">Getting ZeroMQ and jzmq running on Mac OS X &#8211; pete&apos;s palaver</a> )<br />
but failed with the following error message:<br />
<pre>
$ git clone https://github.com/zeromq/jzmq.git
$ cd jzmq
$ ./autogen.sh
$ ./configure
$ make
...
make[1]: *** No rule to make target `classdist_noinst.stamp', needed by `org/zeromq/ZMQ.class'.  Stop.
make: *** [all-recursive] Error 1
</pre>
<br />
Then, create &#8220;classdist_noinst.stamp&#8221;, but failed with new error msg.<br />
<pre>
$ touch src/classdist_noinst.stamp
$ make
...
make[1]: *** No rule to make target `org/zeromq/ZMQException.class, needed by `all'.  Stop.
make: *** [all-recursive] Error 1
</pre>
<br />
So, modify CLASSPATH<br />
<pre>
$ cd src/
$ CLASSPATH=.:./.:$CLASSPATH javac -d . org/zeromq/ZMQ.java org/zeromq/ZMQException.java org/zeromq/ZMQQueue.java org/zeromq/ZMQForwarder.java org/zeromq/ZMQStreamer.java org/zeromq/ZContext.java org/zeromq/ZFrame.java org/zeromq/ZMsg.java
$ cd ..
$ make
 # success!
$ sudo make install
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/04/how-to-build-jzmq-in-mac-os-x-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/04/how-to-build-jzmq-in-mac-os-x-lion/" />
	</item>
		<item>
		<title>[mac]ReSpaceAppで以前の上下左右のspacesを取り戻す</title>
		<link>http://tjun.jp/blog/2012/03/mac_spaces_respaceapp/</link>
		<comments>http://tjun.jp/blog/2012/03/mac_spaces_respaceapp/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 16:14:13 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1111</guid>
		<description><![CDATA[Mac OS Lionから、spacesがMissionControlに統合されて?、左右に連続するspacesしか作れなくなってしまいました。 snow leopardの頃のように、上下左右にspacesを作りたい、と [...]]]></description>
			<content:encoded><![CDATA[<p>
Mac OS Lionから、spacesがMissionControlに統合されて?、左右に連続するspacesしか作れなくなってしまいました。<br />
snow leopardの頃のように、上下左右にspacesを作りたい、というときは、ReSpaceAppというアプリを入れると、以前のようなspacesが作れます。<br />
<br />
<a href="http://switchstep.com/ReSpaceApp">ReSpaceApp &#8211; bringing grid spaces to OSX Lion</a><br />
<br />
こんな感じの設定画面でショートカットキーなどを選べます。<br />
<a href="http://tjun.jp/blog/2012/03/mac_spaces_respaceapp/respaceapp/" rel="attachment wp-att-1112"><img src="http://tjun.jp/blog/wp-content/uploads/2012/03/ReSpaceApp-512x464.jpg" alt="" title="ReSpaceApp" width="512" height="464" class="aligncenter size-large wp-image-1112" /></a><br />
<br />
<br />
思い通りに動いて満足。<br />
<br />
今のところ無料です。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/03/mac_spaces_respaceapp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/03/mac_spaces_respaceapp/" />
	</item>
		<item>
		<title>NoSQLのデータモデリング手法</title>
		<link>http://tjun.jp/blog/2012/03/nosql_datamodeling/</link>
		<comments>http://tjun.jp/blog/2012/03/nosql_datamodeling/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 17:33:51 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[db]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1107</guid>
		<description><![CDATA[NoSQLのデータモデリング手法に関する記事の紹介。 NoSQL Data Modeling Techniques « Highly Scalable Blog. NoSQLのスケーラビリティやパフォーマンス、整合性など [...]]]></description>
			<content:encoded><![CDATA[<p>
NoSQLのデータモデリング手法に関する記事の紹介。<br />
<ul>
	<li><a href='http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/'>NoSQL Data Modeling Techniques « Highly Scalable Blog</a>.</li>
</ul>
<br />
NoSQLのスケーラビリティやパフォーマンス、整合性などはよく議論されるけど、そのデータモデリングについてはRDBに比べて体系的な理論があまり議論されていない。というところから、データモデリングの観点からNoSQLを比較して、よく使われるモデリング手法を紹介してる。<br />
<br />
結構なボリュームがあるので、自分は挫折しましたが、内容はちゃんと書いてあって勉強になりそうでした。<br />
<br />
と思ったら日本語にしたものを最近見つけました。ありがたい。<br />
<a href="https://gist.github.com/2396234">NoSQLデータモデリング技法 — Gist</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/03/nosql_datamodeling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/03/nosql_datamodeling/" />
	</item>
		<item>
		<title>五反田のベンチャー企業ビルみたいなのにお邪魔してきた話</title>
		<link>http://tjun.jp/blog/2012/02/whill_intervie/</link>
		<comments>http://tjun.jp/blog/2012/02/whill_intervie/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 06:29:28 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1105</guid>
		<description><![CDATA[会社関係の知り合いのお誘いで、仕事後に、五反田にある町原ビルっていうところにお邪魔して、いろいろ話を聞いたりしてきました。 その町原ビルでは、いくつかのベンチャー企業が入っていて、共有スペースもあって、ベンチャー企業同士 [...]]]></description>
			<content:encoded><![CDATA[<p>
会社関係の知り合いのお誘いで、仕事後に、五反田にある<a href="http://machihara.net/index.html">町原ビル</a>っていうところにお邪魔して、いろいろ話を聞いたりしてきました。<br />
<br />
その町原ビルでは、いくつかのベンチャー企業が入っていて、共有スペースもあって、ベンチャー企業同士で情報交換をしたりして、サービスを作っている、らしいです。<br />
<br />
そんで、そこに間借り?してるWHILLの杉江さんに、WHILLの話を聞いたり、エンジニアやスタートアップについていろいろお話をしたり、してきました。<br />
<br />
WHILLは、東京モーターショーにも出て話題になったので、知っているかもしれません。<br />
<br />
<ul>
<li><a href="http://whill.jp/news/?p=102">WHILLの紹介 | WHILL_NEWS</a></li>
<br />
<li><a href="http://wired.jp/2011/12/20/%E8%BB%8A%E3%81%84%E3%81%99%E3%81%AE%E6%9C%AA%E6%9D%A5%E3%82%92%E5%89%B5%E9%80%A0%E3%81%99%E3%82%8B%E3%83%91%E3%83%BC%E3%82%BD%E3%83%8A%E3%83%AB%E3%83%A2%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3whill/">車いすの未来を切り拓くパーソナルモビリティ「WHILL」 « WIRED.jp 世界最強の「テクノ」ジャーナリズム</a></li>
<br />
</ul>
<br />
<br />
普通の人も乗ってみたいと思えるデザインで、運転も楽しくて外に出るモチベーションを創りだす、かっこいい車いすです。<br />
<br />
コンセプトやデザインの話、どのようにして開発してきたか、という話はいろいろ学ぶところが多かったです。<br />
<br />
今はプロジェクトのプロトタイプを作るまでのプラットフォームがとても整ってきている、というところで、クラウドファンディングやソーシャルファンディング、の話になりました。<br />
<a href="Kickstarter">Kickstarter</a>は有名ですが、日本でも<a href="http://camp-fire.jp/">CAMPFIRE</a>が出てきて、モノが出来る前から人々の反応を知ることができる、資金を集めることができる、というのは、特に実際のモノを作るスタートアップには重要だな、と感じました。<br />
<br />
<br />
しかしながら、モノのプロトタイプを作っても、実際に売るところまでには、まだまだ難しい部分が多いそうです。特にWHILLのようなプロダクトであれば安全性も重要ですし、いろいろなことをクリアしないと実際に販売することはできない、というところは、ウェブサービスのように比較的簡単に作れて簡単に使ってもらうことができる分野に比べて、たしかに大変な部分が多いと感じました。<br />
<br />
最近読んだ記事に<br />
<ul><li><a href="http://d.hatena.ne.jp/wa-ren/20120216/p1">アメリカで電子機器を販売するためにやったことまとめ　～2/1から米国でLiveShellの販売を開始～ &#8211; キャズムを超えろ！</a></li>
</ul>
がありますが、これを見てもいろいろとやるべきことがあります。<br />
<br />
<br />
まあでも、何かを作って売る、というところのチャンスが広がっているのは間違いなくて、これからはもっと増えてくる、のは間違いないです。今回訪問した町原ビルのように、小さなチームが場所や機材を共有して情報交換する、という場所は、何か楽しいことが生まれそうな、そんな雰囲気がしました。<br />
<br />
自分はソフトウェアしか作れないのですが、実際に&#8221;モノ&#8221;作るのもいいなー、と思った日でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/02/whill_intervie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/02/whill_intervie/" />
	</item>
		<item>
		<title>fluentd-plugin-kestrelを作ってみた</title>
		<link>http://tjun.jp/blog/2012/02/fluentd-plugin-kestrel/</link>
		<comments>http://tjun.jp/blog/2012/02/fluentd-plugin-kestrel/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 18:25:39 +0000</pubDate>
		<dc:creator>tjun</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[fluentd]]></category>
		<category><![CDATA[kestrel]]></category>

		<guid isPermaLink="false">http://tjun.jp/blog/?p=1102</guid>
		<description><![CDATA[先週末くらいにTLにたくさん流れてきた&#8221;fluentd&#8221;を調べてみたらよさそうだったので、勉強を兼ねてpluginを書いてみました。 tjun/fluent-plugin-kestrel &#82 [...]]]></description>
			<content:encoded><![CDATA[<p>
先週末くらいにTLにたくさん流れてきた&#8221;fluentd&#8221;を調べてみたらよさそうだったので、勉強を兼ねてpluginを書いてみました。<br />
<br />
<ul>
	<li><a href="https://github.com/tjun/fluent-plugin-kestrel">tjun/fluent-plugin-kestrel &#8211; GitHub</a></li>
</ul>
<br />
<br />
fluentdっていうのは、ログを収集するツールで、プラグインでいろいろ柔軟に設定できて、複数のサーバのいろんなイベントのログを集めて使いやすい形にする、というような使い方ができるみたいです。<br />
<ul>
	<li><a href="https://github.com/fluent/fluentd">fluent/fluentd &#8211; GitHub</a></li>
	<li><a href="http://d.hatena.ne.jp/viver/20110929/p1">イベントログ収集ツール fluent リリース！ &#8211; 古橋貞之の日記</a></li>
</ul>
<br />
<br />
最近ちょっと触っていたKestrelというメッセージキューへログを投げられたら便利かな、ということで、fluentdで集めたログをkestrelにenqueueするpluginを作ってみました。<br />
実装は、<a href="http://fluentd.org/plugin/" title="Fluent plugins">既にあるいろいろなプラグイン</a>を参考にしました。Gemを作るのも初めてでよく分かんなかったけど、<a href="http://d.hatena.ne.jp/tagomoris/20111117/1321511988">fluentdのためのプラグインをイチから書く手順 &#8211; tagomorisのメモ置き場</a>　の通りにやっていたらできました。<br />
jewelerって便利。<br />
<br />
ちゃんと<a href="https://rubygems.org/gems/fluent-plugin-kestrel" title="rubygems.org">rubygemsに登録されている</a>ので、そのうち<br />
<pre>gem install fluent-plugin-kestrel</pre>
でインストールできるようになる、と思ってるんだけど、まだできないので何か足りないのかもしれない。<br />
<br />
※2012/2/13追記 インストールできるようになりました。<br />
<br />
<br />
<br />
使い方は、kestrelが動いている状態で、fluentdの設定に<br />
<pre>
&lt;match kestrel.**>
  type kestrel

  host localhost     # kestrel host (required)
  queue test         # queue name of kestrel (required)

  # port 22133         # optional, default 22133
&lt;/match>
</pre>
のように書けばOKです。<br />
<br />
どんな感じのデータが入ってるかというと、<br />
<pre>
$ telnet localhost 22133

get test

VALUE test2 0 125
I"x2012-02-11T16:38:54Z	apache.access	{"host":"::1","user":"-","method":"GET","path":"/test/","code":"304","size":"-"}:EF
END
</pre>
<br />
という感じで、タブ区切りで時刻、タグ、JSONが入るんだけど、前後にかってに文字列がついちゃってる。<br />
使ってるkestrelのライブラリの仕様で入るみたいで、同じライブラリで読み出す場合は問題ないけど、他のライブラリで読み出すときは注意が必要かも。いずれなんとかしたい。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://tjun.jp/blog/2012/02/fluentd-plugin-kestrel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tjun.jp/blog/2012/02/fluentd-plugin-kestrel/" />
	</item>
	</channel>
</rss>

