2007年4月29日日曜日

cronとrun-parts

スズキです。

suz-env-serverにバックアップの仕組みを組み込んだので、
その概要を書こうと思いましたが、その前に、
このバックアップに密接に関係しているcronの設定のお話です。

下記にも述べていますが、cronの初期設定は
bin/init/cron.sh
コマンドを実行して行います。
http://suz-lab.blogspot.com/2007/04/apache.html
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/init/cron.sh

このシェルスクリプトにより、実行ユーザーのcrontabに下記エントリが追加されます。

5 * * * * run-parts /home/$USER/etc/cron/1/hourly
10 2 * * * run-parts /home/$USER/etc/cron/1/daily
15 3 * * 1 run-parts /home/$USER/etc/cron/1/weekly
20 4 1 * * run-parts /home/$USER/etc/cron/1/monthly
35 * * * * run-parts /home/$USER/etc/cron/2/hourly
40 5 * * * run-parts /home/$USER/etc/cron/2/daily
55 6 * * 4 run-parts /home/$USER/etc/cron/2/weekly
50 7 15 * * run-parts /home/$USER/etc/cron/2/monthly

見てわかるように、時、日、週、月に一回run-partsが実行されます。
そして、それが、2系統あります。

ここで、run-partsですが、このコマンドは指定したディレクトリしたのファイルを
すべて実行するものです。

ですので、毎時実行したいスクリプトは、.../hourly以下に置けば、
勝手に実行されます。(どちらの系統を使うかはお任せです)

なので、cronにどんなジョブがどんなタイミングで登録されているかの確認は、
上記のディレクトリを見て判断することができます。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月28日土曜日

APRの単独インストールとApacheのリビルド

スズキです。

tomcatでaprが使えるということで、suz-env-serverでは
aprを単独でインストールするようにしました。

それに伴い、apacheのビルドも、内部のaprではなく
インストールしたaprを用いるように変更しています。
(apr-utilも別途インストールするようにしています)

具体的にはapacheの./configure時に下記オプションをつけて、ビルドします。
--with-apr=$HOME/sbin/apr/stable
--with-apr-util=$HOME/sbin/apr-util/stable

次のシェルは上記のビルドスクリプトです。
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/build/apr.sh
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/build/apr-util.sh
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/build/apache.sh
(svn update で更新されます)

これで、aprが使えるようになりました。
次は、いよいよtomcatの設定に挑戦です。

その前に、mysqlの方優先するかも。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月25日水曜日

Poundを80番ポートで起動

鈴木です。

今、調整しているサーバ運用環境(suz-env-server)のスクリプトは
root以外のユーザーで実行することを前提としています。
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/

そのため、Poundを80番ポートで起動するには、
rootでの作業になるので、少し手順が変わります。

まず、Poundの設定ファイルのポート番号を80番に書き換えます。
$HOME/etc/pound/<ノード番号>/pound.cfg

次に、環境変数HOMEを、suz-env-server環境をcheckoutした
ユーザーのhomeディレクトリに変更します。
# HOME=/home/xxx

起動スクリプトを実行
# /home/xxx/bin/rc/pound.sh <ノード番号> start

可能性があるのは、まずはpoundですね。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月19日木曜日

Tomcat6でAPRの利用(準備編)

スズキです。

Tomcat6ではIO機能に、
"Apache Portable Runtime (APR)"
http://apr.apache.org/
を利用することができます。

せっかくなので、挑戦してみようと思います。

で、その準備として、aprのインストールスクリプトを作成しました。
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/build/apr.sh
("svn update"ですね)

とりあえず、今はaprのインストールのみ。
($HOME/sbin/apr)
./configureのオプションはまだ調整の必要があるかも。

次は、既存のapacheを、このaprを用いてビルドしたものに置き換え、
その後、tomcat6のarp利用に挑戦です。
http://tomcat.apache.org/tomcat-6.0-doc/apr.html

週末にできたらいいなー。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

Apacheログのログローテート

スズキです。

下記は現状のapacheログ用のlogrotate設定ファイルです。

