2013年03月

2013年03月17日

Apacheをソースコードからコンパイルしてインストールしてみた


今更ながら、Apacheインストールしてみた。
ただし、yumで入れるとすぐ終わっちゃうので、今回はソースからコンパイルしてみた。
(ソースからApacheインストールは、きりのさんもりくちゃも初体験ですた)

インストール手順は大体こんな感じ。
(これのせっかちな人向け見ながらやった)
http://httpd.apache.org/docs/2.0/ja/install.html

①Apacheのソースをダウンロード
参考サイトでは、lynxを使っていますが、
何故かcurlを使ってダウンロード。
# curl -O -L http://ftp.riken.jp/net/apache//httpd/httpd-2.4.4.tar.gz

そしてgunzipとtarで展開。
# gunzip httpd-2.4.4.tar.gz
# tar xvf httpd-2.4.4.tar

②configureしてみるものの
# ./confugure
と、ここでエラーが。
ログ取ってなかったので実際のエラーメッセージは流れてしまったのですが、
要約すると「aprのバージョンが古いから新しいバージョンのものを入れてね」というメッセージらしい。

新しいバージョンをインストールし直すため、今入っているaprパッケージを出力。
# rpm -qa | grep apr
出力されたものを削除。
# yum remove apr apr-util apr-devel

