2011年1月28日金曜日

RedHat Linux 全自動インストール

IT業界悲しいかな、私が好きなDebianでシステム構築を行う事はまずなく、
現地の環境はLinuxと言えばほぼ100% RedHat Linuxです。
職場で当然扱っているわけですが、RedHat Linuxの全自動インストールの検証に少し携わったので
掲載してみようかと思います。

全自動インストールの方法は複数あります。
1. DVD1枚のみで全自動インストール
2. DVDなしでPXE Bootからネットワークインストール
3. DVDもネットワークもなくローカルディスク(パーティション)から別のディスク(パーティション)へインストール

2. のネットワークインストールはさらに詳細に分かれて
2.1. NFSインストール
2.2. httpインストール
2.3. ftpインストール

というのがあります。
用途に応じて最適な手法を選択すればいいと思います。
全ての手法を書ききるのはちょっと大変なので、今回は簡単な
1枚のDVDだけで全自動インストールについて書いてみます。今回はRedHat Linux ES 5.5 64bitで検証しましたが
おそらく32bitでも、多少のバージョン違いでも出来ると思います。

作業はLinuxサーバ上で実施します。
RedHat Linuxをインストールした時に、/root/ディレクトリ直下に
anaconda-ks.cfg というファイルが出来上がるのですが
このファイルさえあれば、作業に使うLinuxサーバはDebianだろうがUbuntuだろうがCentOSだろうがFedoraだろうが構いません。

では早速簡単な手順を紹介・・・。
概ね @ITの記事 の通りでいいのですが、この記事にも間違った部分がありちょっと躓きました。

まずRedHatのDVDの.isoイメージファイルまたはDVD本体を用意し
適当なディレクトリへmountします。

mount -v -t iso9660 -o loop,ro rhel-server-5.5-i386-dvd.iso /media/


物理的なDVDメディアをサーバに挿入している場合はこんな感じ↓
mount -v -t iso9660 -o ro /dev/cdrom /media/

環境に応じて適宜読み替えてください。

mountしたら、lsやdf等のコマンドで正常にmount出来ている事を確認します。