-------- apache.conf --------
/home/iret/var/log/apache/1/*log {
  daily
  rotate 30
  create
  compress
  size 1k
  sharedscripts
  postrotate
    /home/iret/bin/rc/apache.sh 1 graceful
  endscript
}
-------- apache.conf --------

一日一回、再起動もしたいので、
daily
size 1k
の設定をしています。
(ログのサイズが1k以下なら、再起動の必要はないということで)

あと、
compress
で圧縮もかけています。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月16日月曜日

MySQLのユーザー追加

スズキです。

メモです。
すぐに忘れてしまうので...

GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY 'pass';

MySQLはもっと極めて、NDBクラスターとか普通に使えるようにしたいね。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

g++のインストール

スズキです。

MySQLのビルドで、g++が必要なようで、
インストールしようとしたら、少してこずってしまったので、メモしておきます。

下記は間違いです。
# yum install g++

で、正解は次のようになります。
# yum install gcc-c++

直感的じゃないなー、
けど、そういうものなのかなー?

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月15日日曜日

twitterに登録しました

スズキです。

結構、流行ってるっぽいので、僕も登録して見ました。
http://twitter.com/iretsuzuki

ブログにもtwitterのパーツを仕込んでます。
メッセンジャー(Google Talk)で入力できるお手軽間がいいですね。

APIも公開されていて、まさに、WEB2.0だなーって感じです。
APIはRESTだけでなく、AS2, AS3も用意されています。

AS3でなんか作ってみたいところですね。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月14日土曜日

poundのインストール&起動

スズキです。

今はサーバ管理者モードです。

で、今回はpoundのインストールスクリプトを作成しました。

まずは、下記SVNリポジトリ上のプロジェクトをアップデートです。
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/

次は、opensslのインストールです。
poundはSSLラッパー機能があるので、ビルド時にopensslが必要です。
(なくてもビルドできますが、使う予定があるので)

opensslのビルドスクリプトは下記となります。
$HOME/bin/build/openssl.sh

これを実行すると、下記にopensslのバイナリがインストールされます。
$HOME/sbin/openssl/$VERSION

これをstableにシンボリックリンクします。
# cd $HOME/sbin/openssl
# ln -s $VERSION stable

これで、opensslの準備は終わりです。
次は、poundのインストールです。
poundのビルドスクリプトは下記となります。
$HOME/bin/build/pound.sh

これを実行すると、
下記フォルダが作成されます。
$HOME/sbin/pound/ : poundのインストール先
$HOME/etc/pound : 設定ファイル置き場
$HOME/var/run/pound : PID(プロセスID)ファイル置き場

実際のインストールは
$HOME/sbin/pound/$VERSION
に行われるので、シンボリックリンクしておきます。
# cd $HOME/sbin/pound
# ln -s $VERSION stable

最後にpoundの起動ですが、下記起動スクリプトがあります。
$HOME/bin/rc/pound.sh

最初の引数はノード番号をあらわし、起動/停止は下記のように行います。
# pound.sh 1 start
# pound.sh 1 stop
(初期状態でのノードは二つ用意しています)

次こそはTomcatといいたいところですが、
その前に、Postfixですね。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月11日水曜日

apacheのインストール

スズキです。

表記の自動取得&make&インストールシェルスクリプトを作りました。

$HOME/bin/build/apache.sh

です。

これを実行することで、

$HOME/sbin/apache/$VERSION以下にapacheがインストールされます。
ただ、その前に、cronとlogrotateの準備がひつようなので、その初期化スクリプト、

$HOME/bin/init/cron.sh
$HOME/bin/init/logrotate.sh

を実行しておきます。

apacheをインストール時に作成される、その他ディレクトリは下記のようになります。

$HOME/etc/apache : httpd.confなどの設定ファイル
$HOME/etc/logrotate/ノード番号/logrotate.d/apache.conf : logrotateのapache用設定ファイル
$HOME/var/run/apache : apacheのpidファイルなどを格納
$HOME/var/log/apache : apacheのログファイルを格納

apacheを起動する場合は、
$HOME/sbin/apache/stableにデフォルトにしたいバージョンのapacheを
シンボリックリンクします。
そして、下記のrcを実行します。

$HOME/bin/rc/apache.sh ノード番号 start

これで、
$HOME/etc/apache/ノード番号/httpd.conf
の設定ファイルでapacheが起動されます。

初期設定では、二つのノード(1, 2)でクラスタリングっぽく起動できるようにしています。

次は、tomcatです。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月10日火曜日

サーバ運用環境セット

スズキです。

表記GoogleCodes上で作成しています。
http://suz-lab.googlecode.com/svn/trunk/suz-env-server/

自分のhomeに、このプロジェクトをbinとしてcheckoutしたら、
この中のスクリプトを実行して、サーバ環境構築ができるってしろものです。

まずは、対象サーバのrootでの作業。
この作業は、極力少なくしたいのですが、下記はしょうがないですよね。

○subversionのインストール
○gccのインストール

yumが使えるなら、

# yum install subversion
# yum install gcc

でインストールしちゃいましょう。

次に下記のようにプロジェクトのチェックアウトです。

# cd
# svn checkout http://suz-lab.googlecode.com/svn/trunk/suz-env-server bin

そしたら、binの下に下記のようなディレクトリ&スクリプトができます。

-build: ソースの make & インストール
-init: 各種初期化スクリプト
-rc: サーバアプリケーション起動スクリプト

次回は、上記ディレクトリのスクリプトを実行して、

cron, logrotate, apache

の環境を作るところまで。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/

2007年4月3日火曜日

やってみたいサーバアプリケーション構成

スズキです。

現在の所属会社のスタンダードは

○Squid(リバースプロキシーキャッシュとして)
○Apach2.0
○Tomcat5.5(JDK1.5)
○MySQL5.0(InnoDB)

のスタックで組んでいる。

今回、0から組む機会があるので、下記のような構成に挑戦してみようと思っている。

○Pound: ロードバランサー
http://www.apsis.ch/pound/
ポイントはApacheへのロードバランシング(フェイルオーバー)ですね。

○Apache2.2: Webサーバ
http://httpd.apache.org/
ポイントは下記二点です。
-mod_cacheによるコンテンツキャッシュ(Squidの機能の代替として)
-mod_proxyによるTomcatへのへのロードバランシング(フェイルオーバー)

○Tomcat6.0
http://tomcat.apache.org/
ポイントはリファクタリングされたという、クラスター機能ですね。
JDKも1.6かな。あとMySQLへのロードバランシング(フェイルオーバー)は
JDBCで可能です。

○MySQL5.1(NDBクラスター)
http://dev.mysql.com
ポイントはなんといってもNDBクラスターです。
レプリケーションもできるようです。(要調査)

メールサーバはpostfixかな。

--
blog: http://suz-lab.blogspot.com/
code: http://code.google.com/p/suz-lab/
group: http://groups.google.com/group/suz-lab/