③aprをインストール
aprのソースをダウンロード。
(※インストールするときのURLはhttp://apr.apache.org/ で調べることができます)
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-1.4.6.tar.gz
そしてgunzipとtarで展開(①を参照)してインストール。
# ./configure
# make
# make install

④apr-utilとapr-iconvをインストール
それぞれ以下のコマンドでソースをダウンロード。
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-util.1.5.1.tar.gz
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-iconv-1.2.1.tar.gz
そして展開。

# ./configure
したら、「--with-aprオプション使ってね」というエラーが。
http://memorva.jp/memo/linux/apache.php
調べてたら↑のサイトで
「--with-aprオプションで/usr/local/aprを指定しないとutil入らないよ」という記述発見。
ということで、
# ./configure --with-apr=/usr/local/apr
終わったら、makeしてmake install。

⑤pcreをインストール
もう一度Apache本体のソースを./configureしてみたものの、
今度は「configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/」というエラーが。
さっぱりなので調べてみると、どうやらperlのライブラリ?らしい。
これがないとApacheのインストールが進まないので、pcreをインストール。
手順はhttp://d.hatena.ne.jp/yohei-a/20120809/1344490042 を参照。
(ただし、りくちゃさんはどうしてもcurlを使いたかったので、
ソースはftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ からダウンロード。
上に記載されているサイトを指定してもうまくいきませんでした。。。)

⑥ようやくApacheをインストール
今度こそエラー吐きませんように、と祈りながら./configureしたら、
祈りが通じたのかコマンドが正常終了。
というわけでコンパイルとインストール。

⑦Apache自動起動設定
aprインストールの際に参考にしたサイト(http://memorva.jp/memo/linux/apache.php)に
自動起動スクリプトが載ってたのでほぼ丸コピしてスクリプト作成。
しかし、chkconfigってなんだ??
ということで、調べてたらこのサイト(http://www.pochinet.org/linux0A050.htm)に説明が。
 chkconfigの部分では、chkconfigでonになるランレベル、startの番号、stopの番号を指定。
 例えば、sshdだと「chkconfig: 2345 55 25」となっている。
# chkconfig --add httpd2
# chkconfig --list | grep http
 →ランレベル:3,4,5でchkconfigがonになったことを確認
rc.dのリンクファイル名を見てみる
(サービスがどのランレベルでon/offなのか、onの場合の番号、offの場合の番号がわかるようになっている)
# cd /etc/rc.d
# ls -l rc[0-6].d/*httpd2
リンクが出力されるはず。
そのリンクファイルの名前が、chkconfigの状態と番号、対応するサービス名を表している。
うわぁ、なんか某案件ですごく見たことあるわぁ…(;'ω')コマンドでリンク設定してたよ…

⑧Apacheを起動してみる
自動起動設定が終わったので実際に動かしてみる。
# service httpd2 start
エラー:/etc/rc.d/init.d/functionのパーミッションがおかしい
確認したら/etc/rc.d/init.d/functionのパーミッションが755になってなかった(´・ω・`)
というわけで、パーミッション変更して
# service httpd2 start
すると、何かエラーが。
AH00557:http://d.hatena.ne.jp/foldrr/20090203/1233593584
AH00558:http://d.hatena.ne.jp/uriyuri/20100511/1273575287

servernameとかhostsとかhttpd.confの設定をせずにApacheを動かそうとするとこんなエラーを吐くらしい。
(冷静になって考えてみると、サーバ名とかわからなかったりするんだからそうだよね)


でも一応動いているので、ブラウザで表示できるか(外から見れるか)を確認。
→見れない(´・ω・`)
きりのさん「ファイアウォール止めてみよう」
# service iptables stop
# service ip6tables stop

「It works!」
キタ━(゚∀゚)━!!

というわけで、無事に動作確認まで終わりました。
長かった・・・・


ちなみにカフェでOSインストール~aprインストールしてたんですが、その時の写真。

156040_494986623892393_1779273482_n

その日はsurface発売日だったので、surface(輸入版)を使用して作業。
近くにいた若いお姉さんに「えっ何この人怖い…」的な目で見られながらの作業でしたw

surface便利だからみんな買うといいよ!!((



次のネタはnginxになるかもしれないしならないかもしれない。。


riku_cha at 01:12|PermalinkComments(0)サーバ 

2013年03月07日

ITILのお勉強の話

最近、ITILファンデーションの取得に向けて、ちまちまとお勉強しています。
休職中だから時間もあるし、今までできなかったこともやりたいなーと思いまして。

ところで、ここにきて何故ITILなのか。
りくちゃさんがITILをお勉強しようと思った切っ掛けを少しですが書いていこうと思います。


①サービスの運用をしているけど、一運用者には契約なんかの話が見えにくい。
これは前から常々思っていたことで、運用をしている立場からだと、
会社同士の契約がどうのこうのっていう話が見えにくくてよくわからない。
そもそも会社はどういう契約をしていて、自分は何のためにここで仕事をするのか。
これをクリアな状態にしたいなーと。

②ステップアップしたい
りくちゃさんはまだ未熟なので、運用者としてしかシステムに携わったことがないです。
それだけだとちょっとー、ということで。
これまで主に運用監視をやってきたことを生かして、サービスの提案なんかできるといいな、
そのためにはサービスってどうやって作られるんだっけ、そもそも何が必要なんだっけ、
どういう手順で何をすればいいんだっけ。。。。
何も知らないなー、どうしようときりのさんに相談したらITILを勧められました。

③運用する上でも知っておいたほうがいいと思った
お客様に提案しない、運用者の立場でもたぶんこれは知っといたほうがいいことなんだろうなーと
参考書をぱらぱらめくりながら思ったわけです(そしてその本が今手元にある)。
何も思わずにサービスの運用しててもなんだかなー、とも思うので、
少しでも自分で勉強して運用って何だろう?っていうことを考えられたらなーと思った次第。

3月中に受験できるといいなぁ・・・・


これ終わったらLPICかOSS-DBの勉強するかなー。。。
それとも応用情報にするか。。。。(春は受けないけど)


riku_cha at 23:36|PermalinkComments(0)TrackBack(0)運用管理 

2013年03月01日

PandoraFMSのtserver.MYIが壊れてた話


いろいろ設定して遊んでたPandoraちゃん(PandoraFMSサーバ)ですが、
WebコンソールでPandoraちゃんのdataserverやらnetworkやらがdownする事象が発生してました。
(~going downメッセージ出てすぐに、~going upって出る)
きりのさんと「そのうちなんとかしないとねーあははー」とか話してたけど、
夕食後、暇だったのでふと思い出したのでとらしゅしてみました。


①ログファイルを見て回る
/var/log/messages→特に異常なし、ということで、Pandora用のログファイルを見てみる

PANDORA:/var/log/pandora # ls -al
total 1536
drwxr-xr-x  2 pandora root    4096 Mar  1 00:48 .
drwxr-xr-x 13 root    root    4096 Jan 30 13:49 ..
-rw-r--r--  1 root    root     682 Jan 30 13:49 pandora_agent.log
-rw-r--r--  1 root    root 1379840 Mar  1 00:53 pandora_server.error
-rw-r--r--  1 root    root    5066 Feb 26 21:30 pandora_server.error-20130226.bz2
-rw-r--r--  1 root    root    5068 Feb 27 21:30 pandora_server.error-20130227.bz2
-rw-r--r--  1 root    root    5076 Feb 28 21:30 pandora_server.error-20130228.bz2
-rw-rw-rw-  1 root    root   64339 Mar  1 00:53 pandora_server.log
-rw-rw-rw-  1 root    root   65610 Mar  1 00:48 pandora_server.log.old
-rw-rw-rw-  1 root    root      23 Feb 28 21:30 pandora_snmptrap.log
-rw-rw-rw-  1 root    root       4 Jan 14 22:11 pandora_snmptrap.log.index


なんかエラーが大量に出てるっぽい(゚д゚lll)
中身を見てみる。


PANDORA:/var/log/pandora # tail -f pandora_server.error
DBD::mysql::db do failed: Incorrect key file for table './pandora/tserver.MYI'; try to repair it at /usr/lib/perl5/PandoraFMS/DB.pm line 579.
(これが延々と続く)

PANDORA:/var/log/pandora # tail -f pandora_server.log
2013-03-01 00:38:22 PANDORA [V1] Pandora FMS Server 'PANDORA' unhandled error.
2013-03-01 00:38:22 PANDORA [V1] [E] 'PANDORA': DBD::mysql::db do failed: Incorrect key file for table './pandora/tserver.MYI'; try to repair it at /usr/lib/perl5/PandoraFMS/DB.pm line 579.

(これが延々と続く)


▂▅▇█▓▒░('ω')░▒▓█▇▅▂うわあああああああなんじゃこりゃああああああ


②調べてみる
とりあえず他のとこのPandoraちゃんで同じような事象が発生してないかを調査。

あったあった。(ただしスペイン語を読み解く必要有り)
http://openideas.info/smf/index.php?topic=7204.0;wap2
どうやらこの人も同じようなことで悩んでいたっぽい。
んで、他の人が「これ、MySQLのMyISAMの問題じゃね?」って言って参考ページに誘導されている。
→りくちゃも参考ページ見に行ってみた
 →スペイン語だよ!!!orz
  →頑張って読む


③tserver.MYIの状況を確認する
エラーの原因はここだとほぼ特定出来たので、データファイルの状況を確認。
※コマンドは前述の参考ページに書いてあったのをそのまま流用

PANDORA:/var/lib/mysql/pandora # myisamchk -c tserver.MYI
Checking MyISAM file: tserver.MYI
Data records:       4   Deleted blocks:       0
myisamchk: warning: Table is marked as crashed
myisamchk: warning: 4 clients are using or haven't closed the table properly
- check file-size
myisamchk: error: Size of datafile is: 396               Should be: 456
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check data record references index: 4
- check record links
myisamchk: warning: Found          4 key parts. Should be: 8
MyISAM-table 'tserver.MYI' is corrupted
Fix it using switch "-r" or "-o"


データファイルがクラッシュしとるー!!!(((( ;゚д゚)))アワワワワ
ここできりのさん帰宅。


④データファイルを修復する
きりのさんが帰宅したので、データファイルを修復してもらいました(

参考ページ:http://akkunchoi.github.com/myisam-incorrect-key-file-for-table-try-to-repair-it.html

PANDORA:/var/log/pandora # mysql
mysql> use pandora
Database changed
mysql>
mysql> check table tserver ;
+-----------------+-------+----------+----------------------------------------------------------+
| Table           | Op    | Msg_type | Msg_text                                                 |
+-----------------+-------+----------+----------------------------------------------------------+
| pandora.tserver | check | warning  | Table is marked as crashed                               |
| pandora.tserver | check | warning  | 4 clients are using or haven't closed the table properly |
| pandora.tserver | check | error    | Checksum for key:  3 doesn't match checksum for records  |
| pandora.tserver | check | error    | Corrupt                                                  |
+-----------------+-------+----------+----------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> repair table tserver ;
+-----------------+--------+----------+----------+
| Table           | Op     | Msg_type | Msg_text |
+-----------------+--------+----------+----------+
| pandora.tserver | repair | status   | OK       |
+-----------------+--------+----------+----------+
1 row in set (0.00 sec)

mysql> check table tserver ;
+-----------------+-------+----------+----------+
| Table           | Op    | Msg_type | Msg_text |
+-----------------+-------+----------+----------+
| pandora.tserver | check | status   | OK       |
+-----------------+-------+----------+----------+
1 row in set (0.00 sec)

mysql> quit

このあと、りくちゃさんが先ほどのコマンドを実行。

PANDORA:/var/lib/mysql/pandora # myisamchk -c tserver.MYI
Checking MyISAM file: tserver.MYI
Data records:       4   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check data record references index: 4
- check record links


あっ、修復されたっぽい!!
ということで、様子を見てみることにしました。。。


⑤思わぬ落とし穴
きりのさん「(カチャカチャ...)ん?Pandoraちゃん、サーバプロセスいなくない?」
りくちゃ「えーまさかー」

PANDORA:/etc/pandora # pstree
init---cannaserver
     --console-kit-dae---64*[{console-kit-da}]
     --cron
     --dbus-daemon
     --httpd2-prefork---10*[httpd2-prefork]
     --klogd
     --login---bash
     --5*[mingetty]
     --mysqld_safe---mysqld---9*[{mysqld}]
     --nscd---8*[{nscd}]
     --pandora_agent
     --polkitd---{polkitd}
     --rpcbind
     --sshd---2*[sshd---sshd---bash---su---bash---view]
     x      --sshd---sshd---bash---su---bash
     x      --sshd---sshd---bash---su---bash---pstree
     x      --sshd---bash
     --syslogd
     --tentacle_server
     --udevd---2*[udevd]


ホントだ(  Д ) ゚ ゚
Pandoraサーバのrestartかけました。

PANDORA:/etc/pandora # pstree
init---cannaserver
     --console-kit-dae---64*[{console-kit-da}]
     --cron
     --dbus-daemon
     --httpd2-prefork---10*[httpd2-prefork]
     --klogd
     --login---bash
     --5*[mingetty]
     --mysqld_safe---mysqld---20*[{mysqld}]
     --nscd---8*[{nscd}]
     --pandora_agent
     --pandora_server---sh---snmpget
     x                --10*[{pandora_server}]
     --polkitd---{polkitd}
     --rpcbind
     --snmptrapd
     --sshd---2*[sshd---sshd---bash---su---bash---view]
     x      --sshd---sshd---bash---su---bash
     x      --sshd---sshd---bash---su---bash---pstree
     x      --sshd---bash
     --syslogd
     --tentacle_server
     --udevd---2*[udevd]


めでたしめでたし。
教訓:psでプロセスの確認はしようね。
そのあとも監視継続中ですが、~going downが出なくなりました。

pandora_server落ちてたのに他のネットワーク機器の監視ができてたので、
その日は寝るまでpandoraちゃんすげぇとか言ってました。
このとらしゅのおかげで、本日は睡眠不足です。

そろそろpandoraちゃんのバージョンアップを検討中。

riku_cha at 15:38|PermalinkComments(0)監視