確認できたら、ディスクの中身を作業用ディレクトリへ全部コピーします。
mkdir -v /tmp/redhat
cp -vpr /media/* /tmp/redhat/
cp -vp /media/.discinfo /tmp/redhat/

最後の /media/.discinfo ファイルもコピーすることを忘れないように気をつけてください。
/media/* で指定しても bash は * を解釈する際に
.(ドット)から始まる隠しファイルを無視します。
この .discinfo ファイルが RedHatのインストーラディスクであるという定義がなされてある為
このファイルをコピーし忘れると インストールメディアが見つかりません とエラーを吐かれて自動インストールに失敗します。
躓いていたポイントが、この .discinfo ファイルのコピー漏れでした。

コピーが終わったら RedHat インストール時に /root/ に生成される anaconda-ks.cfg を
作業用ディレクトリへコピーします。
cp -vp anaconda-ks.cfg /tmp/redhat/isolinux/ks.cfg

ファイル名は anaconda-ks.cfg のままでもいいのですが、長いので ks.cfg についでにリネームしつつコピーしています。

次に、どういう設定でRedHatをインストールしたいかの定義をks.cfgに記述します。
ks.cfgはただのテキストファイルなので vi 等のエディタで編集可能です。
vim /tmp/redhat/isolinux/ks.cfg

ks.cfgの詳細についてはRedHatのサイト等を参考にします。

次にks.cfgを起動時に読み込ませる為にisolinux.cfgファイルを編集します。
vim /tmp/redhat/isolinux/isolinux.cfg


default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append ks=cdrom:isolinux/ks.cfg initrd=initrd.img

要点は
--
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
--
とks.cfgの場所を/tmp/redhat/からみての
相対パスで指定している事と
--
default linux
・・・<中略>
label linux
--
のように、default行とlabel行が同じ文字列で、そのlabelにks.cfgのパスを記述する事です。

最後に/tmp/redhat/ の中身を全て1つの.isoイメージファイルに固めて、出来上がりとなります。
固めるコマンドは下記
cd /tmp/redhat/
mkisofs -r -l -J -o /tmp/autoRedHat.iso -b isolinux/isolinux.bin  -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

-o オプションで出力先.isoイメージファイルを指定します。
その他のオプションはBootable ISOイメージを作成する際に必要なオプションだと思われます。
最後の
--
-boot-info-table
--
の後に半角スペースを1個空けて .(ドット) を打つのを忘れないように気をつけて下さい。
最後の .(ドット)でカレントディレクトリ(つまり /tmp/redhat/ )をISOイメージに
固めるソースディレクトリに指定しています。

しばらく待つと /tmp/autoRedHat.iso ファイルが出来上がります。
このファイルをDVDへ iso 焼きして、サーバの光学ドライブに挿入し、DVDからBootすると
ks.cfg で定義した通りに全自動でRedHatのインストールが走ります。

以上~

2011年1月25日火曜日

HELLSING

HELLSINGというアニメを見ました。
このアニメ超面白いです。ノリとしては
吸血鬼と殺戮がある為月姫・・とはちょっと違いますが
まぁ吸血鬼っていう点と、ゾンビ化して襲ってきたりするので
High School Of the Dead と
さらにブラックラグーンを組み合わせたような(?)
感じのアニメでした。主人公が強すぎですねw

2011年1月21日金曜日

WordPress + SQLite

WordPressのチューニングに関する続きです。
前回の投稿でlighttpd(Webサーバ)とPHPは動くようになったかと思います。
今回はこの構成に、データベースを追加し、WordPressを
いよいよ動くようにするお話です。

WordPressは通常データベースにはMySQLを使います。
しかし再三述べているように、MySQLは非常に重いです。
今回は軽いデータベースとしてSQLite
を使用します。
重要な点なのですが、SQLiteはデータベース"サーバ"ではありません。
MySQL等のデータベースサーバは常に常駐(Daemonize)し、何もしてない間も
メモリを消費し続けたままですが、SQLiteは
必要なときに呼び出されるだけで、普段は全くリソースを消費しません。
この点は非常に大きいです。さらに動作時の負荷もかなり軽いので、パフォーマンスチューニングには
もってこいというわけですね。

WordPressのデータベースにSQLiteを使用する際はこのプラグインを使用します。

ただし残念ながらこのプラグインは更新が遅れており、
現在はWordPress v 2.9.2 までしか対応しておりません。

試行錯誤してなんとか最新版を使おうとしてみたのですが
どうしても上手くいきませんでした。
どなたが上手くいった方いらっしゃいましたらコメント下さい・・・。
その為現在アップデート通知を無視して、 v2.9.2 の古いバージョンで運用しております。

早速導入手順です。
apt-get -y install php5-sqlite

まずphp5からSQLiteを扱えるようにphp5-sqlite
パッケージをインストールします。
次にWordPress本体をインストールします。
上記で述べた通り、WordPressは古いバージョンを落とす必要があります。
WordPress公式サイト過去のバージョンリンクをクリックし、
v 2.9.2のtar.gz形式のファイルのURLを確認し、ダウンロードします。
cd /usr/local/src/
wget -c http://ja.wordpress.org/wordpress-2.9.2-ja.tar.gz

ダウンロードしたWordPressを展開し、DocumentRootへ配置します。
tar -zxvf wordpress-2.9.2-ja.tar.gz
mv -v ./wordpress /var/www/blog

wordpressディレクトリを /var/www/ へ
配置しましたが、この際わざとディレクトリ名を blog に変更しています。
blog に変更することで、ブログのURLが
http://ドメイン名/blog/
となっていい感じになるからです。

次いってみましょう。
cd /usr/local/src/
wget -c http://downloads.wordpress.org/plugin/pdo-for-wordpress.2.7.0.zip
unzip pdo-for-wordpress.2.7.0.zip
cd pdo-for-wordpress/
mv -v * /var/www/blog/wp-content/
cd /var/www/blog/wp-content/
rm -f readme.txt


WordPressのwp-content/ ディレクトリの中に
pdo-for-wordpress/ ディレクトリ内のファイルとディレクトリを全て配置
し、不要なreadme.txt を削除しています。
注意しなければならない点としては、
pdo-for-wordpress/ ディレクトリ内の pdo/ ディレクトリ丸ごとと
db.php が wp-content/ ディレクトリ直下に存在しているという点です。

cd /var/www/
chown -R www-data:www-data ./blog
cp -vp wp-config-sample.php wp-config.php

DocumentRootへ移動し、WordPressのディレクトリやファイル全ての所有者とグループを www-data に設定します。
www-data はDebianのWebサーバを動かすシステムユーザ及びグループです。

次にwp-config.php ファイルを修正します。
修正した箇所は以下です。
diff -u wp-config-sample.php wp-config.php

--- wp-config-sample.php        2010-02-16 23:09:11.000000000 +0900
+++ wp-config.php       2010-12-30 17:19:08.000000000 +0900
@@ -37,6 +37,8 @@

/** データベースの照合順序 (ほとんどの場合変更する必要はありません。) */
define('DB_COLLATE', '');
+
+define('DB_TYPE', 'sqlite');   // mysql or sqlite

