で、それをバックエンドにしてさらにNginxでロードシェアする時の設定。
2011/07/18
2011/05/03
2011/04/05
nginxのログをsyslogに投げる
名前つきパイプの例、古典的なやり方。
パイプの取り出し側にはそれなりに工夫が必要だと思うが、
とりあえずnginxを起動してから。
とすると、loggerがsyslogに投げてくれる。
(フォーマットは少々いじっている。)
syslog-ngならsourceに指定することもできそうだ。
ただこれをやると、nginxがパイプの処理を待つようになっちゃうので使いどころ注意。
rm /var/log/nginx/access.log
mkfifo /var/log/nginx/access.logパイプの取り出し側にはそれなりに工夫が必要だと思うが、
とりあえずnginxを起動してから。
# cat /var/log/nginx/access.log | logger -p local4.infoとすると、loggerがsyslogに投げてくれる。
1301982441 local4.info prox01 "xx.xxx.xxx.xxx - - [05/Apr/2011:14:47:21 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0""(フォーマットは少々いじっている。)
syslog-ngならsourceに指定することもできそうだ。
ただこれをやると、nginxがパイプの処理を待つようになっちゃうので使いどころ注意。
2011/03/31
PPA版Nginxのコンフィグオプションをチェック
Ubuntu10.10(maverick)などでnginxを使う場合は、公式が用意しているLaunchPadのPPAからStableを使うのがよさそうだ。
インストールして、どんなモジュールが使えるかチェックした。
主要なモジュールに加え、サードパーティのモジュールも入ってますね。
Fairが使えるのは嬉しいのかもしれない。
インストールして、どんなモジュールが使えるかチェックした。
# nginx -V
nginx version: nginx/0.8.54
TLS SNI support enabled
configure arguments:\
--conf-path=/etc/nginx/nginx.conf\
--error-log-path=/var/log/nginx/error.log\
--http-client-body-temp-path=/var/lib/nginx/body\
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi\
--http-log-path=/var/log/nginx/access.log\
--http-proxy-temp-path=/var/lib/nginx/proxy\
--http-scgi-temp-path=/var/lib/nginx/scgi\
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi\
--lock-path=/var/lock/nginx.lock\
--pid-path=/var/run/nginx.pid\
--with-debug\
--with-http_addition_module\
--with-http_dav_module\
--with-http_geoip_module\
--with-http_gzip_static_module\
--with-http_image_filter_module\
--with-http_realip_module\
--with-http_stub_status_module\
--with-http_ssl_module\
--with-http_sub_module\
--with-http_xslt_module\
--with-ipv6\
--with-sha1=/usr/include/openssl\
--with-md5=/usr/include/openssl\
--with-mail\
--with-mail_ssl_module\
--add-module=/build/buildd/nginx-0.8.54/debian/modules/nginx-echo\
--add-module=/build/buildd/nginx-0.8.54/debian/modules/nginx-upstream-fair主要なモジュールに加え、サードパーティのモジュールも入ってますね。
Fairが使えるのは嬉しいのかもしれない。
Nginx用の a2ensite, a2dissite がないのでツールを作る
最近ChefのCookbookを触っているが、Rubyをちゃんと読めるほうが都合がよいので練習がてら。
ubuntuなどのdeb系はapache httpdのサイト管理がよく作られており、サイト単位の有効無効を a2ensite, a2dissiteというツールで切り替えるように工夫がされています。
Nginxでもコマンドでサイト管理やりたいなあと思い作成。
3つのメソッド(サブコマンド)を持ちます、オプションなしでたたくと一応使い方を出すようにしました。
とか
ngctlにエイリアスして
このようにします。
リストはこんな感じで出します。
リロードがいやな人はコメントアウトしたりgracefulに相当する手続きがあるのでそれを変わりに仕込みましょう。
この辺は改良の余地が大きいですね。
自分でつかうのでGithubにも置いてます。
https://github.com/sawanoboly/optools/blob/master/ngsitectl.rb
うちはハイライトしてないからGithubのほうが見やすいですね。
そうそう、1.9.2 p180 で作っているので他のVerについては動くか見てないです。
ngsitectl.rb
ubuntuなどのdeb系はapache httpdのサイト管理がよく作られており、サイト単位の有効無効を a2ensite, a2dissiteというツールで切り替えるように工夫がされています。
Nginxでもコマンドでサイト管理やりたいなあと思い作成。
使い方
3つのメソッド(サブコマンド)を持ちます、オプションなしでたたくと一応使い方を出すようにしました。
- list:sites-available にあるコンフィグファイルをリストアップ。
現在有効なものは+(プラス)を、無効なサイトは-(マイナス)を付与して表示。 - enable {configfile}:sites-enabled にリンクを作成してnginxをリロード。
- disable {configfile}:sites-enabled からリンクを削除してnginxをリロード。
コマンド例
ngsitectl.rb disable defaultとか
ngctlにエイリアスして
ngctl enable example.comこのようにします。
リストはこんな感じで出します。
# ngctl list
- example.com
+ 8082
+ rprox.conf
+ 8081
- default
+ 8083
+ ssl_rprox.confリロードがいやな人はコメントアウトしたりgracefulに相当する手続きがあるのでそれを変わりに仕込みましょう。
この辺は改良の余地が大きいですね。
コード
自分でつかうのでGithubにも置いてます。
https://github.com/sawanoboly/optools/blob/master/ngsitectl.rb
うちはハイライトしてないからGithubのほうが見やすいですね。
そうそう、1.9.2 p180 で作っているので他のVerについては動くか見てないです。
ngsitectl.rb
#!/usr/bin/env ruby
# encording: utf-8
## Const
AvailDir = "/etc/nginx/sites-available/"
EnableDir = "/etc/nginx/sites-enabled/"
# list up all site and add "+" for enable sites.
def list(sitename)
sitesall = Dir.entries(AvailDir)
# exclude dots
sites = sitesall.select{|elem| elem != "." and elem !=".."}
# enabled sites check.
sites.each do |site|
if File.exist?(EnableDir + site) then
puts "+ " + site
else
puts "- " + site
# File.symlink(AvailDir + site, EnableDir + site)
end
end
end
def enable(sitename)
if File.exist?(EnableDir + sitename) then
puts "Site:" + sitename + " is already enabled.\nDo nothing."
elsif File.exist?(AvailDir + sitename) then
puts "enable: " + sitename
File.symlink(AvailDir + sitename, EnableDir + sitename)
puts `/etc/init.d/nginx reload`
else
puts "Site:" + sitename + " Config not found."
end
list(sitename)
end
def disable(sitename)
if File.exist?(AvailDir + sitename) then
if File.exist?(EnableDir + sitename) then
puts "disable: " + sitename
File.unlink(EnableDir + sitename)
puts `/etc/init.d/nginx reload`
else
puts "Site:" + sitename + " is already disabled.\nDo nothing."
end
else
puts "Site:" + sitename + " Config not found."
end
list(sitename)
end
begin
method(ARGV[0]).call(ARGV[1])
rescue TypeError => ex then
puts <<"HEREDOCS"
Nginx site control script.
Usage:
list: list all available sites
enable {sitename}: enable site and reload nginx
disable {sitename}: disable site and reload nginx
HEREDOCS
rescue => ex
puts "Exception " + "#{ex.class}"
puts "#{ex.message}"
puts
puts <<"HEREDOCS"
Nginx site control script.
Usage:
list: list all available sites
enable {sitename}: enable site and reload nginx
disable {sitename}: disable site and reload nginx
HEREDOCS
end
登録:
投稿 (Atom)
