nginx + webrick でるりまを公開する方法

Posted by okkez Thu, 30 Oct 2008 15:31:00 GMT

nginx と webrick を使用してるりまを公開しているので手順と使っているスクリプトを公開しときます。

nginx の設定は以下。

Debian 風に設定ファイルが分かれているのでそれ以外の人は適当に想像して読み替えてください。

server { listen 80; server_name doc.okkez.net; access_log /var/log/nginx/doc.okkez.net-access.log combined; root /var/www/doc.okkez.net; index index.html; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; #proxy_redirect off; location / { root /var/www/doc.okkez.net; index index.html; } location /archives { autoindex on; } location /180 { include maintenance; proxy_pass http://localhost:8180; break; } # … 180 から 191 までの設定がありますが略 }
以下の点に注意します。 * location /archives は月次リリースのファイル置き場です * location /180 は Ruby1.8.0 用のパスです * location は バージョン番号からドットを取り除いたもの * proxy_pass の最後に指定しているポート番号は 8000 + 上で作成した数値 ### webrick 起動スクリプト 書いてあるとおりなんですが、ポイントは以下。 * DB の作成場所などを工夫してパラメタライズしやすくした * –baseurl オプションを指定すると CGI で作成されるパスがそのパスを起点にしたパスになる * バインドされる IP アドレスは localhost なので安全 * port は nginx の設定で使用したものを使う
#!/bin/sh DB_BASE=$HOME/ruby/rubydoc/refm/api BITCLUST_DIR=$HOME/ruby/bitclust for v in 180 181 182 183 184 185 186 187 188 191 do ruby ${BITCLUST_DIR}/standalone.rb \ –baseurl=http://doc.okkez.net/${v} \ –port=8${v} \ –pid-file=${DB_BASE}/pids/standalone-${v}.pid \ –database=${DB_BASE}/db${v} done
こんな感じです。 ### DB を全て再作成するスクリプト
#!/usr/bin/ruby BITCLUST = ‘/home/xxxx/bin/bitclust’ VERSIONS = %w[ 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.9.1 ] REF_BASE=’/home/xxxx/ruby/rubydoc/refm/api’ def setup_db(version) db = “#{REF_BASE}/db#{version.gsub(/./, ”)}” `rm -rf #{db}` `#{BITCLUST} -d #{db} init version=#{version} encoding=euc-jp` `#{BITCLUST} -d #{db} update –stdlibtree=#{REF_BASE}/src` puts “#{version} is done” end system “svn up -q #{REF_BASE}” VERSIONS.reverse_each do |version| setup_db(version) end
なんとなく Ruby で書いてみた。 ### cron に登録してるスクリプト * このスクリプトが動いている間はメンテナンス中の画面になるようにあらかじめ nginx にも設定しておく * あとは上で作ったスクリプトの組み合わせ * メンテ中でも archives 以下はアクセス可能
#!/bin/sh DOC_BASE=/var/www/doc.okkez.net mv ${DOC_BASE}/system/maintenance.html.no ${DOC_BASE}/system/maitenance.html for f in $(find $HOME/ruby/rubydoc/refm/api/pids -name ‘*.pid’ -print) do kill $(cat ${f}) done $HOME/bin/bc-setup-all $HOME/bin/bc-view-all mv ${DOC_BASE}/system/maintenance.html ${DOC_BASE}/system/maitenance.html.no

こんな感じです。

まとめ

webrick を 10 個も起動しているのがちょっとダサいところなんですが、まあメモリもたくさん積んでいるのでいいのかな、と。

もっといいやり方があったら教えていただけるとうれしいです。

Posted in , | コメントはありません | タグ , | atom

Trackbacks

Use the following link to trackback from your own site:
http://typo.okkez.net/trackbacks?article_id=nginx_and_webric_and_rurima&day=31&month=10&year=2008

Comments

Leave a response

Leave a comment