Archive for the ‘Apache’ Category

conf.d配下のファイル名は気をつけよう

/usr/local/apache2/conf.d/配下のファイルを編集する際は注意が必要だ。httpd.confにデフォルトで”Include conf.d/*.conf”という記述があるため、conf.d配下にあるxxxxx.confというファイルはすべて読み込まれる。

64bit版のライブラリには注意しよう

Apacheの文法テストで以下のようなエラーになってはまった。Cannot load /usr/lib/libxml2.so into server: /usr/lib/libxml2.so : wrong ELF class : ELFCLASS32

httpd -tとconfigtestの違い

Apache文法テスト用のコマンド、”httpd -t”と”apachectl configtest”。実は今まで全く同じものだと思っていたのだが、微妙に違うらしい、と発見した。結論から言うと、環境変数を読み込むか読み込まないかの違いということになる。

Rewriteモジュールを使ったロボット対策

ロシアからやってくるクローラー、Yandexは拒否しておいた方がいいとのことだ。望まないロボット避け対策には、Rewriteモジュールが強力らしい。

ブログ移行におけるリダイレクト

このブログは別のブログから一部を引越ししてきたのだが、その際にリダイレクトの設定をしておいたのでメモ。ついでにBaiduスパイダー(百度クローラー)対策についても。

Apache再起動時の心配事

Apache再起動時の心配事

Apacheを再起動する際にやってしまいがちな間違い。
443通信、つまりSSL通信をしているのであればstartsslとしなければ
いけないところを、startで上げてしまうこと。
# ./apachectl start
→Wrong!
# ./apachectl startssl
→Correct!

困るのが、普通再起動後にプロセスがちゃんと動いているかを以下のようにpsなんかで
確認すると思うのだが、普通にプロセスが動いているのが表示されてしまうので
「問題なし!」と判断してしまうこと。
実際80ポートでリッスンしていようが、443だろうが、出力結果は同じなので。
# ps auxww | grep httpd | grep PROCESS NAME とか

幸いなことに自分は今までこの間違いは経験していないのだけど、身近なところで、
実際あった。
以降、ちゃんとstartsslで上げていても、更に別途確認するようになりましたね…
(言われてやってるんじゃないけど、心配なもので、つい)
以下にように、netstatで443ポートでリッスンしているかどうかをチェックしている。
# netstat -ntl | grep 443

netstatコマンドは、承知の通りネットワーク関連のユーティリティ。
それだけを解説するのに相当の文字数が必要になるほど、多彩なオプション、
使用法が存在するので、今回は割愛w
ちなみに自分はこのオプション-ntlは、いつも癖で使っている。
-n ホスト名の名前解決をせずIPアドレスで表示
-t TCPに関する情報を表示
-l リッスン中のソケットに関する情報を表示

netstatの結果、startsslで起動しているんだから当然ではあるけど、ちゃんと443をリッスン
しているIPアドレスが表示されて、ホッとする。
おかげで安心して次のJobに取りかかれるのだった☆

Apacheの構文テスト

Apacheの設定ファイル httpd.confまたはconf.d配下の関連ファイルを書き換えた時に、構文に誤りがないかチェックするためのコマンド。普段Apacheいじっている人にしてみたら何を今更、な話ではあるがやはり基本は大事。

Apacheのバージョンを調べる

Apacheのバージョンを調べる

サーバの現場ではApacheのバージョンを調べたい、なんてことが結構あると思われる。
現場バリバリの人にとっては何を今更、って話なんだろうけど、誰でも最初はこういう
ことをコツコツ学んでいくものだし。自分もそうだったし。
ってことで、Apacheのバージョンを調べるには以下のコマンドを実行、ですね。
# httpd -v
# httpd -V
※”compile settings”を見せてくれる。その一環としてバージョンも表示
# apachectl -v

もちろん、パスが通っていなければフルパスで指定する。
以前「Apacheのバージョン〜?httpd -vでしょ〜」と鼻歌まじりでコマンドを打ったら
(実際は鼻歌なんて歌ってないですけど)
「んなコマンドねぇよ」と怒られ(command not foundって言われただけですけど)、
「!?」と戸惑ったことがある。
「あ、フルパスでないと駄目なんだね」と気付き、/usr/sbin/httpd -v としてみたけど
結果変わらず。一体、httpdはどこに?
whichとwhereisを使って探してみたけれど、以下のような結果となり、見つからない。
# whereis httpd
httpd:
# which httpd
/usr/sbin/which : no httpd in (/usr/sbin/: ….以下略)

結局、同僚に教えてもらったのだが、その環境においてhttpdは思いも寄らない場所に
格納されており、所定のフルパスで指定したらちゃんと結果が返ってきた。
LinuxのWebサーバといっても、現場によって様々な環境があるため、慣れるまでは
戸惑うことが多々あるものだw
というか、自分の場合いつまでたっても戸惑いの日々が続いているような…
でも、そんなところがまた面白いんだけどネー

meaning of "httpd -S"

こちらのサイトで、httpd.confの場所を簡単に調べる方法としてhttpd -Sの出力結果を見る、というのが紹介されていた。自分も早速試してみたのですが…、出力結果は以下のみ。# httpd -S VirtualHost configuration:Syntax OK.