/**#@+
* 認証用ユニークキー


define('DB_COLLATE', '');

の行の下に
define('DB_TYPE', 'sqlite');

を追記するだけですね。
// mysql or sqlite

はただのコメントになります。あってもなくても動作は変わりません。

ここまで設定したら、一度lighttpdを再起動して
/etc/init.d/lighttpd restart

WordPressセットアップURLへアクセスします。
http://サーバのドメイン名/blog/

Webブラウザで簡単にセットアップが実行できます。
セットアップ実行後はadminアカウントで自動生成されたパスワードでログインします。
自動生成されたパスワードは覚えにくいので、後で設定画面から変更する事が可能です。

ちょっと長くなりましたが、とりあえずWordPressセットアップまで~

以上。

2011年1月19日水曜日

ドメイン名変更

ブログのURL(というかドメイン名)を変更しました。
旧: http://falconws.mine.nu/blog
新: http://falconws.dyndns.org/blog

本当は変更したくなかったのですが、変更した理由は
MSN Messenger(Live Messenger)のチャットにおいて、
http://任意のドメイン名.mine.nu
というような、http:// でリンクする文字列かつ、ドメインが[mine.nu]に所属する文字列を
ブロッキング(フィルタリング)するように仕様変更されているようで
そのせいで、例えば私が誰か知人にブログのURLを示した際
チャットが送信できずにエラーで返ってくるということが多々あり煩わしくなったからです。

自宅のDNSサーバの設定変更、WordPressのURL設定変更、
ブログアクセス解析の設定変更(まだ動作確認は取れず)、
自宅ルータの設定変更、作業に使うPC3台ぐらいのブックマークの修正、
リモートアクセスに使っているPuTTYのセッションのアドレス修正等など
色々な箇所の修正が必要で大変でした。
まだ修正漏れや設定ミスがもしかしたらあるかも・・・・。

MSにディスられたmine.nu・・・

これ経緯はどうも、チャットでURL送ってウイルスばら撒くBot対策のようです。
2chスレとかに情報があったのを読んだ気がします・・・。
ことあるごとにドメイン名変えてたらやってられんぞこんなの。。。

2011年1月18日火曜日

北九州のパソコンショップ

知り合いのパソコンショップの店長のブログです。
この記事でもまた工夫を凝らしてお客さんのためにカスタム
システムを構築していますね。いつもお疲れ様です!

2011年1月17日月曜日

WordPressアクセス解析導入

WordPressで構築したBlogですが、アクセス解析はどうするのかとググってみたら こちら のサイトに紹介があったので、Googleの提供する
Google Analytics
を導入してみました。さてどんな感じか楽しみです。

2011年1月12日水曜日

Linux のメモリー・フットプリントを削減する

Linuxサーバのメモリを節約しようと色々調べていたら良サイト発見。
Linux のメモリー・フットプリントを削減する

一読の価値がありますよ!

WordPressチューニング、Webサーバ

WordPressを動かすのに必要なWebサーバのチューニングについてです。

まず、Apache2は重いと再三述べていますのでApache2を使わない事は
今更書くまでも無いことですね。
lighttpdを使います。

ディストリビューションはDebianなので、とても簡単にインストールできます。
下記のコマンドを実行します。
apt-get -y install lighttpd

ちなみに、下記コマンドでlighttpdの説明が読めます。
apt-cache search lighttpd
lighttpd - 最小限のメモリしか使用しない高速で軽量なウェブサーバ

次にlighttpdの設定ファイルですが、下記にあります。
/etc/lighttpd/lighttpd.conf

この設定ファイルをバックアップしてオリジナルを残しておいて
後は好きに編集します。
phpと連携する為に下記を設定します。
diff -u lighttpd.conf.org lighttpd.conf

--- lighttpd.conf.org   2010-02-01 04:14:11.000000000 +0900
+++ lighttpd.conf       2010-12-20 23:00:42.000000000 +0900
@@ -13,6 +13,7 @@
"mod_access",
"mod_alias",
"mod_accesslog",
+            "mod_fastcgi",
"mod_compress",
#           "mod_rewrite",
#           "mod_redirect",
@@ -165,3 +166,12 @@
}
}

+fastcgi.server = (
+".php" =>
+    ("localhost" =>
+        (
+            "socket" => "/tmp/php-fastcgi.socket",
+            "bin-path" => "/usr/bin/php-cgi"
+        )
+    )
+)

diff の出力結果だけだと分かりにくいと思いますので詳細を。
まず16行目に
"mod_fastcgi",

を追記します。

次に設定ファイルの末尾に下記を追加します。
fastcgi.server = (
".php" =>
("localhost" =>
    (
        "socket" => "/tmp/php-fastcgi.socket",
        "bin-path" => "/usr/bin/php-cgi"
    )
)
)

この辺の情報ソースは こちらを参考にさせて
頂きました。ありがとうございます。
公式のソースはこちら

上記設定をして 下記コマンドでphpをインストール
apt-get -y install php5 php5-cgi

ここまでして下記コマンドでlighttpdを再起動して設定を読み込み
phpinfo() の確認をする。
/etc/init.d/lighttpd restart
vim /var/www/index.php

<?php
phpinfo();
?>

chown www-data:www-data /var/www/index.php

後はWebブラウザからアクセスしてphpinfo() が動作する事を
確認してくださいまし。

以上、今日はここまで~

2011年1月4日火曜日

WordPressサーバチューニングのポイント

WordPressサーバのチューニングのポイントを載せます。

以前の記事でも書いたのですが、このWordPressサーバはBuffaloのLS-GLをDebian Lenny化
して構築しています。その為メモリが128MBしかなく、CPUは266MHzと超低スペックです。
WordPressはWebサーバ(一般的にはApache2)とPHP(Webサーバと連携して動作)と
MySQL(データベース)の3つを連携させて動作させます。

1.Webサーバの選定
WebサーバとしてはApache2が一般的に使われていますが、Apache2はメモリ消費量がかなり
大きいです。Webサーバは軽量さに定評のあるlighttpd
採用します。これでCPU、メモリリソースともに大幅に節約できます。

2. PHP環境の最適化
PHPは2点程最適化しました。まず1点目はphp.iniファイルを修正してメモリ使用量の上限を小さく設定し
メモリ消費を抑えた点。詳細は後ほどの記事で書く予定です。
2点目はPHP-APCの導入。APCとはAlternative PHP Cacheの略称で、キャッシュを活用して
PHPの処理速度を向上させるものです。

3. データベースの選定
MySQLは大量にメモリを消費します。従ってもっと軽いデータベースを採用する必要があります。
SQLiteを採用し、リソースを節約しました。

以上3点程のチューニングがメインとなっております。それぞれの具体的な設定方法等は
後ほどの記事にて書く予定です。

今日はここまで・・・・

2011年1月3日月曜日

実家帰省中~

現在北九州の実家に帰省中~
実家に居ると家事しなくていいし、仕事も休みとっているし・・・
だらだらと堕落してしまいそうだ・・・。とはいえ実家に居ても
ちゃんとパソコンしてるんだけど・・。実家のLinuxサーバに
プリンタとスキャナ認識させて、WindowsマシンからLinux
サーバ上のスクリプトファイルをダブルクリックするだけで
スキャナが動くようスクリプトをWSHで書いたり・・・。

なんか夢中になって実家のインフラ整えてるといつの間にか
朝の5時まで没頭してた。


オレ涙目w