38
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

複数サーバ間でPHPなどの設定を比較,確認したい時のTips

Last updated at Posted at 2013-10-16

その① 異なるサーバの設定ファイルをdiffりたい

必要な知識は2つ。

diff <(echo hoge) <(echo huga)

のように書けば、( )の中で実行したコマンド出力同士を比較できます。

ssh remote cat hoge.txt

sshコマンドの後にコマンドを書くと、
remote先のサーバでコマンド実行した結果を出力できます。
上記例だと、remoteサーバにあるhoge.txtの中身を出力できます。

1と2を組み合わせて、

diff <(ssh remote1 cat /etc/php.ini) <(ssh remote2 cat /etc/php.ini)

と書けば、remote1サーバとremote2サーバのphp.iniファイルを比較できます。

言わずもがなですが、
localとremoteを比較したいのならば、

diff <(cat /etc/php.ini) <(ssh remote cat /etc/php.ini)

でOK。

うまいことエスケープすれば、
例えばphp -r "phpinfo();"なんてのもdiffれます。

diff <(ssh remote1 "php -r \"phpinfo();\"") <(ssh remote2 "php -r \"phpinfo();\"")

その② 設定ファイルを見やすくする

さて、サーバ間diffで設定に差があることが判明したとして、
php.iniや、他にもhttpd.confなど、各種設定ファイルは大抵1000行近くあるため、
初心者にとってはとっつきづらく、恐る恐る読み下すうちに嫌になってしまったりします。

そんなときは思い切ってコメントアウト行、空行を省いてしまいましょう。
例えばphp.iniなら";"で始まる行はコメントアウト行なので、

grep -v "^$\|^;" /etc/php.ini

とすれば有効な行だけ抽出できます。

試しに、どのくらい省けたのかカウントしてみます。

% cat /etc/php.ini | wc -l
1801
% grep -v "^$\|^;" /etc/php.ini | wc -l
179

当方の環境で試したら実に約1/10になりました。
実際目を通す部分は1/10で良い、とわかるだけで心理的抵抗感も幾分減るはずです。

38
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?