<?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 &#187; Nginx</title>
	<atom:link href="http://cross.hvn.to/?cat=54&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://cross.hvn.to</link>
	<description></description>
	<lastBuildDate>Fri, 29 Jun 2012 00:56:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>さくらのVPS設定[9]-NginxでPHP-FPMを使う。</title>
		<link>http://cross.hvn.to/?p=1874&#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%259a9-nginx%25e3%2581%25a7php-fpm%25e3%2582%2592%25e4%25bd%25bf%25e3%2581%2586%25e3%2580%2582</link>
		<comments>http://cross.hvn.to/?p=1874#comments</comments>
		<pubDate>Mon, 21 May 2012 05:21:09 +0000</pubDate>
		<dc:creator>sib</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cross.hvn.to/?p=1874</guid>
		<description><![CDATA[NginxでPHPを使おうとした場合、別プロセスで動くPHPとFastCGIでのソケット経由でやり取りを行うこ [...]]]></description>
			<content:encoded><![CDATA[<p>NginxでPHPを使おうとした場合、別プロセスで動くPHPとFastCGIでのソケット経由でやり取りを行うことになる。これを管理するモジュールの一つにPHP-FPMというものがあり、今回はそれを使用することにする。</p>
<p>こちらのサイトにもPHP-FPMの詳しい説明が書かれてありとても参考になった。<br />
<a href="http://sakura.off-soft.net/centos/apache-nginx-2-php-fpm-install.html" target="_blank">apache のかわりにnginxを使ってみる(2) php-fpmをインストールする</a></p>
<p>PHPそのものもインストールされていないので、そちらのインストールも説明していく。<br />
PHPは5.3.3まではパッチを当てる必要がある。それ以降であればPHP-FPMが予め組み込まれておりパッチを当てる必要は無い。そのため、レポジトリ登録したら一度確認をしてからインストール作業に入る。</p>
<p><span id="more-1874"></span></p>
<p><strong>PHPとPHP-FPMのインストール</strong></p>
<p>今回のインストールでは、こちらのサイトを基本として参考にさせて頂いた。<br />
<a href="http://se-suganuma.blogspot.jp/2012/04/centosnginx-php-fpminstallwordpress.html" target="_blank">CentOSにNginx + php-fpmをInstall、設定してWordPressを動かす</a></p>
<p>ただし、上記サイトではCentOS 5.8 32bitであり、契約した環境はCentOS6.2 64bitなため下記が違う。<br />
・remiのレポジトリはcentOS6版を入れる。5までとは違う。<br />
・epelリポジトリはcentOS6ではインストール済みなので、入れる必要はない。</p>
<p>標準のリポジトリにはphp-fpmがないため、<a href="http://rpms.famillecollet.com/" target="_blank">REMIレポジトリ</a>を追加する。</p>
<pre class="brush: xml; title: ; notranslate">
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh remi-release-6.rpm
</pre>
<p>yumを確認するとphp-fpmも存在し、PHPは5.3.13なのでパッチを当てる必要はないようだ。</p>
<pre class="brush: xml; title: ; notranslate">
# yum list --enablerepo=remi | grep php
php.x86_64       5.3.13-1.el6.remi   remi  
・・・
php-fpm.x86_64   5.3.13-1.el6.remi   remi 
・・・
</pre>
<p>インストールするPHPと関連ライブラリは以下にしておいた。<br />
php ;本体<br />
php-fpm ;PHP FastCGI Process Manager FastCGIを動かすためのライブラリ<br />
php-devel ;PHP拡張用のライブラリ<br />
php-cli ;コマンドラインでPHPを使えるようにする<br />
php-xml ;PHPでXMLを取り扱うライブラリ<br />
php-mbstring ;マルチバイト言語を扱うためのライブラリ<br />
php-gd ;PHP用グラフィックライブラリ</p>
<p>ライブラリ情報はyum infoで調べることができる。</p>
<pre class="brush: xml; title: ; notranslate">
# yum info php-xml  --enablerepo=remi
</pre>
<p>インストールする。</p>
<pre class="brush: xml; title: ; notranslate">
# yum install php php-fpm php-devel php-cli php-xml  php-mbstring php-gd --enablerepo=remi
・・・
Installed:
  php.x86_64 0:5.3.13-1.el6.remi            php-cli.x86_64 0:5.3.13-1.el6.remi        php-devel.x86_64 0:5.3.13-1.el6.remi          
  php-fpm.x86_64 0:5.3.13-1.el6.remi        php-gd.x86_64 0:5.3.13-1.el6.remi         php-mbstring.x86_64 0:5.3.13-1.el6.remi       
  php-xml.x86_64 0:5.3.13-1.el6.remi       

Dependency Installed:
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1    httpd.x86_64 0:2.2.15-15.el6.centos.1    httpd-tools.x86_64 0:2.2.15-15.el6.centos.1   
  libXpm.x86_64 0:3.5.8-2.el6               libxslt.x86_64 0:1.1.26-2.el6            php-common.x86_64 0:5.3.13-1.el6.remi         
  t1lib.x86_64 0:5.1.2-6.el6_2.1           

Complete!

# php -v
PHP 5.3.13 (cli) (built: May  9 2012 16:43:49) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

</pre>
<p>インストールして、ディレクトリチェックしていたら、なんか馴染んだものがvar/wwwに入ってしまってる。<br />
ログを良く見ると、httpdがインストールされてしまっていた。<br />
ということで、var/www/に入っていたnginx扱いのデータはvar/webdev/へと移動することにした。</p>
<p><strong>php-fpmとnginxの設定</strong></p>
<p>/etc/php-fpm.confはそのままで変更なし。</p>
<p>/etc/php-fpm.d/www.confでポートの確認(9000)をし、userとgroupをnginxへ変更する。</p>
<pre class="brush: xml; title: ; notranslate">
#vi /etc/php-fpm.d/www.conf
・・・・
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
・・・・
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
</pre>
<p>引き続き、nginx.confを変更しphpが使えるようにする。<br />
大半はコメントアウトされていたのを消すことで大丈夫なようだ。</p>
<pre class="brush: xml; title: ; notranslate">
# 念の為にphpディレクトリを作成しbasic認証をかけテストゾーンにした。
location = /php/index.php {
    alias 		/var/webdev/php/;
    auth_basic    	&quot;PHP test&quot;;
    auth_basic_user_file    &quot;/var/webdev/php/.htpasswd&quot;;
    fastcgi_pass   	127.0.0.1:9000;
    fastcgi_index  	index.php;
    fastcgi_param  	SCRIPT_FILENAME /var/webdev/$fastcgi_script_name;
    include		fastcgi_params;

}

# rootはserverと同じなので設定せず。SCRIPT_FILENAMEのパス変更。
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ /*\.php$ {
#   root   		/var/webdev/index/html;
    fastcgi_pass   	127.0.0.1:9000;
    fastcgi_index  	index.php;
#   fastcgi_param       SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    fastcgi_param  	SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include		fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
    deny  	all;
}
</pre>
<p>phpディレクトリを作成し、パスワードを暗号化して.htpasswdにいれる。</p>
<pre class="brush: xml; title: ; notranslate">
# mkdir /var/webdev/php
# cd /var/webdev/php
# vi .htpasswd
</pre>
<p>php-fpmを起動し、nginxを再起動する。</p>
<pre class="brush: xml; title: ; notranslate">
# /etc/rc.d/init.d/php-fpm start
# /etc/init.d/nginx restart
</pre>
<p>phpinfoを出力してみる。</p>
<pre class="brush: xml; title: ; notranslate">
# echo '&lt;?php echo phpinfo(); ?&gt;' &gt; index.php
</pre>
<p>ブラウザで確認して大丈夫だったら、php-fpmの自動起動設定をする。</p>
<pre class="brush: xml; title: ; notranslate">
# chkconfig php-fpm on
# chkconfig --list php-fpm
</pre>
<p>これでphpがnginxでも使えるようになった。<br />
もしもサブドメイン使用するアプリ作成した場合は、アプリにより設定が変わる可能性があるので、projectsディレクトリ以下にあるアプリごとのconfへphpの設定を書くことにした。</p>
<p>wordpressについては気が向いたらいつか行う事にして、ここまででとりあえずVPS設定は終わりとする。<br />
また環境設定ができたため、これから作成するスタディにはできるだけリアルタイム処理を加え、様々なパターン検証を行うことにした。</p>
]]></content:encoded>
			<wfw:commentRss>http://cross.hvn.to/?feed=rss2&#038;p=1874</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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から引用すると、以下のような説明に [...]]]></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はシェルにログインする時のアカウントだ。 作業は以下 [...]]]></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/webdev/<br />
owner;dev<br />
group;dev<br />
permission;775<br />
パーミッションはとりあえずwebdevを775にしてdevグループの物は動くようにしておいた。</p>
<p>hogeプロジェクト<br />
/var/webdev/hoge/<br />
hogeプロジェクトの静的部分をhtmlディレクトリ、nodeアプリ等の動的部分をappディレクトリの形にする。<br />
owner・groupはアプリに合わせて決めるが基本は以下の通りとしておく。</p>
<p>/var/webdev/hoge/html/<br />
owner;nginx<br />
group;nginx<br />
permission;644</p>
<p>/var/webdev/hoge/app/<br />
owner;foo<br />
group;foo<br />
permission;755</p>
<p><em>/var/webdev/html/hoge/<br />
/var/webdev/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/webdev/index/{html,app}
$ cd /var/
$ sudo chown -R dev webdev
$ sudo chgrp -R dev webdev
$ sudo chmod 775 webdev
$ ls -l webdev
合計 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/webdev/index/へ変更する。<br />
プロジェクト毎に設定を読み込めるようにprojects/*.confをincludeする。</p>
<pre class="brush: xml; title: ; notranslate">
http {
 ・・・
 server {
  ・・・
      location / {
         root   /var/webdev/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/webdev/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>
<p>追記・/var/www/としていたのをhttpdが使用するディレクトリと被るので/var/webdev/に変更した。</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の再インストールをし [...]]]></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、リバースプロキシ、メールプロキシだ。 公式からの [...]]]></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サーバーを構築していこうと考えている。<br />
またwebsockeでリアルタイム通信を行う場合、そのままではリバースプロキシできないので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>
	</channel>
</rss>
