サーバー構成概論メモ

高負荷のインフラ整備に関して専門家の意見を聞いたのでメモ

負荷分散に関して
・リバースプロキシは遅いらしい
LVSとDSRの組み合わせがいいらしい

apacheに関して
・無駄なmoduleは削除
・workerを使う(/etc/sysconfig/httpあたりのコメントアウトを削除)※早いらしい
・virtualhostの設定は3台まで


memcacheに関して
・4G〜8Gぐらいあればいい感じ
・できる限り有効活用する
・HWのメモリの1/4利用がするのがベストらしい(1/2でも可)
・重要度の低い処理はmemcacheに一時保存もあり(その場合1分ごとにcronなどでflashすること)

mysqlに関して
master slave構成に関して
・slaveにselectを投げる(当たり前)
・「second behind master」でレプリケーションの設定の遅延がみれる
・クエリーキャッシュを増やす(32MB→320MBまで可)
mysqlベンチマークソフト(フリー)で設定値検証をする
・スレッドキャッシュを使うべき
・スレッドはプールしない

revcacheを検討してみる

linuxサーバーへのphpインストールメモ

コンフィグを毎回設定するのがだるいのでメモしとく


./configure --prefix=/usr --with-config-file-path=/etc --with-apxs2=/usr/sbin/apxs --with-pear --enable-zend-multibyte --enable-mbstring --enable-mbregex --enable-exif --enable-soap --enable-sockets --enable-dbx --with-zlib --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --with-readline --enable-ftp --with-openssl --with-mysql=/usr/local/mysql --enable-gd-native-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6 --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --enable-bcmath --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr

Macにてswfmill-rubyをインストールする方法

0.事前準備
macportsにて下記をインストールしておくこと

libxml2
libxslt
freetype
libpng
git

1.下記ページより、Mac用のswfmillバイナリ(swfmill-0.3.1-macosx.tar.gz)を取得する

swfmill swf2xml and xml2swf

2.解答すると下記フォルダ及びファイルが生成される

 swfmill-0.3.1-macosx
 - COPYING.txt
 - NEWS.txt
 - README.txt
 - swfmill

3.Terminalなどでswfmillがあるフォルダまで移動する
4.移動したら下記コマンドを実行し、シェルの設定ファイルにPATHを通す

$echo "PATH=$PATH:"`pwd` >> ~/.bashrc

5.シェルの設定ファイルを再読込

$source .bashrc

6.swfmill-rubyのインストール

$git clone http://github.com/koumiya/swfmill_ruby.git #ソース取得
$cd swfmill_ruby
$gem build swfmill_ruby.gemspec
$gem install swfmill_ruby-0.1.gem #rvm環境なためルート権限は使わない
$gem list #確認
 *** LOCAL GEMS ***
 〜中略〜
 swfmill_ruby (0.1)

おわり。

rvmを使ってRuby及びRubyGemsの複数バージョン管理

rvmを使えば複数のRuby管理及び切り替えれができます。
また、RubyGemsも複数もつことができるので非常に便利です。

今回その環境をMac(SnowLepard)にて構築してみます。
1.事前準備
macports、git、wgetはインストールしていること

2.rvmのダウンロード

$wget -O rvm-install http://rvm.beginrescueend.com/releases/rvm-install-head

3.rvmインストールから確認まで
・rvmをインストール

$sh rvm-install

・パスに設定追加

bashの場合(Macのデフォルトシェル)
$echo "if  -s $HOME/.rvm/scripts/rvm  ; then source $HOME/.rvm/scripts/rvm ; fi" >> .bashrc
・zshの場合
$echo "if  -s $HOME/.rvm/scripts/rvm  ; then source $HOME/.rvm/scripts/rvm ; fi" >> .zshrc

・動作確認

$rvm list #ローカルrvm環境を出力
 rvm rubies

4.rvmでRuby1.8.7及びRuby1.9.2をインストール
・rvmにてインストールできるRubyバージョン情報を調べる

$rvm list known
# MRI Rubies
[ruby-]1.8.6[-p399]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p302]
[ruby-]1.8.7-head
 〜中略〜
# JRuby
jruby-1.2.0
 〜略〜

・rvmでRubyをインストール

$rvm install 1.8.7 -C "--enable-shared --with-opt-dir=/opt/local"
$rvm install 1.9.2 -C "--enable-shared --with-opt-dir=/opt/local"

・rvm管理のインストール済みRubyを確認

$rvm list
rvm rubies
 => ruby-1.8.7-p302 [ x86_64 ]
    ruby-1.9.2-p0 [ x86_64 ]

・rvmでRubyを切り替えてみる

$rvm use 1.8.7 #Ruby1.8.7に切り替える
$ruby -v
 ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.4.0]
$rvm use 1.9.2 #Ruby1.9.2に切り替える
$ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
$rvm use 1.9.2 --default #Ruby1.9.2をデフォルトのRubyに設定する方法

6.複数のRubyGemsを管理できるgemsetの利用方法
※gem installでルート権限は使用しない
・現在のgemset一覧を出力

$rvm use 1.8.7
$rvm gemset list                                                  
 gemsets for ruby-1.8.7-p302 (found in /Users/ユーザー名/.rvm/gems/ruby-1.8.7-p302)
 global

・新規gemsetを作成
今回はrails3用とrails2.3.8用を作成

$rvm gemset create rails3 #rails3用のgemset
$rvm gemset create rails2.3.8 #rails2.3.8用のgemset

・gemsetの切り替え方法

$rvm gemset use rails2.3.8 #gemsetをrails2.3.8用切り替える
 Now using gemset 'rails2.3.8'
$gem install rails -v 2.3.8 #rails2.3.8のインストール ※sudoは使用しない
$gem list #rails2.3.8用gemの中身確認
 *** LOCAL GEMS ***
 actionmailer (2.3.8)
 actionpack (2.3.8)
 activerecord (2.3.8)
 activeresource (2.3.8)
 activesupport (2.3.8)
 rack (1.1.0)
 rails (2.3.8)
 rake (0.8.7)
$rvm gemset use rails3 #gemsetをrails3用に切り替える
 Now using gemset 'rails3'
$gem list #何も無いことを確認
 *** LOCAL GEMS ***
$gem install rails #rails3のインストール
$gem list
 *** LOCAL GEMS ***
 abstract (1.0.0)
 actionmailer (3.0.0)
 actionpack (3.0.0)
 activemodel (3.0.0)
 〜中略〜
 rails (3.0.0)
 〜略〜
$rvm gemset use rails2.3.8 #rails2.3.8に切り替えてみる
$gem list #ここで2.3.8になってればOK
 *** LOCAL GEMS ***
 actionmailer (2.3.8)
 actionpack (2.3.8)
 activerecord (2.3.8)
 activeresource (2.3.8)
 activesupport (2.3.8)
 rack (1.1.0)
 rails (2.3.8)
 rake (0.8.7) 

7.最後にgemsetをふくめたバージョン切り替え方法
Ruby1.8.7でgemset(rails2.3.8)に切り替える方法

$rvm use 1.8.7@rails2.3.8
 Using /Users/ユーザー名/.rvm/gems/ruby-1.8.7-p302 with gemset rails2.3.8
$rvm use 1.8.7@rails2.3.8 --default #これでデフォルト設定

以上で完了です。コマンド一つで環境を切り替えられるのは便利ですね。