カテゴリー
Windows

本家のお世話-#53。(PHP5.4.9へアップデート)

投稿アップデート情報  追記(12/1)  追記2(2013/2/14)

 本日ようやく(29 November 2012となってるが,多分ついさっきだね,向こう時間だから。今,うちのPCで00:51 JST),PHP5.4.9用のphp handlerが出たので,アップデートする。handlerが出るのを待っていたのだが,こんな話もあるようなので,mbstring.encoding_translation=On にしているサーバは対処したほうがいいかも。うちは,Offです。iniの設定は,「本家のお世話-#28。」と同じ。

 PHPのおニューはいつも通り,VC9のTS版を落としてくる PHP5.4.9(Nov-21 21:22:38 UTC)。待ちかねた5.4.9用のphp handler(php5apache2_4.dll-php-5.4-win32.zipに入っている。)を,Apache Loungeから落として,PHPのフォルダ内にコピーして使う。今回,php.ini-productionは5.4.8からの変更点なし。

追記(12/1):
 上記のこんな話の件,徳丸さんとこに検証と対処法の記事が出てるのに気づいたので,リンクを貼っておく。「PHP5.4.8、PHP5.3.18以前にhashdos脆弱性 」。

追記2(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Linux

CentOS6の練習-#12(ClamAVの話,続き-#3)。

 前稿からずいぶん時間が経ってしまった。あと何に取り組もうと考えていたかというと,「avc: deniedをもとに,
clamdについてSELinuxのポリシーを新しく作る」である。記事を書いて読み直してみたら,「ClamAVの話」というより,SELinuxの話になってるなあ。

 ところで正直なところ,Access Vector Cache (AVC)そのものが,いまだによくわかっていない状態である。

 そもそも,SELinuxには,Access Vectorルール(P.157参照)というのがあって,これはあるプロセスが(今の場合 clamd),ある作業をすることについてのルールであるらしい。で,これを素早く利用するためにキャッシュが作られるのだが,これがAVC。avc: denied(Clam-Per-rt参照)というのが,audit.logに出るということは,必要な作業についての特権が,当該プロセスに許されていないということになる。「Clam-Per-rt」を見ると,avc: deniedが11行出ていて,scontext(Source Context)は11行とも
   scontext=unconfined_u:system_r:clamd_t:s0
である。これは,アクセス元の pid=1362 clamd のセキュリティ・コンテキストなわけだから,11個とも同じなのは当然だ。で,:で区切られた4つの部分を左から順に user:role:type[:level] と呼ぶらしい(Security Context (P.20) 参照)。プロセス clamd は clamd_t ドメインで動いているというわけだ。 Clam-Per-rt は, Permissive かつ User root で clamdscan を /home/centos で走らせたときのログなんだが,このとき user は unconfined_u ,role は system_r となっている。

 一方,プロセス clamd のスナップショットを表示してみると,以下のようになる。ここでは,user が system_u になる。OSを起動したときにデフォで動き出すプロセスのほとんどが,system_u:system_rになっているみたい。この辺もまだよくわからない。グダグダだね。
   $ ps -AZ | grep clamd
   system_u:system_r:clamd_t:s0 xxxx ? 00:00:00 clamd

 さらに,グダグダになるが,忘れないために書いておくと,ps -A(ps -eでも同じ)にくっついている Z は,SELinuxのオプションで,これをつけると大抵のものについて,セキュリティ・コンテキストを表示してくれる。例えば,今の段階で,/home/centos に aaa.txt を作っておいて
   $ ls -Z     とやると,
   -rw-r–r–. centos users unconfined_u:object_r:user_home_t:s0 aaa.txt
というように,aaa.txt のセキュリティ・コンテキストが表示される。

 さて,よくわからないなりに,モジュール・パッケージを作ってみることにする。audit2allow を使うらしいが,
   $ sudo yum provides */audit2allow
で調べてみると,含まれている policycoreutils-python-2.0.83-19.24.el6.i686 が未インストールなので,まずはこれをインストール。
   $ sudo yum install policycoreutils-python

 でね,audit2allow マンを見て, -M オプションを付けて,
   $ sudo cat /var/log/audit/audit.log | audit2allow -M myClamAV
とやってみた。

   ******************** IMPORTANT ***********************
   To make this policy package active, execute:

   semodule -i myClamAV.pp
というメッセージが戻って来て,/home/centos には,myClamAV.pp と myClamAV.te が出来た。
   xxx.pp <<— Policy packages つまり,新ポリシーをロードするためのモジュールパッケージ。
   xxx.te <<— Private policy files in the Reference Policy xxx.ppに何が定義されているかを教えてくれる。

 さあこれで,semodule -i myClamAV.pp をやれば,新しいポリシーが有効になる。とはいうものの,セキュリティ関係の話だから,実態も把握せずに新ポリシーを有効にするのは論外。というわけで,早速,myClamAV.teを覗いてみた。これ見てもらったらわかるけど,とんでもないことになっていた。前稿までにいろいろやったことがすべて audit.log に残ったままだったわけだ。これじゃあんまりだというわけで, myClamAV.pp は削除し, myClamAV.te と Clam-Per-rt を参考にしながら,新しい myClamAV.te を作ってみた。

 Clam-Per-rt をみると, type: xxxx_t で使われているのは,次の4つ。これを module myClamAV 1.0; の後に require として記述。
   clamd_t
   home_root_t
   user_home_dir_t
   user_home_t

 次に,myClamAV.te に class xxxx という行があるが,Clam-Per-rt で使われているclassという単語は,tclass(target class)だけで,tclass=dir と tclass=file の2つ。tclass=dir 関連の denied は, search getattr read open ,また,tclass=file 関連の denied は, read open だから,以下の2行を require に追加し,これを閉じる。
   class dir { search getattr read open };
   class file { read open };

 最後に, clamd_t に allow を許可することを列記する。
   allow clamd_t home_root_t:dir search;
   allow clamd_t user_home_dir_t:dir { getattr read open search };
   allow clamd_t user_home_t:dir { getattr read open search };
   allow clamd_t user_home_t:file { read open };

 出来上がったのが,新myClamAV.te。なんというか,これ,上出来だった。あとで, audit.log を真っ新にして,audit2allow に作らせてみたのと順番が多少違うだけで,同じだったヨ。

 編集した myClamAV.te をチェック。checkmodule マン参照。
   $ checkmodule -M -m myClamAV.te -o myClamAV.mod

 これが,エラーなしで通るまでやる。基本的にやっていることは間違っていなかったが,綴りミスとかセミコロン忘れとか,2回ばかりエラーが出た(恥)。通ると myClamAV.mod ができる。次は, myClamAV.pp を生成。semodule_package マン参照。
   $ semodule_package -o myClamAV.pp -m myClamAV.mod

 できたモジュールをインストールした。
   $ sudo semodule -i myClamAV.pp

 ちゃんとインストールされたかどうか,確認。
   $ sudo semodule -l|grep myClamAV
   myClamAV 1.0   が戻ってきた。インストール完了。

 で,何が出来るようになったかというと,以下の環境において,ユーザのホームディレクトリ(例えば,/home/centos)で clamdscan がエラーなく走るようになった。
   $ getenforce
   Enforcing
   $ grep User /etc/clamd.conf
   User root
=======================================================
   $ clamdscan
   /home/centos: OK

   ———– SCAN SUMMARY ———–
   Infected files: 0
   Time: 0.001 sec (0 m 0 s)
==============================================こんな感じ

 あくまで,ユーザのホームディレクトリという制限つきだから, /root だと,以下のように見慣れたエラーが戻ってくる。
=======================================================
   # clamdscan
   /root: lstat() failed: Permmision denied. ERROR

   ———– SCAN SUMMARY ———–
   Infected files: 0
   Tlotal errors: 1
   Time: 0.000 sec (0 m 0 s)
=======================================================

 さて,Enforcing,User root で clamdscan を走らせることができた。あとは,User clamav でということなのだが,これはまだまだ前途多難なようなので,後回しにして他のことに取り組もうと思う。

 ところで, clamscan を自動で走らせるときに,そのオプションを下記のようにしようかなと思っている。
   clamdscan /
   –infected
   –recursive
   –move=/var/log/clamav/virus
   –log=/var/log/clamav/clamav_`date +%Y-%m-%d`.log
   –exclude-dir=^/sys
   –exclude-dir=^/proc
   –exclude-dir=^/dev
   –exclude-dir=^/var/log/clamav/virus
で,参考に読んだところでは clamdscan のオプションは clamscan に準じると書いてあったが,上のを clamdscan で使うと,
   WARNING: Ignoring unsupported option –recursive (-r)
   WARNING: Ignoring unsupported option –exclude-dir
   WARNING: Ignoring unsupported option –exclude-dir
   WARNING: Ignoring unsupported option –exclude-dir
   WARNING: Ignoring unsupported option –exclude-dir
が戻ってくる。ということは,同じ使い方はできないということになりそうだ。clamscan と clamdscan の違いを考えると,ダウンロードディレクトリをスキャンするのに使うのが現実的かな。

 ああそうだ,忘れないうちに, myClamAV をアンインストールしておこう。
   $ sudo semodule -r myClamAV.pp

カテゴリー
Windows

覚え書-#12。

 「本家のお世話-#20。」のところで,phpMyAdminのconfファイルを作り,Apacheのconf/extraに追加して使う話を書いた。これが出来るんなら,ほかのことも可能なはずとふと思った。実際,awstatsについては,もともともconfの雛形がzipに入っていて,同じようなことをしている。
 で,頭の中にあったのはなんについてかというと,PHPについてなのだ。ちょっと,設定ファイルを読んでみたが,特に問題はなさそう。というわけで,php54.confという名前で作ってみた。

 「本家のお世話-#28。」を見てもらえばわかるが,バラバラにソフトをインストールして,WAMP系サーバを建てるに当たって,オリジナルのhttpd.confにいろいろ付け加えたりしているのは,PHPだけなのだ。他のは,付け加えではなくアンコメントしたり,デフォを書き直したりしているに過ぎない。だから,これをextra-confにしてしまえば,分かりやすく,管理しやすくなるだろってこと。

 php54.confに書いたのは,以下の3行。
     LoadModule php5_module “C:/PHP/php5apache2_4.dll”
     AddHandler application/x-httpd-php .php
     PHPIniDir “C:/PHP”

 もちろん,httpd.confの
     LoadModule php5_module “c:/php/php5apache2_4.dll”

     <IfModule mod_php5.c>
       AddHandler application/x-httpd-php .php
       PHPIniDir “C:/PHP”
     </IfModule>
については,コメントアウトし,Supplemental configurationの区画の末尾に以下の2行を付け加える。
     # PHP settings
     Include conf/extra/php54.conf

 ApacheをRestartする。うまくいった。ちゃんと使える。

カテゴリー
WordPress

覚え書-#11。

 子テーマの話。
 「o6asan’s netradi」をリニューアルして名前を付け替えたときに,テーマも変更した。で,このときにPink Touch 2というのをカスタマイズして使ったのだが,初めて子テーマの機能を利用した。
 「子テーマ」を見に行ったら,「原文が頻繁に更新されており、情報が古くなっている可能性があります。最新版(英語)も合わせてご覧ください。」と書いてあったので,そっちの方を参考に子テーマを作った。その話を書いていなかったので,思い出したときに書いておこうと思う。

 ところで,その話に入る前に!! 昨日改めて,最新版(英語)を見ていて,「Note on RTL support」というのに気付いた。Pink Touch 2にはrtl.cssがあったから,よく文章も読まずに, @import url("../pink-touch-2/rtl.css");  を入れてみたら,アラビア語みたいに右からの横書きになるのだね。ハハハ,rtl=right-to-leftだから当然でした。なのに,焦りまくりました(大笑い)。

 それはさておき,子テーマの話。

  1. 子テーマ用のフォルダを作る。
    場所は他のテーマと同じようにデフォルトのthemesフォルダの中。
    子テーマのフォルダ名は「親テーマのフォルダ名-child」。
    「o6asan’s netradi」の場合,pink-touch-2-child
  2. pink-touch-2-childの中に子テーマのカスタマイズファイルを入れる。
     指定可能なのは,以下の通りだが,「o6asan’s netradi」で実際に作ったのは最低限のstyle.cssだけ。

    1. style.css (必須)
    2. functions.php (任意)
    3. Template files (任意)
    4. Other files (任意)
  3. style.cssの中は以下の通り。
    /*
    Theme Name: Pink Touch 2 Child
    Template: pink-touch-2
    */

    @import url("../pink-touch-2/style.css");

    #header {
    margin: 0px auto 0px;
    min-height: 0px;
    padding: 20px 0 77px;
    position: relative;
    text-align: center;
    width: 690px;
    }

    一番上の/*~*/が子テーマ独自のヘッダーで,ここでどの親テーマに依存しているかが宣言される。で,定義可能な各行の説明を書くと,

    • Theme Name. (必須) 子テーマの名前.
    • Theme URI. (任意) 子テーマのサイト
    • Description. (任意) このテーマの説明 例:初めての子テーマ。万歳!
    • Author URI. (任意) 作者のサイト
    • Author. (任意) 作者名
    • Template. (必須) 親テーマのディレクトリ名。大文字小文字が区別される。
      • . You have to switch to a different theme and back to the child theme when you modify this line.
        これがよくわからない。「テンプレートのディレクトリを変えたときは,違うテーマに切り替えたのち,子テーマを弄りなさい」というようにとれるが,それだと当たり前すぎて注に書く必要がないような気がする……ウーム
    • Version. (任意) 子テーマのバージョン 例: 0.1, 1.0, など

    で,見ての通り,「o6asan’s netradi」の場合,必須の2行しか書いていない。

    あと,
    @import url("../pink-touch-2/style.css");
    は当然ながら主な部分のスタイルは全て親テーマのを利用させてもらうので,インポートするってこと。#headerだけを独自スタイルにするから,これを書く。完全に独自スタイルにするならば,インポートせずに自分が望むスタイルをここに書けばいいということだ。

  4. 後は,ダッシュボードのメニューからテーマを切り替えて普通どおり使えばいいことになる。これで,親テーマのバージョンアップがあっても,大丈夫。

 実際の話,この話を思い出したのは,Pink Touch 2のバージョンアップがあったからなのだ(爆)。

