<?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/"
	>

<channel>
	<title>cross HVN</title>
	<atom:link href="http://cross.hvn.to/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://cross.hvn.to</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2012 04:50:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>さくらのVPS設定[8]-nginxでリバースプロキシとNodeアプリ</title>
		<link>http://cross.hvn.to/?p=1838&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a8-nginx%25e3%2581%25a7%25e3%2583%25aa%25e3%2583%2590%25e3%2583%25bc%25e3%2582%25b9%25e3%2583%2597%25e3%2583%25ad%25e3%2582%25ad%25e3%2582%25b7%25e3%2581%25a8node%25e3%2582%25a2%25e3%2583%2597%25e3%2583%25aa</link>
		<comments>http://cross.hvn.to/?p=1838#comments</comments>
		<pubDate>Sat, 19 May 2012 04:50:30 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1838</guid>
		<description><![CDATA[リバースプロキシは、アクセスを代行して受け取るサーバーだ。wikipediaから引用すると、以下のような説明になる。 リバースプロキシ リバースプロキシ（英: Reverse proxy）または逆プロキシは、特定のサーバへの要求を必ず経由するように設置されたプロキシサーバ。一般的なプロキシとは異なり不特定多数のサーバを対象としない。リバースプロキシは、不特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、アクセスを制限することにより特定のサーバのセキュリティを高めたりする目的に用いられる。 node.jsでアプリを作成しforeverで永続化した場合、xxx.xxx.xx:3000などと最後にポート番号がついてしまう、これがとても気になっており、nginxでリバースプロクシを入れてアプリごとサブドメイン運用をしようとしたきっかけとなった。もちろんサブディレクトリの方にも入れることができるので簡単な実験とかはそちらの方がいいのかもしれない。 またnodeには動的な物を任せ、静的な部分についてはnginxで取り扱う形のほうがパフォーマンスから見ても良いようだ。 それとリバースプロクシはwebsocketを通さないのでnginx_tcp_proxy_moduleを使用して動かす方法も書いておく。 使用しているのは、以前作ったタッチ共有アプリだ。これをさくらのVPSサーバーへ持ってきて諸処の作業を行った。 nginx_tcp_proxy_moduleでnode.jsのsocket.ioをリバースプロクシさせる nginx_tcp_proxy_moduleのインストールは以前のエントリの通りだ。そして設定方法は次のブログ記事を参考にさせて頂いた。 nginxでsocket.ioのリバースプロキシ設定 nginx_tcp_proxy_module を入れてnode.jsのsocket.ioを動かすnginxの設定 モジュール設定はtcpブロックで行うがhttpブロックとたいして変わりがない。 そして/usr/local/nginx/conf/tcps以下にtcp設定を置きnginx.confからincludeする形にした。 includeしたtcp_cotouch.confはこのような内容であり、3000ポートでnodeアプリを動かし、サイトに3001で接続するとちゃんと動くのを確認できた。 ところで、ソケット通信は、こちらの説明でも書いてある通り、IPアドレスとPort番号を一組とした通信手段となる。 ソケット【socket】　 「ソケット」というのはIPアドレスとPort番号を一組にしたものに結び付けられた仮想メモリ空間なのです。 相手にデータを送るときは、このメモリ空間に通信するためのデータを書き込むことによって 「Socket」ライブラリの中の「socket」プログラムが相手アプリケーションとデータの通信を行ってくれるのです。 なので、[[Portが一つ占有されることになる]]はずだと思いながら、tcpとhttpで同じポート番号を指定すると、動いてしまった。しかしながら、ポート指定の時とは引っかかりがある。どういうことなのだろうと思いnginxを停めてinit.dで再起動しようとするとポートが使われていて動かせないと出てくる。 前の時は、設定ファイルのリロードだったのを思い出し、nginx.confでtcpとhttpのポート指定を書き換えた上でnginxを機動、tcpとhttpのポート指定を同じにした上で下記のコマンドで設定リロードする。 そうすると同じポートで動いてしまった。ここで、エラーログを確認しようとした。 すると重くて開くのにとんでもなく時間が掛かる。 やはり、ソケットとhttpの接続とで混乱が起きていた模様で大量のエラーが発生していた。これで同じポート指定はやはり出来ないことが分かった。 そして念の為にtcpブロックで同じポート指定で2つ動かそうとしてみたら、先に書かれていたものが優先され、default_serverの指定が後のサーバにあった場合、既に使われているというエラーが出る。 このため、やはりtcpのserverブロックは1ポート専有というのを再確認することができた。 nodeアプリをhttpブロックでリバースプロキシ soket.ioでの接続は現段階ではリバースプロキシしてもあまり意味が無いので、これまでのようにポート指定で行うことにして、ソケットとは関係のないnodeアプリ本体の部分にリバースプロキシを使いURLにポート番号が出ないようにすることにした。 soket.ioと本体のポート番号を変えるのは下記の記事を参考にさせていただいている。 Socket.io Chat on Dreamhost: Hiding the URL nodeアプリでは、このように本体を3001、ソケットを3002として指定しなおしている。 html部分だと、index.htmlでsocket.io.jsを指定する部分をポート番号付きに変更する。 socketを使うクライアント側jsファイルの方でもsocket.io側のポート指定へと変える。 Nodeアプリの変更点は以上となる。次にnginxでリバースプロキシの設定を行った。 参考にさせていただいたのは、主にこちらのサイトだ。 Virtualmin, Apache, and Nginx Reverse Proxy さくらVPS を設定してみる:Nginx + リバースプロキシで WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>リバースプロキシは、アクセスを代行して受け取るサーバーだ。wikipediaから引用すると、以下のような説明になる。</p>
<blockquote><p><a href="http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7" target="_blank">リバースプロキシ</a><br />
リバースプロキシ（英: Reverse proxy）または逆プロキシは、特定のサーバへの要求を必ず経由するように設置されたプロキシサーバ。一般的なプロキシとは異なり不特定多数のサーバを対象としない。リバースプロキシは、不特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、アクセスを制限することにより特定のサーバのセキュリティを高めたりする目的に用いられる。
</p></blockquote>
<p>node.jsでアプリを作成しforeverで永続化した場合、xxx.xxx.xx:3000などと最後にポート番号がついてしまう、これがとても気になっており、nginxでリバースプロクシを入れてアプリごとサブドメイン運用をしようとしたきっかけとなった。もちろんサブディレクトリの方にも入れることができるので簡単な実験とかはそちらの方がいいのかもしれない。<br />
またnodeには動的な物を任せ、静的な部分についてはnginxで取り扱う形のほうがパフォーマンスから見ても良いようだ。<br />
それとリバースプロクシはwebsocketを通さないのでnginx_tcp_proxy_moduleを使用して動かす方法も書いておく。</p>
<p><span id="more-1838"></span></p>
<p>使用しているのは、以前作った<a href="http://cross.hvn.to/?p=1461" target="_blank">タッチ共有アプリ</a>だ。これをさくらのVPSサーバーへ持ってきて諸処の作業を行った。</p>
<p><strong>nginx_tcp_proxy_moduleでnode.jsのsocket.ioをリバースプロクシさせる</strong></p>
<p>nginx_tcp_proxy_moduleのインストールは以前の<a href="http://cross.hvn.to/?p=1694" target="_blank">エントリ</a>の通りだ。そして設定方法は次のブログ記事を参考にさせて頂いた。</p>
<p><a href="http://d.hatena.ne.jp/shim0mura/20120118/1326916953" target="_blank">nginxでsocket.ioのリバースプロキシ設定</a><br />
<a href="http://d.hatena.ne.jp/hadashia/20110822/1314017835" target="_blank">nginx_tcp_proxy_module を入れてnode.jsのsocket.ioを動かすnginxの設定</a></p>
<p>モジュール設定はtcpブロックで行うがhttpブロックとたいして変わりがない。<br />
そして/usr/local/nginx/conf/tcps以下にtcp設定を置きnginx.confからincludeする形にした。</p>
<pre class="brush: xml; title: ; notranslate">
user nginx;
worker_processes  2;
・・・・
events {
    worker_connections  1024;
}
# Load config files from th/usr/local/nginx/conf/tcps/ directory
include tcps/*.conf;

http {
　・・・・
}
</pre>
<p>includeしたtcp_cotouch.confはこのような内容であり、3000ポートでnodeアプリを動かし、サイトに3001で接続するとちゃんと動くのを確認できた。</p>
<pre class="brush: xml; title: ; notranslate">
tcp {
  upstream coTouchApp {
    server 127.0.0.1:3000;
    check interval=3000 rise=2 fall=5 timeout=1000;
  }

  server {
    listen 3001;
    server_name cotouch.omusuhi.info;

    proxy_read_timeout 200000;
    proxy_send_timeout 200000;
    proxy_pass coTouchApp;
  }
}
</pre>
<p>ところで、ソケット通信は、こちらの説明でも書いてある通り、IPアドレスとPort番号を一組とした通信手段となる。<br />
<a href="http://www.7key.jp/nw/technology/term/basic/socket.html" target="_blank">ソケット【socket】　</a></p>
<blockquote><p>「ソケット」というのはIPアドレスとPort番号を一組にしたものに結び付けられた仮想メモリ空間なのです。 相手にデータを送るときは、このメモリ空間に通信するためのデータを書き込むことによって 「Socket」ライブラリの中の「socket」プログラムが相手アプリケーションとデータの通信を行ってくれるのです。</p></blockquote>
<p>なので、[[Portが一つ占有されることになる]]はずだと思いながら、tcpとhttpで同じポート番号を指定すると、動いてしまった。しかしながら、ポート指定の時とは引っかかりがある。どういうことなのだろうと思いnginxを停めてinit.dで再起動しようとするとポートが使われていて動かせないと出てくる。</p>
<pre class="brush: xml; title: ; notranslate">
sudo /etc/init.d/nginx restart
</pre>
<p>前の時は、設定ファイルのリロードだったのを思い出し、nginx.confでtcpとhttpのポート指定を書き換えた上でnginxを機動、tcpとhttpのポート指定を同じにした上で下記のコマンドで設定リロードする。</p>
<pre class="brush: xml; title: ; notranslate">
sudo nginx -s reload
</pre>
<p>そうすると同じポートで動いてしまった。ここで、エラーログを確認しようとした。</p>
<pre class="brush: xml; title: ; notranslate">
sudo vi /usr/local/nginx/logs/error.log
</pre>
<p>すると重くて開くのにとんでもなく時間が掛かる。<br />
やはり、ソケットとhttpの接続とで混乱が起きていた模様で大量のエラーが発生していた。これで同じポート指定はやはり出来ないことが分かった。<br />
そして念の為にtcpブロックで同じポート指定で2つ動かそうとしてみたら、先に書かれていたものが優先され、default_serverの指定が後のサーバにあった場合、既に使われているというエラーが出る。<br />
このため、やはりtcpのserverブロックは1ポート専有というのを再確認することができた。</p>
<p><strong>nodeアプリをhttpブロックでリバースプロキシ</strong></p>
<p>soket.ioでの接続は現段階ではリバースプロキシしてもあまり意味が無いので、これまでのようにポート指定で行うことにして、ソケットとは関係のないnodeアプリ本体の部分にリバースプロキシを使いURLにポート番号が出ないようにすることにした。<br />
soket.ioと本体のポート番号を変えるのは下記の記事を参考にさせていただいている。<br />
<a href="http://stackoverflow.com/questions/10324864/socket-io-chat-on-dreamhost-hiding-the-url" target="_blank">Socket.io Chat on Dreamhost: Hiding the URL</a></p>
<p>nodeアプリでは、このように本体を3001、ソケットを3002として指定しなおしている。</p>
<pre class="brush: xml; title: ; notranslate">
var sys = require('util'),
		express = require('express'),
		app = express.createServer();

app.configure(function(){
	app.use(express.static(__dirname+'/views'));
});
app.listen(3001);
//var io = require('socket.io').listen(app);appではなくポート番号指定と変えている。
var io = require('socket.io').listen(3002);

io.sockets.on('connection', function(socket){
・・・・
</pre>
<p>html部分だと、index.htmlでsocket.io.jsを指定する部分をポート番号付きに変更する。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--&lt;script src=&quot;/socket.io/socket.io.js&quot;&gt;&lt;/script&gt; --&gt;
&lt;script src=&quot;http://www.omusuhi.info:3002/socket.io/socket.io.js&quot;&gt;&lt;/script&gt;
</pre>
<p>socketを使うクライアント側jsファイルの方でもsocket.io側のポート指定へと変える。</p>
<pre class="brush: xml; title: ; notranslate">
function initSocket(){
  var socket = io.connect('http://www.omusuhi.info:3002/');
  socket.on('message', function(t){
    console.log('mes; '+t);
  });
・・・・
}
</pre>
<p>Nodeアプリの変更点は以上となる。次にnginxでリバースプロキシの設定を行った。<br />
参考にさせていただいたのは、主にこちらのサイトだ。<br />
<a href="http://hartlessbydesign.com/blog/view/206-virtualmin-apache-and-nginx-reverse-proxy.html" target="_blank">Virtualmin, Apache, and Nginx Reverse Proxy</a><br />
<a href="http://totekan.jp/server/sakura-vps-settings-wordpress-nginx-reverse-proxy/" target="_blank">さくらVPS を設定してみる:Nginx + リバースプロキシで WordPress を動かしてみた♪</a><br />
<a href="http://sakura.off-soft.net/centos/apache-nginx-10-proxy.html" target="_blank">apache のかわりにnginxを使ってみる(10) nginx をリバースプロキシとして使ってみた</a><br />
<a href="http://d.hatena.ne.jp/mkouhei/20100121/1264086004" target="_blank">nginxでリバースプロキシ。</a></p>
<p>プロキシ共有設定ファイルを上記サイトを見つつ、このような感じで書き、<br />
projects/proxy.confへと保存した。</p>
<pre class="brush: xml; title: ; notranslate">
proxy_cache_path        /var/cache/nginx/ levels=1:2 keys_zone=czone:10m max_size=100m inactive=120m;
proxy_temp_path         /var/cache/nginx;
proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;
proxy_cache_valid       200 302 10m;
proxy_cache_valid       301 1h;
proxy_cache_valid       any 1m;
</pre>
<p>また、今回のアプリのプロキシ設定を下記のように書き、<br />
projects/cotouch.confへと保存してある。</p>
<pre class="brush: xml; title: ; notranslate">
upstream cotouch {
    ip_hash;
    server 127.0.0.1:3001;
}

server {
    listen   80;
    server_name cotouch.omusuhi.info;
    location / {
        proxy_pass http://cotouch/;
    }
}
</pre>
<p>前回のエントリで、projectsディレクトリにあるものは読みこむようにしてあったので、proxy.confもcotouch.confもnginx起動時に自動的に読み込まれることになる。</p>
<pre class="brush: xml; title: ; notranslate">
・・・・
http {
・・・・
 # Load config files from th/usr/local/nginx/conf/projects/ directory
 include /usr/local/nginx/conf/projects/*.conf;
}
</pre>
<p>ここまで変更してから、nginxの再起動を行う。</p>
<pre class="brush: xml; title: ; notranslate">
sudo /etc/init.d/nginx restart
</pre>
<p>すると、ちゃんとサブドメインでアプリが動き、さらに2枚同時に立ち上げると同期しているのも確認できた。<br />
<a href="http://cotouch.omusuhi.info/" target="_blank">cotouch.omusuhi.info</a></p>
<p>これで、複数のNodeアプリがあってもnginx側で管理できるようになった。<br />
次はphp-fpmでphpを動かしてみたい。<br />
余裕ができたらwordpressもnginxでどれだけパフォーマンスが良くなるのか試してみたいと考えている。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1838</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[7]-nginxとNode.jsを組み合わせた時のディレクトリ・グループ構成</title>
		<link>http://cross.hvn.to/?p=1753&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a7-nginx%25e3%2581%25a8node-js%25e3%2582%2592%25e7%25b5%2584%25e3%2581%25bf%25e5%2590%2588%25e3%2582%258f%25e3%2581%259b%25e3%2581%259f%25e6%2599%2582%25e3%2581%25ae%25e3%2583%2587%25e3%2582%25a3%25e3%2583%25ac%25e3%2582%25af</link>
		<comments>http://cross.hvn.to/?p=1753#comments</comments>
		<pubDate>Wed, 16 May 2012 07:17:38 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1753</guid>
		<description><![CDATA[改めてディレクトリ構成やグループとかを決め直した。 fooはシェルにログインする時のアカウントだ。 作業は以下を参考にさせて頂いた。 グループを使いこなす ディレクトリ・グループ構成の検討 グループ構成 group;nginx member;nginx group;node member;node *nodeアカウントについては、必要になってから作成、今は保留する。 group;dev member;foo dev nginx (node root) *node、rootアカウントについては、必要になってから設定する。 /usr/local/nginx/ owner;nginx group;nginx *問題が出るかもしれないので一通りの設定が落ち着くまで保留する。 /var/tmp/nginx/ owner;nginx group;nginx *問題が出るかもしれないので一通りの設定が落ち着くまで保留する。 webアプリ公開用ディレクトリ。 /var/www/ owner;dev group;dev permission;775 パーミッションはとりあえずwwwを775にしてdevグループの物は動くようにしておいた。 hogeプロジェクト /var/www/hoge/ hogeプロジェクトの静的部分をhtmlディレクトリ、動的部分をappディレクトリの形にする。 owner・groupはアプリに合わせて決めるが基本は以下の通りとしておく。 /var/www/hoge/html/ owner;nginx group;nginx permission;644 /var/www/hoge/app/ owner;foo group;foo permission;755 /var/www/html/hoge/ /var/www/app/hoge/ とすると、htmlディレクトリ以下、appディレクトリ以下でowner・groupをまとめれるのが良さそうだが、開発時にローカルマシンでプロジェクトを一箇所にまとめて管理しておきたかった事及びappがnodeのみでは無さそうなので、今回は採用しなかった。 ディレクトリ・グループ設定 devユーザーを作成する。アプリはとりあえずでindexにしておいた。 補助グループに今まで入っていたグループも指定しておかないと、 補助グループから外されてしまう。 これで一度失敗した。 なのでまず補助グループを確認してから、それを含める形で再度指定する。 ユーザー確認する。 グループ確認する。 [...]]]></description>
			<content:encoded><![CDATA[<p>改めてディレクトリ構成やグループとかを決め直した。<br />
fooはシェルにログインする時のアカウントだ。<br />
作業は以下を参考にさせて頂いた。<br />
<a href="http://www.usupi.org/sysad/117.html" target="_blank">グループを使いこなす</a></p>
<p><span id="more-1753"></span></p>
<p><strong>ディレクトリ・グループ構成の検討</strong></p>
<p>グループ構成</p>
<p>group;nginx<br />
member;nginx</p>
<p><del datetime="2012-05-15T06:10:41+00:00">group;node<br />
member;node</del><br />
*nodeアカウントについては、必要になってから作成、今は保留する。</p>
<p>group;dev<br />
member;foo dev nginx (node root)<br />
*node、rootアカウントについては、必要になってから設定する。</p>
<p><del datetime="2012-05-15T22:14:39+00:00">/usr/local/nginx/<br />
owner;nginx<br />
group;nginx</del><br />
*問題が出るかもしれないので一通りの設定が落ち着くまで保留する。</p>
<p><del datetime="2012-05-15T22:14:39+00:00">/var/tmp/nginx/<br />
owner;nginx<br />
group;nginx</del><br />
*問題が出るかもしれないので一通りの設定が落ち着くまで保留する。</p>
<p>webアプリ公開用ディレクトリ。<br />
/var/www/<br />
owner;dev<br />
group;dev<br />
permission;775<br />
パーミッションはとりあえずwwwを775にしてdevグループの物は動くようにしておいた。</p>
<p>hogeプロジェクト<br />
/var/www/hoge/<br />
hogeプロジェクトの静的部分をhtmlディレクトリ、動的部分をappディレクトリの形にする。<br />
owner・groupはアプリに合わせて決めるが基本は以下の通りとしておく。</p>
<p>/var/www/hoge/html/<br />
owner;nginx<br />
group;nginx<br />
permission;644</p>
<p>/var/www/hoge/app/<br />
owner;foo<br />
group;foo<br />
permission;755</p>
<p><em>/var/www/html/hoge/<br />
/var/www/app/hoge/<br />
とすると、htmlディレクトリ以下、appディレクトリ以下でowner・groupをまとめれるのが良さそうだが、開発時にローカルマシンでプロジェクトを一箇所にまとめて管理しておきたかった事及びappがnodeのみでは無さそうなので、今回は採用しなかった。<br />
</em></p>
<p><strong>ディレクトリ・グループ設定</strong></p>
<p>devユーザーを作成する。アプリはとりあえずでindexにしておいた。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo useradd -s /sbin/nologin dev
</pre>
<p>補助グループに今まで入っていたグループも指定しておかないと、 補助グループから外されてしまう。<br />
これで一度失敗した。<br />
なのでまず補助グループを確認してから、それを含める形で再度指定する。</p>
<pre class="brush: xml; title: ; notranslate">
$ groups foo
foo : foo
$ sudo usermod -G dev,foo foo
$ groups foo
foo : foo dev

$ groups nginx
nginx : nginx
$ sudo usermod -G dev,nginx nginx
$ groups nginx
nginx : nginx dev
</pre>
<p>ユーザー確認する。</p>
<pre class="brush: xml; title: ; notranslate">
$ cat /etc/passwd
</pre>
<p>グループ確認する。</p>
<pre class="brush: xml; title: ; notranslate">
$ cat /etc/group
</pre>
<p>とりあえずindexのディレクトリを作成する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo mkdir -p /var/www/index/{html,app}
$ cd /var/
$ sudo chown -R dev www
$ sudo chgrp -R dev www
$ sudo chmod 775 www
$ ls -l www
合計 4
drwxr-xr-x 4 dev dev 4096  5月 16 09:43 2012 index
</pre>
<p>各プロジェクトのアクセス権限については、また後で設定する。</p>
<p><strong>confファイルの調整</strong></p>
<p>プロジェクト毎に設定ファイルを置けるようにprojectsディレクトリを作成する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo mkdir /usr/local/nginx/conf/projects/
</pre>
<p>ディレクトリ構成に合わせて設定ファイルの調整をする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo nano /usr/local/nginx/conf/nginx.conf
</pre>
<p>ユーザーはnginxへ変更する。</p>
<pre class="brush: xml; title: ; notranslate">
user nginx;
</pre>
<p>worker_processesを決めるためにサイトをみると契約した<a href="http://vps.sakura.ad.jp/" target="_blank">さくらVPS1Gプラン</a>は仮想 2コアだった。</p>
<pre class="brush: xml; title: ; notranslate">
worker_processes  2;
</pre>
<p>デフォルトのroot指定をvar/www/index/へ変更する。<br />
プロジェクト毎に設定を読み込めるようにprojects/*.confをincludeする。</p>
<pre class="brush: xml; title: ; notranslate">
http {
 ・・・
 server {
  ・・・
      location / {
         root   /var/www/index/html;
         index  index.html index.htm;
      }
  ・・・
  }
  ・・・
 # Load config files from the /usr/local/nginx/conf/projects/ directory
 include /usr/local/nginx/conf/projects/*.conf;
}
</pre>
<p>これで契約したVPSをみてみる。<br />
<a href="http://www.omusuhi.info/" target="_blank">http://www.omusuhi.info/</a><br />
/var/www/index/html/にアップロードしてあった「おむすびコロン。」が表示されている。<br />
試しに適当なのを指定すると、<br />
<a href="http://www.omusuhi.info/a" target="_blank">http://www.omusuhi.info/a</a><br />
ちゃんと「404 Not Found」がでている。<br />
次回はnginxを導入した理由でもあるリバースプロクシの設定を行う。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1753</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[6]-nginxをpacoでインストール</title>
		<link>http://cross.hvn.to/?p=1694&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a6-nginx%25e3%2582%2592paco%25e3%2581%25a7%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%25b9%25e3%2583%2588%25e3%2583%25bc%25e3%2583%25ab</link>
		<comments>http://cross.hvn.to/?p=1694#comments</comments>
		<pubDate>Tue, 15 May 2012 21:03:01 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1694</guid>
		<description><![CDATA[ハイパフォーマンスHTTPサーバ Nginx入門を購入した。読んでいるとやっぱりnginxの再インストールをしたくなってきた。さらにグループだとかも見直しがしたくなってきたのでnginxだけでなくOSの再インストールからはじめることにした。 mongoDBのインストールまでは、今までと一緒で、nginxのインストールから変更となる。 ソースインストールで、しかも再インストールがありそうなnginxはpacoで管理するのがよさそうだ。 &#8220;make install&#8221;したソフトウェアを管理できる超便利ツール「Paco」 「Paco」で「make uninstall」できないソフトを削除する yum,rpmで扱えないアプリケーションを管理するソフトpaco pacoのインストール インストールのために最新版を確認する。 paco &#8211; a source code pacKAGE oRGANIZER for Unix/Linux 2.0.9が最新版のバージョンなので、それをwgetし展開、configureする。 gtkmm-2.4がない模様だ。調べてみると、GUIインタフェース用らしいので要らないらしい。 pacoを導入 というわけで、&#8211;disableにして再度configureしインストールする。 logmeコマンドでPaco自身もアンインストールできるようにする。 sudoで行おうとするとエラーが出る。 suにチェンジしてlogmeするとうまくいった。 pacoでnginxをインストール。 nginxをpacoでインストールする手順を、こちらで確認させて頂いた。 さくらVPSサーバにnginx-1.1.15をソースからビルドしてインストールしたときのメモ アプリが使用するnginxアカウントを作成する。 nginxのビルドに必要なパッケージのインストールをする。重要ではないがIPアドレスから地理情報を取得できるGeoIPも、使えそうなので入れてみる。 前と同じくnginx_tcp_proxy_moduleをダウンロードしパッチを当てる。 前回とは違い今回はユーザ名指定し幾つかのオプションとnginx_tcp_proxy_moduleを加えてconfigureする。 パス関連のオプション指定はコチラにまとまっていたので参考にさせて頂いた。 REMEMBER TO SPECIFY NGINX’S TEMP DIRECTORY PATH 一時ファイルの場所も変更された模様だ。 必要なフォルダを作成しインストールを行う。 エラーが出てくる。sudoではダメの模様なのでsuにチェンジしてインストールを試みるとうまくいった。 paco -aするとnginxがpaco管理として入っているのが確認できた。 シンボリックリンクを張り起動してみる。 「Welcome to nginx!」をブラウザで確認できたので停めておく。 自動起動設定は前回の「Nginx自動起動スクリプトの作成」と同じなので割愛する。 次回はnginxとnode併用でのディレクトリやグループ構成を行う。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/product/4048702270/ref=as_li_ss_tl?ie=UTF8&#038;tag=sibsib-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=4048702270">ハイパフォーマンスHTTPサーバ Nginx入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sibsib-22&#038;l=as2&#038;o=9&#038;a=4048702270" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />を購入した。読んでいるとやっぱりnginxの再インストールをしたくなってきた。さらにグループだとかも見直しがしたくなってきたのでnginxだけでなくOSの再インストールからはじめることにした。</p>
<p><a href="http://cross.hvn.to/?p=1642" target="_blank">mongoDBのインストールまで</a>は、今までと一緒で、nginxのインストールから変更となる。<br />
ソースインストールで、しかも再インストールがありそうなnginxはpacoで管理するのがよさそうだ。</p>
<p><a href="http://d.hatena.ne.jp/rx7/20081011/p2" target="_blank">&#8220;make install&#8221;したソフトウェアを管理できる超便利ツール「Paco」</a><br />
<a href="http://www.tk84.net/blog/%E3%80%8CPaco%E3%80%8D%E3%81%A7%E3%80%8Cmake%20uninstall%E3%80%8D%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%82%BD%E3%83%95%E3%83%88%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/" target="_blank">「Paco」で「make uninstall」できないソフトを削除する</a><br />
<a href="http://fedorakenken.at-ninja.jp/node16.html" target="_blank">yum,rpmで扱えないアプリケーションを管理するソフトpaco</a></p>
<p><span id="more-1694"></span></p>
<p><strong>pacoのインストール</strong><br />
インストールのために最新版を確認する。<br />
<a href="http://paco.sourceforge.net/" target="_blank">paco &#8211; a source code pacKAGE oRGANIZER for Unix/Linux</a><br />
2.0.9が最新版のバージョンなので、それをwgetし展開、configureする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo mkdir /usr/local/src/paco
$ sudo wget http://downloads.sourceforge.net/paco/paco-2.0.9.tar.gz
$ sudo tar zxfv paco-2.0.9.tar.gz
$ cd paco-2.0.9
$ ./configure
・・
No package 'gtkmm-2.4' found
</pre>
<p>gtkmm-2.4がない模様だ。調べてみると、GUIインタフェース用らしいので要らないらしい。<br />
<a href="http://selfkleptomaniac.org/archives/730" target="_blank">pacoを導入</a><br />
というわけで、&#8211;disableにして再度configureしインストールする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo ./configure --disable-gpaco
$ sudo make
$ sudo make install
</pre>
<p>logmeコマンドでPaco自身もアンインストールできるようにする。<br />
sudoで行おうとするとエラーが出る。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo make logme
make: *** [logme] エラー 2
</pre>
<p>suにチェンジしてlogmeするとうまくいった。</p>
<pre class="brush: xml; title: ; notranslate">
$ su
# make logme
# paco --version
paco-2.0.9  (28 June 2010)
Copyright (C) David Rosal &lt;davidrr@sourceforge.net&gt;
Protected by the GNU General Public License
</pre>
<p><strong>pacoでnginxをインストール。</strong><br />
nginxをpacoでインストールする手順を、こちらで確認させて頂いた。<br />
<a href="http://www.tk84.net/blog/%E3%81%95%E3%81%8F%E3%82%89VPS%E3%82%B5%E3%83%BC%E3%83%90%E3%81%ABnginx-1.1.15%E3%82%92%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E3%83%A1%E3%83%A2/" target="_blank">さくらVPSサーバにnginx-1.1.15をソースからビルドしてインストールしたときのメモ</a></p>
<p>アプリが使用するnginxアカウントを作成する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo useradd -s /sbin/nologin -d /usr/local/nginx -M nginx
</pre>
<p>nginxのビルドに必要なパッケージのインストールをする。重要ではないがIPアドレスから地理情報を取得できるGeoIPも、使えそうなので入れてみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo yum install gcc openssl-devel pcre-devel zlib-devel GeoIP*
</pre>
<p>前と同じくnginx_tcp_proxy_moduleをダウンロードしパッチを当てる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo mkdir /usr/local/src/nginx
$ cd /usr/local/src/nginx
$ sudo wget http://nginx.org/download/nginx-1.2.0.tar.gz
$ sudo git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
$ sudo tar zxvf nginx-1.2.0.tar.gz
$ cd nginx-1.2.0
</pre>
<p>前回とは違い今回はユーザ名指定し幾つかのオプションとnginx_tcp_proxy_moduleを加えてconfigureする。<br />
パス関連のオプション指定はコチラにまとまっていたので参考にさせて頂いた。<br />
<a href="http://www.lamnk.com/blog/computer/remember-to-specify-nginxs-temp-directory-path/" target="_blank">REMEMBER TO SPECIFY NGINX’S TEMP DIRECTORY PATH</a></p>
<pre class="brush: xml; title: ; notranslate">
$ sudo ./configure \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_geoip_module \
--with-http_flv_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi/ \
--http-scgi-temp-path=/var/tmp/nginx/scgi/ \
--add-module=../nginx_tcp_proxy_module/
・・・・
Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: &quot;/usr/local/nginx&quot;
  nginx binary file: &quot;/usr/local/nginx/sbin/nginx&quot;
  nginx configuration prefix: &quot;/usr/local/nginx/conf&quot;
  nginx configuration file: &quot;/usr/local/nginx/conf/nginx.conf&quot;
  nginx pid file: &quot;/usr/local/nginx/logs/nginx.pid&quot;
  nginx error log file: &quot;/usr/local/nginx/logs/error.log&quot;
  nginx http access log file: &quot;/var/log/nginx/access.log&quot;
  nginx http client request body temporary files: &quot;/var/tmp/nginx/client/&quot;
  nginx http proxy temporary files: &quot;/var/tmp/nginx/proxy/&quot;
  nginx http fastcgi temporary files: &quot;/var/tmp/nginx/fcgi/&quot;
  nginx http uwsgi temporary files: &quot;/var/tmp/nginx/uwsgi/&quot;
  nginx http scgi temporary files: &quot;/var/tmp/nginx/scgi/&quot;
</pre>
<p>一時ファイルの場所も変更された模様だ。<br />
必要なフォルダを作成しインストールを行う。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo mkdir -p /var/tmp/nginx/{proxy,client,fcgi,uwsgi,scgi}
$ sudo make
$ sudo paco -D make install
</pre>
<p>エラーが出てくる。sudoではダメの模様なのでsuにチェンジしてインストールを試みるとうまくいった。</p>
<pre class="brush: xml; title: ; notranslate">
$ su
# paco -D make install
# paco -a
nginx-1.2.0  paco-2.0.9
</pre>
<p>paco -aするとnginxがpaco管理として入っているのが確認できた。</p>
<p>シンボリックリンクを張り起動してみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
$ sudo nginx
$ nginx -v
nginx version: nginx/1.2.0
</pre>
<p>「Welcome to nginx!」をブラウザで確認できたので停めておく。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo nginx -s quit
</pre>
<p>自動起動設定は前回の「<a href="http://cross.hvn.to/?p=1660" target="_blank">Nginx自動起動スクリプトの作成</a>」と同じなので割愛する。<br />
次回はnginxとnode併用でのディレクトリやグループ構成を行う。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sibsib-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=ss_til&#038;asins=4048702270" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1694</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[5]-nginxインストールと起動設定</title>
		<link>http://cross.hvn.to/?p=1660&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a5-nginx%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%25b9%25e3%2583%2588%25e3%2583%25bc%25e3%2583%25ab%25e3%2581%25a8%25e8%25b5%25b7%25e5%258b%2595%25e8%25a8%25ad%25e5%25ae%259a</link>
		<comments>http://cross.hvn.to/?p=1660#comments</comments>
		<pubDate>Sun, 06 May 2012 07:56:00 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1660</guid>
		<description><![CDATA[nginxは「エンジンエックス」と読み、軽量高性能なHTTP、リバースプロキシ、メールプロキシだ。 公式からの説明を引用すると以下のようになる。 nginx [えんじんえっくす] は Igor Sysoev によって作られた HTTP とリバースプロキシのサーバで、メールプロキシサーバでもあります。Rambler (RamblerMedia.com) を含むロシアの多くの高負荷サイトで５年以上も動いています。Netcraft によると、nginx は 2010 年 4 月時点で 4.70% の人気サイトでサーバーとして、もしくはプロキシとして利用されています。成功例としては FastMail.FM や WordPress.com があります。 node.jsと同じくイベント駆動型アーキテクチャである。 nginxを表に置きリバースプロキシと静的ファイルの取り扱いを行い、裏に動的ファイルを扱う形でNode.jsを置く方法でVPSサーバーを構築していこうと考えている。その際にwebsocketでリアルタイム通信ができるようにしたいのでnginx_tcp_proxy_moduleというモジュールを使用することにした。（追記；結局websocketはリバプロする必要性が低い事が判明し、nginx_tcp_proxy_moduleを使うまでも無かった。） まず今回はモジュールを組み込んだnginxのインストールと自動起動の設定までを行う。 いろいろと見直しをし再インストールした。 モジュールの組み込みとnginxのインストール nginxではsocket.ioのプロキシがうまく行かないようで、yaoweibinさんという方がモジュールを書いてくれている。このnginx_tcp_proxy_moduleを使用してリバースプロキシでもリアルタイム通信が出来るようにする。 nginx_tcp_proxy_module nginxのインストールは、nginx連載2回目: nginxのインストールでも書かれているようにいくつかありyumコマンドでもインストールできるのだけど、モジュールの組み込みがインストール時にしかできないため、ソースをダウンロードしてパッチを当てる方法を取ることとした。 wgetする前に最新版の確認をする。 http://nginx.org/download/ 現時点ではnginx-1.2.0.tar.gzが最新版だった。 ということで、ソース及びnginx_tcp_proxy_moduleをダウンロードしパッチを当てる。 nginx_tcp_proxy_moduleをオプションとしてconfigureしてみる。 PCREライブラリというのがないらしいのでググってみると同じ症状の方がいてた。 CentOS5.5へのNginxのインストール pcre-develを入れれば良いみたいなので、yumでインストールし再度configureする。 大丈夫なようだ。configパスなどは上記を参考にしていけば良いのだろうと検討を付けておきながらインストールをする。 入門！ nginxを参考にして、シンボリックリンクを張り機動してみる。 サイトで「Welcome to nginx!」の表示を確認できたので起動停止しておく。 Nginx自動起動スクリプトの作成 サーバーを起動したらnginxも自動起動するように設定ファイルを作成する。 nginxをソースからインストール（＋基本設定）を参考にしてRed Hat Nginx Init Scriptのファイルをベースに機動パスと設定ファイルのパスを変更した。 Red [...]]]></description>
			<content:encoded><![CDATA[<p>nginxは「エンジンエックス」と読み、軽量高性能なHTTP、リバースプロキシ、メールプロキシだ。<br />
<a href="http://nginx.org/ja/" target="_blank">公式</a>からの説明を引用すると以下のようになる。</p>
<blockquote><p>
nginx [えんじんえっくす] は Igor Sysoev によって作られた HTTP とリバースプロキシのサーバで、メールプロキシサーバでもあります。Rambler (RamblerMedia.com) を含むロシアの多くの高負荷サイトで５年以上も動いています。Netcraft によると、nginx は 2010 年 4 月時点で 4.70% の人気サイトでサーバーとして、もしくはプロキシとして利用されています。成功例としては FastMail.FM や WordPress.com があります。
</p></blockquote>
<p>node.jsと同じくイベント駆動型アーキテクチャである。<br />
nginxを表に置きリバースプロキシと静的ファイルの取り扱いを行い、裏に動的ファイルを扱う形でNode.jsを置く方法でVPSサーバーを構築していこうと考えている。<del datetime="2012-05-18T08:49:49+00:00">その際にwebsocketでリアルタイム通信ができるようにしたいのでnginx_tcp_proxy_moduleというモジュールを使用することにした。</del>（追記；結局websocketはリバプロする必要性が低い事が判明し、nginx_tcp_proxy_moduleを使うまでも無かった。）<br />
まず今回はモジュールを組み込んだnginxのインストールと自動起動の設定までを行う。<br />
<追記><a href="http://cross.hvn.to/?p=1694" target="_blank">いろいろと見直しをし再インストールした。</a></p>
<p><span id="more-1660"></span></p>
<p><strong>モジュールの組み込みとnginxのインストール</strong></p>
<p>nginxではsocket.ioのプロキシがうまく行かないようで、<a href="https://github.com/yaoweibin" target="_blank">yaoweibin</a>さんという方がモジュールを書いてくれている。このnginx_tcp_proxy_moduleを使用してリバースプロキシでもリアルタイム通信が出来るようにする。<br />
<a href="http://yaoweibin.github.com/nginx_tcp_proxy_module/" target="_blank">nginx_tcp_proxy_module</a></p>
<p>nginxのインストールは、<a href="http://heartbeats.jp/hbblog/2012/02/nginx02.html" target="_blank">nginx連載2回目: nginxのインストール</a>でも書かれているようにいくつかありyumコマンドでもインストールできるのだけど、モジュールの組み込みがインストール時にしかできないため、ソースをダウンロードしてパッチを当てる方法を取ることとした。</p>
<p>wgetする前に最新版の確認をする。<br />
<a href="http://nginx.org/download/" target="_blank">http://nginx.org/download/</a><br />
現時点ではnginx-1.2.0.tar.gzが最新版だった。<br />
ということで、ソース及びnginx_tcp_proxy_moduleをダウンロードしパッチを当てる。</p>
<pre class="brush: xml; title: ; notranslate">
$ mkdir nginx
$ cd nginx/
$ wget http://nginx.org/download/nginx-1.2.0.tar.gz
$ git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
$ tar zxvf nginx-1.2.0.tar.gz
$ cd nginx-1.2.0
$ patch -p1 &lt; ../nginx_tcp_proxy_module/tcp.patch
</pre>
<p>nginx_tcp_proxy_moduleをオプションとしてconfigureしてみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ ./configure --add-module=../nginx_tcp_proxy_module/
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=&lt;path&gt; option.
</pre>
<p>PCREライブラリというのがないらしいのでググってみると同じ症状の方がいてた。<br />
<a href="http://d.hatena.ne.jp/pirosikick/20101018/1287415379" target="_blank">CentOS5.5へのNginxのインストール</a><br />
pcre-develを入れれば良いみたいなので、yumでインストールし再度configureする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo yum -y install pcre-devel
$ ./configure --add-module=../nginx_tcp_proxy_module/
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + md5: using system crypto library
  + sha1: using system crypto library
  + using system zlib library

  nginx path prefix: &quot;/usr/local/nginx&quot;
  nginx binary file: &quot;/usr/local/nginx/sbin/nginx&quot;
  nginx configuration prefix: &quot;/usr/local/nginx/conf&quot;
  nginx configuration file: &quot;/usr/local/nginx/conf/nginx.conf&quot;
  nginx pid file: &quot;/usr/local/nginx/logs/nginx.pid&quot;
  nginx error log file: &quot;/usr/local/nginx/logs/error.log&quot;
  nginx http access log file: &quot;/usr/local/nginx/logs/access.log&quot;
  nginx http client request body temporary files: &quot;client_body_temp&quot;
  nginx http proxy temporary files: &quot;proxy_temp&quot;
  nginx http fastcgi temporary files: &quot;fastcgi_temp&quot;
  nginx http uwsgi temporary files: &quot;uwsgi_temp&quot;
  nginx http scgi temporary files: &quot;scgi_temp&quot;
</pre>
<p>大丈夫なようだ。configパスなどは上記を参考にしていけば良いのだろうと検討を付けておきながらインストールをする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo make
$ sudo make install
</pre>
<p><a href="http://d.hatena.ne.jp/shim0mura/20120110/1326198429" target="_blank">入門！ nginx</a>を参考にして、シンボリックリンクを張り機動してみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
$ sudo nginx
</pre>
<p>サイトで「Welcome to nginx!」の表示を確認できたので起動停止しておく。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo nginx -s quit
</pre>
<p><strong>Nginx自動起動スクリプトの作成</strong></p>
<p>サーバーを起動したらnginxも自動起動するように設定ファイルを作成する。<br />
<a href="http://shiken.infrabu.info/nginx/nginx%E3%82%92%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88%EF%BC%8B%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%EF%BC%89/" target="_blank">nginxをソースからインストール（＋基本設定）</a>を参考にして<a href="http://wiki.nginx.org/RedHatNginxInitScript" target="_blank">Red Hat Nginx Init Script</a>のファイルをベースに機動パスと設定ファイルのパスを変更した。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo nano /etc/init.d/nginx
</pre>
<p><a href="http://wiki.nginx.org/RedHatNginxInitScript" target="_blank">Red Hat Nginx Init Script</a>をコピー＆ペーストする。</p>
<p>機動パス変更</p>
<pre class="brush: xml; title: ; notranslate">
# NGINX_CONF_FILE=&quot;/etc/nginx/nginx.conf&quot;
NGINX_CONF_FILE=&quot;/usr/local/nginx/conf/nginx.conf&quot;
</pre>
<p>設定ファイルのパス変更</p>
<pre class="brush: xml; title: ; notranslate">
# nginx=&quot;/usr/sbin/nginx&quot;
nginx=&quot;/usr/local/nginx/sbin/nginx&quot;
</pre>
<p>そして、コチラを参考に起動時設定スクリプトとして登録する。<br />
<a href="http://d.hatena.ne.jp/pirosikick/20101019/1287502384" target="_blank">CentOS用 Nginx起動スクリプト</a></p>
<p>実行権限を付与する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo chmod a+x /etc/init.d/nginx
</pre>
<p>起動時に実行するスクリプトとして登録する。<br />
ランレベル3と5の時に起動スクリプトを実行する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo /sbin/chkconfig --add nginx
$ sudo /sbin/chkconfig --list | grep nginx
nginx          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
$ sudo /sbin/chkconfig --level 35 nginx on
$ sudo /sbin/chkconfig --list | grep nginx
nginx          	0:off	1:off	2:off	3:on	4:off	5:on	6:off
</pre>
<p>VPSのコントロールパネルで再起動して、サイトで確認すると、「Welcome to nginx!」の表示になっており無事に自動機動の確認できた。</p>
<p>今回はここまで。リバースプロクシとNode.jsアプリの移動は次回行う予定にしている。<br />
./configureオプションでできることあたりの把握がまだできていないので、必要になったときに再インストールしつつ調べようかなと考えている。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1660</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[4]-MongoDBのインストール</title>
		<link>http://cross.hvn.to/?p=1642&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a4-mongodb%25e3%2581%25ae%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%25b9%25e3%2583%2588%25e3%2583%25bc%25e3%2583%25ab</link>
		<comments>http://cross.hvn.to/?p=1642#comments</comments>
		<pubDate>Sat, 05 May 2012 03:59:24 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[VPS]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1642</guid>
		<description><![CDATA[引き続きMongoDBだが、これも以前のエントリとほぼ同じだ。 VPS作業メモ[8]-MongoDB 参考にさせて頂くサイトも同じだ。 2.0 からはじめる MongoDB – 第1回 #mongodbjp MongoDB公式サイトでの記事はこちらにある。 RedHat Enterprise、CentOS、またはFedora LinuxにMongoDBをインストール 32bitか64bitか確認 32bitの場合「i686 i686 i386 」と表示され、64bitの場合はX86_64やamd64となる。 x86_64なので64bitだった。なので64bit版でリポジトリ登録を行う。 一度yumでローカルパッケージデータベースをアップデートした後にmongoDBパッケージをインストールする。インストール時に何か聞かれるのでyを押す。 インストールされたので起動してみる。 ストップして別方法で起動してみる。 バージョン確認 chkconfigで起動時に開始するように設定する。 これもNode.jsに続き慣れた作業だったので楽だった。]]></description>
			<content:encoded><![CDATA[<p>引き続きMongoDBだが、これも以前のエントリとほぼ同じだ。<br />
<a href="http://cross.hvn.to/?p=817" target="_blank">VPS作業メモ[8]-MongoDB</a><br />
参考にさせて頂くサイトも同じだ。<br />
<a href="http://blog.madapaja.net/2011/09/20-mongodb-1-mongodbjp.html" target="_blank">2.0 からはじめる MongoDB – 第1回 #mongodbjp</a><br />
MongoDB公式サイトでの記事はこちらにある。<br />
<a href="http://jp.docs.mongodb.org/master/tutorial/install-mongodb-on-redhat-centos-or-fedora-linux/" target="_blank">RedHat Enterprise、CentOS、またはFedora LinuxにMongoDBをインストール</a></p>
<p><span id="more-1642"></span></p>
<p>32bitか64bitか確認<br />
<a href="http://cross.hvn.to/?p=303" target="_blank">32bitの場合「i686 i686 i386 」と表示され、64bitの場合はX86_64やamd64となる。</a></p>
<pre class="brush: xml; title: ; notranslate">
$ uname -a
Linux VPSホスト名 2.6.32-220.7.1.el6.x86_64 #1
SMP Wed Mar 7 00:52:02 GMT 2012
x86_64 x86_64 x86_64 GNU/Linux
</pre>
<p>x86_64なので64bitだった。なので<a href="http://jp.docs.mongodb.org/master/tutorial/install-mongodb-on-redhat-centos-or-fedora-linux/#configure-package-management-system-yum" target="_blank">64bit版でリポジトリ登録</a>を行う。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo nano /etc/yum.repos.d/10gen.repo
[sudo] password for foo: 

[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
</pre>
<p>一度yumでローカルパッケージデータベースをアップデートした後にmongoDBパッケージをインストールする。インストール時に何か聞かれるのでyを押す。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo yum update
$ sudo yum install mongo-10gen mongo-10gen-server
・・
Total download size: 34 M
Installed size: 82 M
Is this ok [y/N]: y
Downloading Packages:
・・
Installed:  mongo-10gen.x86_64 0:2.0.4-mongodb_1
            mongo-10gen-server.x86_64 0:2.0.4-mongodb_1
Complete!
</pre>
<p>インストールされたので起動してみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo service mongod start
Starting mongod: forked process: 11763
all output going to: /var/log/mongo/mongod.log
[  OK  ]
</pre>
<p>ストップして別方法で起動してみる。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo service mongod stop
Stopping mongod:[  OK  ]
$ sudo /etc/init.d/mongod start
Starting mongod: forked process: 11798
[  OK  ]
all output going to: /var/log/mongo/mongod.log
</pre>
<p>バージョン確認</p>
<pre class="brush: xml; title: ; notranslate">
$ mongod --version
db version v2.0.4, pdfile version 4.5
Sat May  5 12:44:35 git version: 329f3c47fe8136c03392c8f0e548506cb21f8ebf
</pre>
<p>chkconfigで起動時に開始するように設定する。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo chkconfig --add mongod
</pre>
<p>これもNode.jsに続き慣れた作業だったので楽だった。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1642</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[3]-Node.jsのインストール</title>
		<link>http://cross.hvn.to/?p=1634&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a3-node-js%25e3%2581%25ae%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%25b9%25e3%2583%2588%25e3%2583%25bc%25e3%2583%25ab</link>
		<comments>http://cross.hvn.to/?p=1634#comments</comments>
		<pubDate>Sat, 05 May 2012 01:13:45 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Node.js]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1634</guid>
		<description><![CDATA[nvmでnode.jsのバージョンを、npmでパッケージを管理する方法を取る。 nvm (Node Version Manager) 複数バージョンを切り替え npm (Node Package Manager) アプリごとの使用パッケージを管理。 基本は以前のエントリと同じだ。 VPS作業メモ[6]-node.js こちらも、確認のために見ていた。 Node.jsの管理はnvmで CentOS5.5 に node.js をインストールする まずはビルドに必要なOpenSSLの開発用パッケージをインストールする。 githubにあるnvmのリポジトリをクローンする。 .でシェルスクリプトを実行しインストールする。 nodeのサイトで最近版のバージョン確認をする。 http://nodejs.org/ 今はv0.6.17のようだ。 nvmでnode.jsの最新版をインストールする。 node、npmそれぞれを確認する。 .bashrcにnvmの設定を書いておきいちいち起動しなくても済むようにする。 一度離脱して確認 大丈夫。 開発系ツールのグローバルインストールをしておく。 出来上がったアプリを永続化するためにforeverもいれる。 sudoだとエラーが出たのでsuにチェンジしてからインストールした。 このままだとsudoしたときにnpmが効かなくなるのでvisudoでetc/sudoersを編集して実行ユーザから環境変数を引き継ぐようにする。 新しくなった さくらVPS + nginx + Sinatra でプライベート Gyazo サーバを構築しよう 以上でNode.jsのインストールは終りだ。]]></description>
			<content:encoded><![CDATA[<p>nvmでnode.jsのバージョンを、npmでパッケージを管理する方法を取る。</p>
<p>nvm (Node Version Manager)<br />
複数バージョンを切り替え</p>
<p>npm (Node Package Manager)<br />
アプリごとの使用パッケージを管理。</p>
<p>基本は以前のエントリと同じだ。<br />
<a href="http://cross.hvn.to/?p=348" target="_blank">VPS作業メモ[6]-node.js</a><br />
こちらも、確認のために見ていた。<br />
<a href="http://blog.summerwind.jp/archives/1464" target="_blank">Node.jsの管理はnvmで</a><br />
<a href="http://d.hatena.ne.jp/xyk/20120131/1327998901" target="_blank">CentOS5.5 に node.js をインストールする</a></p>
<p><span id="more-1634"></span></p>
<p>まずはビルドに必要なOpenSSLの開発用パッケージをインストールする。</p>
<pre class="brush: xml; title: ; notranslate">
$ sudo  yum -y install openssl-devel
</pre>
<p>githubにあるnvmのリポジトリをクローンする。</p>
<pre class="brush: xml; title: ; notranslate">
$ git clone git://github.com/creationix/nvm.git ~/.node
Initialized empty Git repository in /home/sib/.node/.git/
remote: Counting objects: 323, done.
remote: Compressing objects: 100% (182/182), done.
remote: Total 323 (delta 172), reused 273 (delta 133)
Receiving objects: 100% (323/323), 44.90 KiB, done.
Resolving deltas: 100% (172/172), done.
</pre>
<p>.でシェルスクリプトを実行しインストールする。</p>
<pre class="brush: xml; title: ; notranslate">
$ . ~/.node/nvm.sh
</pre>
<p>nodeのサイトで最近版のバージョン確認をする。<br />
<a href="http://nodejs.org/">http://nodejs.org/</a><br />
今はv0.6.17のようだ。</p>
<p>nvmでnode.jsの最新版をインストールする。</p>
<pre class="brush: xml; title: ; notranslate">
$ nvm install v0.6.17
・・・
Now using node v0.6.17
~/.node/v0.6.17/bin/npm
</pre>
<p>node、npmそれぞれを確認する。</p>
<pre class="brush: xml; title: ; notranslate">
$ node -v
v0.6.17
$ npm -v
1.1.21
</pre>
<p>.bashrcにnvmの設定を書いておきいちいち起動しなくても済むようにする。</p>
<pre class="brush: xml; title: ; notranslate">
$ nano ~/.bashrc
. ~/.node/nvm.sh
nvm use v0.6.17
</pre>
<p>一度離脱して確認</p>
<pre class="brush: xml; title: ; notranslate">
$ exit
$ ssh -p 10022 foo@VPSのIPアドレス
SAKURA Internet [Virtual Private Server SERVICE]
Now using node v0.6.17
</pre>
<p>大丈夫。</p>
<p>開発系ツールのグローバルインストールをしておく。</p>
<pre class="brush: xml; title: ; notranslate">
$ npm install node-dev -g
$ npm install node-inspector -g
</pre>
<p>出来上がったアプリを永続化するために<a href="https://github.com/nodejitsu/forever" target="_blank">forever</a>もいれる。<br />
sudoだとエラーが出たのでsuにチェンジしてからインストールした。</p>
<pre class="brush: xml; title: ; notranslate">
$ su
# npm install forever -g
</pre>
<p>このままだとsudoしたときにnpmが効かなくなるのでvisudoでetc/sudoersを編集して実行ユーザから環境変数を引き継ぐようにする。<br />
<a href="http://d.hatena.ne.jp/aquarla/20120414/1334421989" target="_blank">新しくなった さくらVPS + nginx + Sinatra でプライベート Gyazo サーバを構築しよう<br />
</a></p>
<pre class="brush: xml; title: ; notranslate">
$ su
# visudo

Defaults    env_reset
Defaults    env_keep =  &quot;COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS&quot;
・・・・
Defaults    env_keep += &quot;PATH&quot;
# 最後にこの一行を追加
・・・・
# Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
# この一行をコメントアウト
</pre>
<p>以上でNode.jsのインストールは終りだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1634</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[2]-CentOS基本設定</title>
		<link>http://cross.hvn.to/?p=1577&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a2-centos%25e5%259f%25ba%25e6%259c%25ac%25e8%25a8%25ad%25e5%25ae%259a</link>
		<comments>http://cross.hvn.to/?p=1577#comments</comments>
		<pubDate>Fri, 04 May 2012 01:38:31 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1577</guid>
		<description><![CDATA[今回はセキリュティを中心にしたCentOS基本設定を行う。 主にというか、ほぼこちらの記事を元にさせていただき設定を行った。 はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ そして補足的にコチラを参考にさせていただいた。 さくらのVPSを借りたら真っ先にやるべきssh設定 CentOSをサーバーとして活用するための基本的な設定 ■ターミナルからのSSH接続 まず自宅のOSXからターミナルでVPSへこちらを参考にさせていただきつつ接続する。 01.さくらインターネットVPSを使ってみる。〜sshで接続してみる〜 　 　 ■ユーザー作成 root以外の作業ユーザーを作成しパスワードを設定する。 先程作成のユーザーでログイン出来るか確認する 無事にユーザー作成された。 　 　 ■SSH のポート番号を変更 22番ポートのままだとロボットの攻撃対象になりやすいらしいので変更する。 sshd_configを開きPort 22をコメントアウト、別のポートを指定する。 参考 ターミナルでSSH (Mac OS X) リスタート ポートのオプション -p 10022 でログイン確認する。 無事にポートが変更された。 　 　 ■公開認証鍵で SSH 接続 パスワード認証から、公開鍵認証のみでssh接続するように変更する。 ローカルのターミナルでキーペア（秘密鍵と公開鍵）を生成する。 VPSサーバーへログインし.sshディレクトリを作成しておく。 このときrootではなく作成したユーザーでログインすること。 最初rootでログインしてしまい設定に失敗した。 ここから先はVPSサーバーにログインしたままにして、ローカルのターミナル作業が必要なときはもう一枚ウィンドウをたちあげて作業する。 ローカルのターミナルでVPSサーバーへ公開鍵を転送する。 VPSサーバーのディレクトリと公開鍵のパーミッションを変更する。 sshの設定（sshd_config）を変更して公開鍵でしかログインできないようにする。 PermitRootLoginをnoにしてrootでのログインを禁止する。 PasswordAuthenticationをnoにしてパスワードでのログインを禁止する。 PermitEmptyPasswordsをnoにして空パスワードでのログインを禁止する。 sshdを再起動する。 [...]]]></description>
			<content:encoded><![CDATA[<p>今回はセキリュティを中心にしたCentOS基本設定を行う。</p>
<p>主にというか、ほぼこちらの記事を元にさせていただき設定を行った。<br />
<a href="http://weble.org/2011/05/16/sakura-vps-and-centos" target="_blank">はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ</a><br />
そして補足的にコチラを参考にさせていただいた。<br />
<a href="http://blog.myfinder.jp/2010/09/vpsssh.html" target="_blank">さくらのVPSを借りたら真っ先にやるべきssh設定</a><br />
<a href="http://tanaka.sakura.ad.jp/archives/001065.html" target="_blank">CentOSをサーバーとして活用するための基本的な設定</a></p>
<p><span id="more-1577"></span></p>
<p><strong>■ターミナルからのSSH接続</strong><br />
まず自宅のOSXからターミナルでVPSへこちらを参考にさせていただきつつ接続する。<br />
<a href="http://www.aguuu.com/archives/2010/09/sakura_internet_vps_01/" target="_blank">01.さくらインターネットVPSを使ってみる。〜sshで接続してみる〜</a></p>
<pre class="brush: xml; title: ; notranslate">
$ ssh root@VPSのIPアドレス
root@VPSのIPアドレス's password:
SAKURA Internet [Virtual Private Server SERVICE]
# ls -al
</pre>
<p>　<br />
　<br />
<strong>■ユーザー作成</strong><br />
root以外の作業ユーザーを作成しパスワードを設定する。</p>
<pre class="brush: xml; title: ; notranslate">
# adduser foo
# passwd foo
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
# exit
</pre>
<p>先程作成のユーザーでログイン出来るか確認する</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh foo@VPSのIPアドレス
foo@VPSのIPアドレス's password:
SAKURA Internet [Virtual Private Server SERVICE]
$ exit
</pre>
<p>無事にユーザー作成された。<br />
　<br />
　<br />
<strong>■SSH のポート番号を変更</strong><br />
22番ポートのままだとロボットの攻撃対象になりやすいらしいので変更する。<br />
sshd_configを開きPort 22をコメントアウト、別のポートを指定する。</p>
<p>参考<br />
<a href="http://blog.thingslabo.com/archives/000003.html" target="_blank">ターミナルでSSH (Mac OS X)</a></p>
<pre class="brush: xml; title: ; notranslate">
$nano /etc/ssh/sshd_config

#Port 22
Port 10022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
</pre>
<p>リスタート</p>
<pre class="brush: xml; title: ; notranslate">
$/etc/init.d/sshd restart
sshd を停止中:      [  OK  ]
sshd を起動中:      [  OK  ]
</pre>
<p>ポートのオプション -p 10022 でログイン確認する。</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh -p 10022 root@VPSのIPアドレス
root@VPSのIPアドレス's password:
SAKURA Internet [Virtual Private Server SERVICE]
</pre>
<p>無事にポートが変更された。<br />
　<br />
　<br />
<strong>■公開認証鍵で SSH 接続</strong><br />
パスワード認証から、公開鍵認証のみでssh接続するように変更する。<br />
ローカルのターミナルでキーペア（秘密鍵と公開鍵）を生成する。</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/foo/.ssh/id_rsa): //何も入れずリターンした。
Enter passphrase (empty for no passphrase): //パスワード
Enter same passphrase again: //パスワード
Your identification has been saved in /Users/foo/.ssh/id_rsa.
Your public key has been saved in /Users/foo/.ssh/id_rsa.pub.
</pre>
<p>VPSサーバーへログインし.sshディレクトリを作成しておく。<br />
このときrootではなく作成したユーザーでログインすること。<br />
最初rootでログインしてしまい設定に失敗した。<br />
ここから先はVPSサーバーにログインしたままにして、ローカルのターミナル作業が必要なときはもう一枚ウィンドウをたちあげて作業する。</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh -p 10022 foo@VPSのIPアドレス
foo@VPSのIPアドレス's password:
SAKURA Internet [Virtual Private Server SERVICE]
# ls -al
//.sshディレクトリはないので作成
# mkdir .ssh
</pre>
<p>ローカルのターミナルでVPSサーバーへ公開鍵を転送する。</p>
<pre class="brush: xml; title: ; notranslate">
$ scp -P 10022 ~/.ssh/id_rsa.pub foo@VPSのIPアドレス:~/.ssh/authorized_keys
foo@VPSのIPアドレス's password:
id_rsa.pub 100%  402     0.4KB/s   00:00
</pre>
<p>VPSサーバーのディレクトリと公開鍵のパーミッションを変更する。</p>
<pre class="brush: xml; title: ; notranslate">
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
</pre>
<p>sshの設定（sshd_config）を変更して公開鍵でしかログインできないようにする。<br />
PermitRootLoginをnoにしてrootでのログインを禁止する。<br />
PasswordAuthenticationをnoにしてパスワードでのログインを禁止する。<br />
PermitEmptyPasswordsをnoにして空パスワードでのログインを禁止する。</p>
<pre class="brush: xml; title: ; notranslate">
$ su
パスワード:
# nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
</pre>
<p>sshdを再起動する。</p>
<pre class="brush: xml; title: ; notranslate">
# /etc/init.d/sshd restart
sshd を停止中:     [  OK  ]
sshd を起動中:     [  OK  ]
</pre>
<p>VPSにログインしたままのウィンドウは、そのままにして、もう一枚のウィンドウでログインのチェックをする。</p>
<p>rootでは入れないのを確認</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh -p 10022 root@VPSのIPアドレス
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
</pre>
<p>認証鍵ユーザーでログイン出来るのを確認</p>
<pre class="brush: xml; title: ; notranslate">
$ ssh -p 10022 foo@VPSのIPアドレス
SAKURA Internet [Virtual Private Server SERVICE]
</pre>
<p>　<br />
　<br />
<strong>■ファイアーウォールを構築する</strong><br />
iptablesで公開ポートを設定する。<br />
基本的には、<a href="http://weble.org/2011/05/16/sakura-vps-and-centos" target="_blank">WEBLEさんのと同じ</a>。</p>
<p>あとでnodeを入れるので3000を空けておく。<br />
SSH 10022, HTTP 80, FTP 20, 21, SSL 443 Node 3000<br />
改行のところにスペースが入るとダメなので要確認</p>
<pre class="brush: xml; title: ; notranslate">

# nano /etc/sysconfig/iptables
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH 10022, HTTP 80, FTP 20, 21, SSL 443,Node 3000
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443   -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT
</pre>
<p>iptablesを再起動し、設定反映されているか確認。</p>
<pre class="brush: xml; title: ; notranslate">
# /etc/rc.d/init.d/iptables restart
# iptables -L
</pre>
<p>　<br />
　<br />
<strong>■不要なデーモンをストップ</strong><br />
不要なデーモンを停止しパフォーマンスを調整する。<br />
起動中のデーモンを調べる。</p>
<pre class="brush: xml; title: ; notranslate">
# chkconfig --list | grep 3:on
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
irqbalance     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpdate        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sysstat        	0:off	1:on	2:on	3:on	4:on	5:on	6:off
</pre>
<p><a href="http://tanaka.sakura.ad.jp/archives/001065.html" target="_blank">CentOSをサーバーとして活用するための基本的な設定</a>の4番の表と比べてみたがあまり停止するのも無さそうなのでこのままで行くこととした。<br />
　<br />
　<br />
<strong>■sudo コマンドにユーザーを追加する</strong><br />
sudo で root権限が使えるように設定する。<br />
visudoコマンドを実行し最後に行を追加して記述する。</p>
<pre class="brush: xml; title: ; notranslate">
# visudo
foo ALL=(ALL) ALL
</pre>
<p>　<br />
　<br />
<strong>■yumアップデート</strong><br />
最後にyumを最新状態にしておく。</p>
<pre class="brush: xml; title: ; notranslate">
yum update
</pre>
<p>　<br />
　<br />
これで基本設定は、とりあえず終わりにする。<br />
これ以外は気がついた時に随時行うことにした。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1577</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[1]-お名前.comで取得したドメインを割り当てる。</title>
		<link>http://cross.hvn.to/?p=1563&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a1-%25e3%2581%258a%25e5%2590%258d%25e5%2589%258d-com%25e3%2581%25a7%25e5%258f%2596%25e5%25be%2597%25e3%2581%2597%25e3%2581%259f%25e3%2583%2589%25e3%2583%25a1%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%2592%25e5%2589%25b2%25e3%2582%258a</link>
		<comments>http://cross.hvn.to/?p=1563#comments</comments>
		<pubDate>Thu, 03 May 2012 17:05:20 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1563</guid>
		<description><![CDATA[さくらにもさくらのドメイン取得というサービスがあるのだけど、お名前.comの料金と比べると割高であり、また今ならキャンペーンでinfoドメインが一年目280円だったため、ドメインはお名前にしてさくらのVPSへ割り当てる方法をとることにした。 その際にこちらのサイトを参考にさせていただいた。 さくらVPSにお名前.comの独自ドメインを割り当てる さくらのVPSにお名前.comでのドメインを割り当て ・お名前でドメイン取得 ・ドメインnaviへログイン ・ドメイン設定→ネームサーバーの設定→レンタルDNSレコード設定→ドメイン選択→レンタルDNSレコード設定画面 　ドメインとサブドメイン両方を使用なので以下を追加。 　サブドメインを使う場合 　　ホスト名 &#8211; * 　　TYPE &#8211; A 　　value &#8211; さくらのVPSのIPアドレス 　サブドメインを使わない場合 　　ホスト名 &#8211; （空白のまま） 　　TYPE &#8211; A 　　value &#8211; さくらのVPSのIPアドレス 　これで確認→設定。 ・ドメイン設定→ネームサーバーの設定→ネームサーバーの変更→ドメイン選択→他のネームサーバを使用 　　1 プライマリネームサーバー &#8211; 01.dnsv.jp 　　2 セカンダリネームサーバー &#8211; 02.dnsv.jp 　 　技術担当者情報をコピーから埋める。 　確認→設定]]></description>
			<content:encoded><![CDATA[<p>さくらにも<a href="http://www.sakura.ne.jp/domain/" target="_blank">さくらのドメイン取得</a>というサービスがあるのだけど、<a href="http://www.onamae.com/service/d-price/?btn_g=do06" target="_blank">お名前.comの料金</a>と比べると割高であり、また今ならキャンペーンでinfoドメインが一年目280円だったため、ドメインはお名前にしてさくらのVPSへ割り当てる方法をとることにした。<br />
その際にこちらのサイトを参考にさせていただいた。<br />
<a href="http://kadowski.info/server-2/%E3%81%95%E3%81%8F%E3%82%89vps%E3%81%AB%E3%80%81%E3%81%8A%E5%90%8D%E5%89%8D-com%E3%81%A7%E5%8F%96%E3%81%A3%E3%81%9F%E7%8B%AC%E8%87%AA%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E5%89%B2%E3%82%8A" target="_blank">さくらVPSにお名前.comの独自ドメインを割り当てる</a><br />
<a href="http://mook.jpn.org/archives/2010/10/sakura_vps_onamae_domein.html" target="_blank">さくらのVPSにお名前.comでのドメインを割り当て</a></p>
<p><span id="more-1563"></span></p>
<p>・お名前でドメイン取得<br />
・ドメインnaviへログイン</p>
<p>・ドメイン設定→ネームサーバーの設定→レンタルDNSレコード設定→ドメイン選択→レンタルDNSレコード設定画面<br />
　ドメインとサブドメイン両方を使用なので以下を追加。</p>
<p>　サブドメインを使う場合<br />
　　ホスト名 &#8211; *<br />
　　TYPE &#8211; A<br />
　　value &#8211; さくらのVPSのIPアドレス</p>
<p>　サブドメインを使わない場合<br />
　　ホスト名 &#8211; （空白のまま）<br />
　　TYPE &#8211; A<br />
　　value &#8211; さくらのVPSのIPアドレス</p>
<p>　これで確認→設定。</p>
<p>・ドメイン設定→ネームサーバーの設定→ネームサーバーの変更→ドメイン選択→他のネームサーバを使用<br />
　　1 プライマリネームサーバー &#8211; 01.dnsv.jp<br />
　　2 セカンダリネームサーバー &#8211; 02.dnsv.jp<br />
　<br />
　技術担当者情報をコピーから埋める。<br />
　確認→設定</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1563</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらのVPS設定[0]</title>
		<link>http://cross.hvn.to/?p=1548&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2581%2595%25e3%2581%258f%25e3%2582%2589%25e3%2581%25aevps%25e8%25a8%25ad%25e5%25ae%259a0</link>
		<comments>http://cross.hvn.to/?p=1548#comments</comments>
		<pubDate>Thu, 03 May 2012 16:16:24 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[VPS]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1548</guid>
		<description><![CDATA[VPSのドメイン更新なので、この際更新はやめてドメインをお名前.comで取得、VPSサーバーをさくらへと移すことにした。それともに、nginxをリバースプロクシに使用して、node、mongoDBあたりで構成されたモダンなサーバーを作成してみることにする。 その際の設定で忘れてしまいそうな部分をメモにしておく事にした。 予定している作業内容 ・お名前.comで取得したドメインをさくらのVPSで使えるように設定する。 ・セキュリティなどのCentOS基本設定 ・node.js &#8211; webアプリ ・mongoDB &#8211; データベース ・nginx &#8211; リバースプロクシ ・php-fpm &#8211; php ・wordPress ・(git,svn) &#8211; これまでのVPSサーバーでは結局使わなかったので、保留 　追記、予めcentOSインストール時に入っていた模様。]]></description>
			<content:encoded><![CDATA[<p>VPSのドメイン更新なので、この際更新はやめてドメインを<a href="http://www.onamae.com/" target="_blank">お名前.com</a>で取得、VPSサーバーを<a href="http://vps.sakura.ad.jp/" target="_blank">さくら</a>へと移すことにした。それともに、nginxをリバースプロクシに使用して、node、mongoDBあたりで構成されたモダンなサーバーを作成してみることにする。<br />
その際の設定で忘れてしまいそうな部分をメモにしておく事にした。</p>
<p>予定している作業内容<br />
<a href="http://cross.hvn.to/?p=1563" target="_blank">・お名前.comで取得したドメインをさくらのVPSで使えるように設定する。</a><br />
<a href="http://cross.hvn.to/?p=1577" target="_blank">・セキュリティなどのCentOS基本設定</a><br />
<a href="http://cross.hvn.to/?p=1634" target="_blank">・node.js &#8211; webアプリ</a><br />
<a href="http://cross.hvn.to/?p=1642" target="_blank">・mongoDB &#8211; データベース</a><br />
<a href="http://cross.hvn.to/?p=1660" target="_blank">・nginx &#8211; リバースプロクシ</a><br />
・php-fpm &#8211; php<br />
・wordPress<br />
<del datetime="2012-05-05T03:19:59+00:00">・(git,svn) &#8211; これまでのVPSサーバーでは結局使わなかったので、保留</del><br />
　追記、予めcentOSインストール時に入っていた模様。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1548</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>各種バージョン確認方法</title>
		<link>http://cross.hvn.to/?p=303&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2590%2584%25e7%25a8%25ae%25e3%2583%2590%25e3%2583%25bc%25e3%2582%25b8%25e3%2583%25a7%25e3%2583%25b3%25e7%25a2%25ba%25e8%25aa%258d%25e6%2596%25b9%25e6%25b3%2595</link>
		<comments>http://cross.hvn.to/?p=303#comments</comments>
		<pubDate>Tue, 01 May 2012 09:00:47 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=303</guid>
		<description><![CDATA[バージョン調べようとするとそれぞれで確認方違ってるのでメモ。（随時更新） # paco --version paco-2.0.9 (28 June 2010) Copyright (C) David Rosal Protected by the GNU General Public License # cat /etc/redhat-release CentOS release 5.6 (Final) 32bitか64bitの確認 32bitの場合「i686 i686 i386 」と表示され、64bitの場合はX86_64やamd64 # uname -a Linux localhost 2.6.18-194.3.1.el5.028stab069.6 #1 SMP Wed May 26 18:31:05 MSD 2010 i686 i686 i386 GNU/Linux もしくは # uname -i i386 # httpd -v [...]]]></description>
			<content:encoded><![CDATA[<p>バージョン調べようとするとそれぞれで確認方違ってるのでメモ。（随時更新）<br />
<span id="more-303"></span></p>
<pre>

# paco --version
paco-2.0.9  (28 June 2010)
Copyright (C) David Rosal <davidrr@sourceforge.net>
Protected by the GNU General Public License

# cat /etc/redhat-release
CentOS release 5.6 (Final)

32bitか64bitの確認
32bitの場合「i686 i686 i386 」と表示され、64bitの場合はX86_64やamd64
# uname -a
Linux localhost 2.6.18-194.3.1.el5.028stab069.6 #1
SMP Wed May 26 18:31:05 MSD 2010 i686 i686 i386 GNU/Linux
もしくは
# uname -i
i386

# httpd -v
Server version: Apache/2.2.3
Server built: May 4 2011 06:51:15

php --version
PHP 5.3.7RC2 (cli) (built: Jul 1 2011 18:19:27)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

# mysqladmin version -p
Enter password:
mysqladmin Ver 8.42 Distrib 5.1.52, for redhat-linux-gnu on i686
・・・
Server version 5.1.52

# sqlite3 -version
3.3.6

# python -V
Python 2.4.3

# ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]

# gem -v
1.3.7

# rails -v
Rails 3.0.9

# git --version
git version 1.7.1

# node -v
v0.4.5

# npm -v
1.0.17

# mongod --version
db version v2.0.1, pdfile version 4.5
Mon Nov 14 21:18:09 git version: 3a5cf0e2134a830d38d2d1aae7e88cac31bdd684

# tar --version
tar (GNU tar) 1.26

# nginx -v
nginx version: nginx/1.2.0
</pre>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=303</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