カテゴリー
Windows

本家のお世話-#52。(PHP5.4.8へアップデート)

投稿アップデート情報  全然関係のない追記  追記2(2013/2/14)

 Win用のPHP5.4.8が出たので,アップデート。iniの設定は,「本家のお世話-#28。」と同じ。

 PHPのおニューはいつも通り,VC9のTS版を落としてくる。PHP5.4.8(Oct-17 22:45:30UTC),Apache Loungeから5.4.8用のphp handler(php5apache2_4.dll-php-5.4-win32.zipに入っている。)を落として,PHPのフォルダ内にコピーして使う。今回,php.ini-productionは5.4.7からの変更点なし。

全然関係のない追記:
 昨日は後の月(旧9月13夜)だったんだが,天気が悪くて雲で見えなかった。本日は打って変わって冴えわたる名月。うまくいかないもんだ。でも,きれいだから,外に出て,お月さんを見上げてみてください。⇒我が家の近くの方限定(爆笑)。

追記2(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Windows

本家のお世話-#51。(phpMyAdmin3.5.3,MySQL5.5.28へアップデート)

 phpMyAdmin-3.5.3-english.zipとmysql-5.5.28-win32.msiにアップデートした。

 phpMyAdmin-3.5.3-english.zipの手動アップデート。

  1. phpMyAdmin-3.5.3-english.zipを展開する。
  2. 現在使用中のconfig.inc.phpを,展開して出来たフォルダ内のconfig.sample.inc.phpがある階層にコピーする。新規インストールの場合は,本家のお世話-#20。phpMyAdmin configuration storagephpMyAdmin 環境保管領域あたりを参照してください。ただし,3.5.0から若干仕様が変わっています。その場合はConfig/Serversなどを参照。
  3. 展開して出来たフォルダ内から,config.sample.inc.php,examplesフォルダ,setupフォルダを削除する。
  4. 現在使用中のphpMyAdminのファイルをバックアップする。
  5. 新しいファイルと古いファイルをそっくり差し替える。
  6. ブラウザのキャッシュを削除後,新しいphpMyAdminにアクセスする。
  7. 見慣れた画面が現れ,右下のVersion information が 3.5.3 になっていれば,完了。
  8. バックアップ等を削除する。

 mysql-5.5.28-win32.msiのアップデート。

  1. 現在のデータベースをバックアップする。
  2. mysql-5.5.28-win32.msiをインストール。新規インストールの場合は,本家のお世話-#16。を参照してください。
  3. インストール後,ウィザードを動かしても,新旧が変わらない場合があるので,MySQLサービスを停止・開始する。
カテゴリー
Linux

CentOS6の練習-#11(ClamAVの話,続き-#2)。

 今年も,中秋の名月(9月30日)は見えませんでした。台風17号の余波か厚い雲に隠れていまして。明夜(10月1日)は晴れそうなので,今年も十六夜の月見をしようかなと思っているところです。七夕は,昔の暦通りに行なえば,結構2人の逢瀬を叶えてやれそうな風習ですが,八月十五夜は厳しいですね。なかなか,晴れ上がってくれません。もっとも,晴れると本当に素晴らしい月夜になりますが……

 さて,本題の中間報告です。

 CentOS6の練習-#8を書く前の時点で,実は手を焼いていたことがあった。その件について「clamdscan,User rootでもPermission deniedが出る。」という表題で,「はじめての自宅サーバ構築」さんのところに質問を書いたが,どなたからも,お返事がなかった。しばらく思案投げ首ののち,SELinuxが足を引っ張っているという可能性に思い至り,
   $ sudo setenforce 0
をやって,Permissive かつ User root でclamdscanを走らせてみた。走らせる前に
   $ sudo /etc/rc.d/init.d/clamd restart
もやった。ところがこれでも,lstat() failed: Permission denied. ERROR がでる。いい加減お手上げで,あきらめて,Apacheのrpmのビルドに走った。しかし,サーバを走らせるとなれば,ClamAVを避けては通れない。それに,clamscanだけでなくclamdscanも使ってみたい。しかし,ググってみても,Permissive かつ User root でもエラーが出るなどという情報はどうしても探し出せなかった。もう少し分かっているシステムならいざ知らず,これだけ分からないことばかりでは,自力解決を望む方が無理である。

 さて,どうするか。

 ビルド環境もやっとできたところなのに癪だが,CentOS6.3 Mimimalを再インストールしてみる道を選んだ。何故って,Windowsだって,95を初めて自分用に手に入れたとき,どんだけソフト的に壊して,リカバリを繰り返したもんか。それを思い出して,今回も同じじゃないかと思ったわけ。

 で,結果,これがよかった。といっても,この時点でクリアできたのは,「Permissive かつ User root で clamdscan を走らせること」だけだ。

 当面の目標は,「Enforcing かつ User clamav で clamdscan を走らせること」なのだが……。[セキュアOS SELinux入門]第6回 最も簡単な設定方法を見つけたので,/var/log/messages を覗いてみたが,ここには,記事に記述されているようなメッセージが全く出ていない。記事の日付が2004/07/13と古いので,これからいろいろ変わっている可能性がある。ググって他のところも読んでみたのだが,この時点では,うまいページが見つからない。自分がよくわからないまま探しているときはよくある話だ。わかるようになると,「なんであのときは見つからなかったの?」というくらい適切なページが見つかるようになるのだが。

 しばらくあちこちウロウロしていたが,腹をくくって,SELinux Project に行き,NewUsersのところを見ていたら,The SELinux Notebook – The Foundations (3rd Edition)というのがあるようなので,これを落としてきた。これ,なんと日付が9月2日になっていて,出たばかりみたいだ。14ページに表があって,そこに書いていることを調べてみたら,CentOS6.3では,Old Locationと書かれている方の場所に関係ファイルがある。そこで,The SELinux Notebook – The Foundations(2nd Edition)も落としてきた。落としてからこっち,大分読み齧ってみたんだが,何しろ知らないことばかりを書いてあるものだから,よくわからない。しかし,/var/log/audit/audit.log にまでは,たどり着いた。audit(監査)デーモンがロードされたのちは,こちらにログが吐き出されるらしい。起動直後でも,$ chkconfig –list|grep auditd をやって確認してみるとonになっているから,/var/log/messagesに何もなかったわけだ。

 そこで,(1) Enforcing+User clamav,(2) Permissive+User clamav,(3) Enforcing+User root,(4) Permissive+User root の場合について,audit.log を調べてみた。/home/centos で $ clamdscan をやった場合,(1)~(3)においては, lstat() failed: Permission denied. ERROR が出る。(4)の場合のみ,OKになる。ただし,avc: denied が出ているので,Permissiveモードだから通っているだけだと分かる。これについて,新しくポリシーを作ってやればいいらしい。

 この辺はまだよく理解できていないので,中間報告としては,ここまでにしておこうと思う(汗)。

カテゴリー
Windows

本家のお世話-#50。(PHP5.4.7へアップデート)

投稿アップデート情報  追記(2013/2/14)

 Win用のPHP5.4.7が出たので,アップデート。iniの設定は,「本家のお世話-#28。」と同じ。

 PHPのおニューはいつも通り,VC9のTS版を落としてくる。PHP5.4.7(Sep-13 01:18:16UTC),Apache Loungeから5.4.7用のphp handler(php5apache2_4.dll-php-5.4-win32.zipに入っている。)を落として,PHPのフォルダ内にコピーして使う。今回,php.ini-productionは5.4.6からの変更点なし。

追記(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Linux

CentOS6の練習-#10(Apacheのrpmを作る)。

 httpd-2.4.3.tar.bz2をダウンロードして,展開して中を見てみたら,httpd.specがあった。しかも,Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)というページもある。となれば,やはりrpmを作ってみるのが,CentOSを使い,ディストリのパッケージを使わないものの態度としては,正しい行ないだろう。ということで,Apache2.4.3のrpm作りに挑戦!! (爆)

 長いです。いざ,覚悟!!!

 それに取り掛かる前に,「鍵を信用する作業」や「鍵の信用を取り消す作業」の練習も含めて,この間やったシグネチャの確認をApacheでやってみる。

  1. ソースをダウンロードする。
       $ wget http://ftp.tsukuba.wide.ad.jp/software/apache/httpd/httpd-2.4.3.tar.bz2
    シグネチャをダウンロードする。
       $ wget http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2.asc
  2. 以下のコマンドで,シグネチャの確認。正しい署名と確認された。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  3. 現在よからぬ話は聞いていないので,一応,www.apache.orgの鍵を信用する作業をやってみる。
       $ gpg –edit-key RSA鍵ID
         ————————————————————————————————————————
         コマンド> trust  <<— trustを入力
         あなたの決定は? 5  <<— 一応5にしておく
         本当にこの鍵を絶対的に信用しますか? (y/N) y  <<— 一応yにしておく
         コマンド> q  <<— qを打って,gpg –edit-keyを抜ける。
         ————————————————————————————————————————
  4. もう一度,シグネチャの確認をしてみる。先ほどのメッセージの最後の3行は表示されなくなった。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  5. 公開鍵の信用を取り消してみる。
       $ gpg –delete-key RSA鍵ID
    更にも一度,シグネチャの確認をしてみると,メッセージは元に戻っている。

    まっ,こんなとこだね。これで,備忘録の役目は果たせるから,今後,この件は書かない。

 さて,rpmを作るにはrpm-buildがいるので,何はともあれ,これをインストールする。
   $ sudo yum install rpm-build

 では,Apacheのrpmのビルドに入る。

  1.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    をやったら,早速以下のメッセージが出た。「-devel」パッケージについては,ビルドのときだけしかいらないから,あとはアンインストールしていいと,上記のApache.orgのページに書いてあるのだが,結構な数に上るなあ。サーバ機と開発機は分けておくべきなんだろうか。今のところは,練習なので問題ないがその辺,セキュリティ面ではどうなのだろう。

    エラー: ビルド依存性の失敗:
         autoconf は httpd-2.4.3-1.i386 に必要とされています
         zlib-devel は httpd-2.4.3-1.i386 に必要とされています
         libselinux-devel は httpd-2.4.3-1.i386 に必要とされています
         apr-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         apr-util-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         pcre-devel >= 5.0 は httpd-2.4.3-1.i386 に必要とされています
         openldap-devel は httpd-2.4.3-1.i386 に必要とされています
         lua-devel は httpd-2.4.3-1.i386 に必要とされています
         libxml2-devel は httpd-2.4.3-1.i386 に必要とされています
         distcache-devel は httpd-2.4.3-1.i386 に必要とされています
         openssl-devel は httpd-2.4.3-1.i386 に必要とされています

    地道に,インストール。
       $ sudo yum install autoconf
       $ sudo yum install zlib-devel
       $ sudo yum install libselinux-devel
    ここで,問題発生。
       $ sudo yum install apr-devel
    ディストリのパッケージが1.3.9-5になっている。BuildRequiresでは,上記の通り1.4.0以上だからまずい。

  2. Apacheから,tarballを落としてくる。シグネチャもちゃんと確認すること。
       $ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.4.6.tar.gz
  3. 落としてきたのはgz方式だが,rpmbuildではアーカイブとして扱ってくれないようなので,一度展開し,
       $ tar zxvf apr-1.4.6.tar.gz
    bzip2形式に圧縮し直す。
       $ tar cf – apr-1.4.6/ | bzip2 -c > apr-1.4.6.tar.bz2
  4.    $ rpmbuild -tb apr-1.4.6.tar.bz2

    エラー: ビルド依存性の失敗:
         libtool は apr-1.4.6-1.i386 に必要とされています
         doxygen は apr-1.4.6-1.i386 に必要とされています

    なんだってさ。「どこまで続く泥濘ぞ」ダネ。
       $ sudo yum install libtool
       $ sudo yum install doxygen

  5. 改めて,
       $ rpmbuild -tb apr-1.4.6.tar.bz2
    今度は通った。表示されたメッセージにより調べてみると,/home/centos/rpmbuild/RPMS/i386/に
         apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    ができている。cd コマンドでrpmのできたところに移動。
       $ cd /home/centos/rpmbuild/RPMS/i386/
    これをインストールする。
       $ sudo rpm -Uvh apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    終了後, cd でホームディレクトリに戻っておく。

    apr-develのインストにaprが必要だから,両方ともインストールしないとだめ。それにしても,Minimalインストールで,何も入っていないせいだろうけど,開発環境を整えるのが大変だ。devel用のコレクションか何かを入れたほうが早いかもしれないが,いらないものは入れないスタンスだから,ちょっと我慢してやらないとね。

  6. 同様に,
       $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.4.1.tar.gz
       $ tar zxvf apr-util-1.4.1.tar.gz
       $ tar cf – apr-util-1.4.1/ | bzip2 -c > apr-util-1.4.1.tar.bz2
  7.    $ rpmbuild -tb apr-util-1.4.1.tar.bz2

    エラー: ビルド依存性の失敗:
         expat-devel は apr-util-1.4.1-1.i386 に必要とされています
         libuuid-devel は apr-util-1.4.1-1.i386 に必要とされています
         db4-devel は apr-util-1.4.1-1.i386 に必要とされています
         postgresql-devel は apr-util-1.4.1-1.i386 に必要とされています
         mysql-devel は apr-util-1.4.1-1.i386 に必要とされています
         sqlite-devel >= 3.0.0 は apr-util-1.4.1-1.i386 に必要とされています
         freetds-devel は apr-util-1.4.1-1.i386 に必要とされています
         unixODBC-devel は apr-util-1.4.1-1.i386 に必要とされています
         openldap-devel は apr-util-1.4.1-1.i386 に必要とされています
         openssl-devel は apr-util-1.4.1-1.i386 に必要とされています
         nss-devel は apr-util-1.4.1-1.i386 に必要とされています

    これまたすごい数だ。真面目な話,postgresql-develやsqlite-develなんかは,全然使わないと思うんだが,この辺も分かってきたら,SPECを弄れるようになりたいな。

  8. また,地道にインストール。
       $ sudo yum install expat-devel
       $ sudo yum install libuuid-devel
       $ sudo yum install db4-devel
       $ sudo yum install postgresql-devel
       $ sudo yum install mysql-devel  依存関係で,openssl-develもここで,インストールされる。
       $ sudo yum install sqlite-devel
       $ sudo yum install freetds-devel
       $ sudo yum install unixODBC-devel
       $ sudo yum install openldap-devel
       $ sudo yum install nss-devel
  9. 改めて,
       $ rpmbuild -tb apr-util-1.4.1.tar.bz2
  10. cd コマンドで,
    /home/centos/rpmbuild/RPMS/i386/ に移動して,
       $ sudo rpm -Uvh apr-util*
    終了後, cd でホームディレクトリに戻っておく。
  11. Apacheの依存パッケージの続きのインストール。
       $ sudo yum install pcre-devel
       $ sudo yum install lua-devel
       $ sudo yum install libxml2-devel
    openssl-develはさっき入れたから,あとはdistcacheだけ。

  12. ところが,これがCentOS6.3のパッケージになかった。tarballを見に行ったが,展開してみても,SPECが入っていなくて手におえない。結局,Fedora17のsrc.rpmを拾ってきた。URLの枝番は18になってるね。なんでだろう。
       $ wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/d/distcache-1.4.5-23.src.rpm
    これをリビルド。
       $ rpmbuild –rebuild distcache-1.4.5-23.src.rpm
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -Uvh distcache*
    ホーム・ディレクトリに戻る。
  13.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    やっと,Apache2.4.3のrpmができたのでインストール。
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

    やれやれと思ったら,
         /etc/mime.types は httpd-2.4.3-1.i386 に必要とされています
    が出たので,
       $ sudo yum provides /etc/mime.types
    と調べてみると,どうやらmailcapというパッケージを入れればいいらしい。
       $ sudo yum install mailcap
    改めて,
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

 httpd-2.4.3-1のインストール完了。一応,「It works!」表示までいかないと終わられません(爆)。

  1. Apacheのテストのために,80番ポートを開ける。
       $ sudo /sbin/iptables -I INPUT 5 -p tcp –dport http -j ACCEPT #HTTP
       $ sudo /sbin/iptables -L –line-number   変更の確認
       $ sudo /sbin/service iptables save
  2. BINDを入れていないので,名前解決のために,/etc/hostsにローカルのサーバ名と,IPアドレスを追加。
  3.    $ sudo vi /etc/httpd/conf/httpd.conf
    のServerNameをローカルなものに書き換え。
       $ sudo service httpd restart
    実は,ここで少しはまった。restartをrootでやらないとSocketエラーが出る。
  4. 自鯖Lan内のWin端末のブラウザから,ローカルのサーバ名で,アクセス。
    「It works!」が無事表示された。

 本日は,ここまで。

カテゴリー
Windows

本家のお世話-#48。(Apache 2.4.3,PHP5.4.6へアップデート)

投稿アップデート情報  追記(8/28)  追記2(8/28)  追記3(2013/2/14)

 Lounge版のApache 2.4.3とWin用のPHP5.4.6が出たので,アップデート。ついでに,MySQLも5.5.27にした。conf,iniの設定は,「本家のお世話-#28。」と同じ。MySQLの導入については,「本家のお世話-#16。」を参照。

 Lounge版のApache 2.4.3は,いつも通りVC9版を落とす。httpd-2.4.3-win32-VC9.zip(19 Aug),php handlerも5.4.6用が出ているので,新たにphp5apache2_4.dll-php-5.4-win32.zipを落として,中の5.4.6用をPHPのフォルダ内にコピーする。httpd.confについては,以下の2点が変わっていた。
————————————————————————————————————————————————
 ひとつは,
     #Scriptsock logs/cgisock  —>>  #Scriptsock cgisock
うちの場合は,もともとコメントアウトのままのところだから,関係なし。

 もうひとつは,最後尾に以下の8行が追加されたこと。
     # Deal with user agents that deliberately violate open standards
     #
     <IfModule setenvif_module>
     BrowserMatch “MSIE 10.0;” bad_DNT
     </IfModule>
     <IfModule headers_module>
     RequestHeader unset DNT env=bad_DNT
     </IfModule>
 これは,MSIE 10.0のようにDNT(Do Not Track)がデフォルトでセットされている場合,それをアンセットするということなのか?「オープンスタンダードに故意に違反するユーザエージェントに対処するため]と書いてあるんだが。うーん,よくわからん。よくわからんというのが,その「どっちがオープンスタンダードなのよ」という意味なんだが。その辺は,筆者の立場によって違うとかか?
 出たばかりのせいか,あまり情報もない。その辺に関して何か見たら,追記でも書くことにしよう。
————————————————————————————————————————————————

 PHPのおニューもいつも通り,VC9のTS版を落としてくる。PHP5.4.6(Aug-15 22:48:37UTC)

 php.ini-productionで変わっていたのは,
     ;mail.log =
のところに以下の2行が追加されたこと。うちの場合,これも使っていないところなので,無関係。
     ; Log mail to syslog (Event Log on NT, not valid in Windows 95).
     ;mail.log = syslog

追記(8/28):
 DNT(Do Not Track)がらみの追記。ということで,MSのIE10以外の立場が,オープンスタンダードという扱いらしいが,天下のMSでも束になった広告業界にはかなわなかったんダネと言っていいのかナ。
 ところで,ユーザが明示的にDNTをOnにしたIE10の扱いはどうなるのだろう。そのあたりがまだいまひとつつかめていない。

追記2(8/28):
 「Roy T. Fielding DNT:1」で検索してみると,「Re: action-231, issue-153 requirements on other software that sets DNT headers」がトップに出てきた。ということは,ユーザが明示的にDNTをOn(=DNT:1)の場合は別問題で対処されるということか。HTTPの含んでいる情報についてよく理解していないから,理解の外だな。orz

追記3(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。