カテゴリー
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 のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Linux

CentOS6の練習-#9(ビルド環境を整える)。

 明日は,旧7月1日らしい。朝夕はすっかり秋めいてきたが,昼は相変わらず暑い。それでも,盆休みが終わって,昨日1週間ぶりで道々の田んぼを見たら,稲穂が出そろっていた。今日はツクツクボウシの鳴くのも聞いた。そして今は,これから夕立が来るのか,PCに触っているのが気持ち悪いほど,雷鳴がしている。

 夕べはギータの劇的なサヨナラホームランで勝った。球宴後,さあダッシュと思ったら,がっくりくる試合が続いて落ち込んでいたのだが,8月に入ってから,まあまあだ。何とか,5割復帰したし。上も抜け出せないでいるから,ここが踏ん張りどころだよー。鷹のみなさま,頑張ってちょうだい。

 ところで本題の方だが,いつも,buildとmakeはどう違うんだろうと思っていた。今回ちょっと気を入れてあちこち読み漁ってみたら,用語の発生した時期が違うだけで意味はあまり違わないらしいネ。少し,違う意味で使っているページもあるようだが,作業的にはだいたい同じことをやっているようだ。

 CentOS6の練習-#6で書いたように,すべてパッケージで済ませるかどうか悩んでいるが,それにしてもこの際buildの勉強は身を入れてやっておくべきだろう。今まで,実践でビルドにかかわったことはあっても,何やっているかなんて,あまりまじめに考えたことがない。コンパイルはやってるんだろうとか思ってたけど,リンクなんかの作業も入るんだねー。知らなかった。

 まっ,ありがちな「Hello, World!」の表示プログラムのbuildでもやってみるかな。今回の参照ページは,仕事で使える魔法のLAMPだけ。

  1. まずは,GCC(GNU Compiler Collection)のインストール。こういうところはパッケージを利用する(爆)。
       $ sudo yum install gcc gcc-c++
  2.    $ vi hello.c
    で,/home/centosに,以下の内容で,hello.cを作成する。
         #include <stdio.h>
         main()
         {
          printf(“Hello, World!n”);
         }
  3.    $ gcc hello.c -o hello
    で,コンパイルしてみる。-oオプションで実行ファイル名をhelloに指定。一瞬で終わるよ。
  4.    $ ./hello
    と実行してみると,
         Hello, World!
    と,表示された。

 ふーん,シェアードライブラリ(=.so⇒シェアードオブジェクト)っていうのは,Winのダイナミックリンクライブラリ(.dll)と同じなんだ。以下のコマンドで,いつもお世話になっているbashがリンクしている.soを調べてみた。
   $ ldd /bin/bash
     linux-gate.so.1 => (0x003da000)
     libtinfo.so.5 => /lib/libtinfo.so.5 (0x00e49000)  <<—  helloと違う.so
     libdl.so.2 => /lib/libdl.so.2 (0x004dc000)  <<—  helloと違う.so
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00b31000)

 ついでに, $ ldd hello をやって比べてみた。
     linux-gate.so.1 => (0x00d44000)
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00634000)
となるので,この3つは簡単なプログラムでも,C言語で書かれたプログラムが動くためには,絶対にいるようだネ。

 次に,hello.cを2つの分けて,一つずつコンパイルした後,リンカを使って一つのファイルに仕上げる作業をやってみる。

  1. $ vi main.c  で,以下の内容のmain.cを作成する。
         main()
         {
          hello();
         }
  2. $ vi hello.c で,以下の内容のhello.cを作成する。この際,ひらがなの表示を試してみることにした。
         #include <stdio.h>
         hello()
         {
          printf(“こんにちは,みなさん!n”);
         }
  3. まず,main.cだけコンパイル。  $ gcc -c main.c
    lsで調べると分かるけど,この段階で  main.o  ができている。
  4. 次に,hello.cをコンパイル。  $ gcc -c hello.c
    これも調べると  hello.o  ができている。
    -cオプションのときは,「name」.c ⇒ 「name」.oというように.oのファイル名を決めるようだ。
  5. リンク作業。素のリンカldは使わずに,gccから呼び出す形で使う方が普通だそうだ。
       $ gcc main.o hello.o -o hello
    調べてみると,実行ファイルhelloができているので,
       $ ./hello
    と実行してみると,
         こんにちは,みなさん!
    と,表示された。ちゃんと,ひらがなも表示される。日本語フォントを特別に手動で入れる必要はないようだ。

 この時点で,/home/centosには
   hello hello.c hello.o main.c main.o
があるが,あとの都合上生成された hello,hello.o,main.o を削除する。
   $ rm hello main.o hello.o

 さて,makeをインストールしますか。
   $ sudo yum install make

 Makefile作成。  $ vi Makefile  で,内容は次の1行。
     hello: main.o hello.o
     ターゲット: 依存ファイル1 依存ファイル2 ……
となるらしいが,今回は,main.o と hello.o から hello を作るだけなので,この1行でO.K.
 makeを走らせてみる。
   $ make
   cc -c -o hello.o hello.c
   cc -c -o main.o main.c
   cc hello.o main.o -o hello
とメッセージが出て,終了すると,/home/centosに hello,hello.o,main.o ができている。

   $ touch hello.c
をやったのち,makeをやると,
   cc -c -o hello.o hello.c
   cc hello.o main.o -o hello
さっきよりメッセージが1行少ない。touchでタイムスタンプの変わったhello.cだけがコンパイルし直されて,新しいhelloが作られることが分かる。

 本日の最後の練習は,GNU Helloを使った実行ファイルの作成。

  1. まず,ダウンロードのために wget をインストール。もっとも,自鯖の場合,この間のClamAVがらみでwgetは導入済み(汗)。
       $ sudo yum install wget
  2. 最新のGNU Helloをゲット。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz
  3. 同じバージョンのシグネチャファイルもダウンロード。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz.sig
  4. GnuPG(調べてみたら,gnupg2-2.0.14-4.el6.i686が,すでにインストール済みだった。)を使って,ファイルの正当性を確認する。
       $ gpg –list-keys    <<—  初回起動で,/home/centos/.gnupg が作成される。
       $ vi ~/.gnupg/gpg.conf
    で,中ごろにある keyserver-options auto-key-retrieve 行をアンコメントする。
  5. 以下のコマンドで,シグネチャの確認。
       $ gpg –verify hello-2.8.tar.gz.sig
     これ,何もしないでやったら日本語のメッセージが戻ってきたが,変な日本語。もちっとどうにかならんの。
         ————————————————————————————————————————
         gpg: 2012年04月21日 02時55分39秒 JSTにDSA鍵ID 80EE4A00で施された署名
         gpg: 鍵80EE4A00をhkpからサーバーkeys.gnupg.netに要求
         gpg: 鍵80EE4A00: 公開鍵“Reuben Thomas <rrt@sc3d.org>”を読み込みました
         gpg: 絶対的に信用する鍵が見つかりません
         gpg: 処理数の合計: 1
         gpg: 読込み: 1
         gpg: “Reuben Thomas <rrt@sc3d.org>”からの正しい署名  <<— こういう行があれば,O.K.というか,うーむ。
         gpg: 警告: この鍵は信用できる署名で証明されていません!
         gpg: この署名が所有者のものかどうかの検証手段がありません。
         主鍵の指紋: 9297 8852 A62F A5E2 85B2 A174 6808 9F73 80EE 4A00
         ————————————————————————————————————————
  6. パッケージを展開し,展開されてできたディレクトリに移動する。その後,ls -pで直下のファイルとディレクトリを確認する。
       $ tar zxvf hello-2.8.tar.gz
       $ cd hello-2.8
       $ ls -p
         ————————————————————————————————————————
         ABOUT-NLS GNUmakefile README build-aux/ doc/ po/
         AUTHORS INSTALL README-release config.in lib/ src/
         COPYING Makefile.am THANKS configure m4/ tests/
         ChangeLog Makefile.in TODO configure.ac maint.mk
         ChangeLog.O NEWS aclocal.m4 contrib/ man/
         ————————————————————————————————————————
    /の付いてるやつはディレクトリね。READMEとかTODOとかINSTALLあたりは読むけど,あとはドキュメント関係でもあんまり読んだことがない(汗)。あっ,たまにChangeLogも読む。
  7.    $ less INSTALL
     「Briefly, the shell commands `./configure; make; make install’ should configure, build, and install this package.」ということなので,素直に,
       $ ./configure –prefix=/opt/hello-2.8    <<—  インストール先を/opt/hello-2.8にしてやってみた。
     無事通ったので,もう1回, $ ls -p をやってみると,いろいろ変化があるが,大きなところで Makefile ができたのが分かる。とすると,ちゃんとmakeできるはずなので,
       $ make

       $ ./configure | grep ‘checking’ | wc -l
    で何をチェックしているのか項目数を調べてみた。参照ページでは,202と書いてあるが,うちのでは250あった。どんどん増えていくんだろうなあ。

     makeが終わったので,インストールしてみた。
       $ sudo make install

       $ ls -p /opt/hello-2.8  で確認してみると,確かに bin/ share/ ができている。
       $ ls -p /opt/hello-2.8/bin で見ると,中に実行ファイル hello があった。
       $ /opt/hello-2.8/bin/hello  と実行してみた。
         世界よ、こんにちは!
    と表示された。完了!!!

 本日は,ここまで。

カテゴリー
everyday life

o6asanの掲示板。

投稿アップデート情報  追記(8/25)  追記2(8/26)  追記3(11/29)  追記4(2014/2/24)

 この間,「&の&amp;への変換。」のときに作った「o6asanの掲示板」を整理した。結局,UTF-8版だけを残して,これを自鯖ダウン時の連絡用という位置づけにしようと思う。あとのShift-JIS版とEUC-JP版は削除してしまったが,捨ててしまうのも惜しいので,3本ともzipにしてダウンロードできるようにした(爆)。もし,3つを比べてみようという奇特な方がおられたら,ここからどうぞ。UTF-8版SHIFT-JIS版EUC-JP版

 改造版を公開した形になるので,お礼かたがたKENTさんにも,お問い合わせフォームから連絡をしておいた。

 で,新装開店した「o6asanの掲示板」には,こないだうちから,juneさんところでりりさんが話題にしていた,SSIによる最終更新日取得機能も入れてみた。もっとも,.shtmlファイルを単独で動かす必要から,あまり好きではないフレーム仕様になってしまった。久しぶりにフレームのタグ書いたなあ。なんと,いまだに手書き(手書きって意味わかるよね。テキストエディタで書くってことダヨ。流石に,紙に鉛筆というわけではないよ(大笑い)。)なのよ。UTF-8でエンコードする必要から,Winのメモ帳は使わんかったけど。BOMがくっついていると,ブラウザによっては1行余計な空白ができるんだよー。

 TODOSに書き込みしたら,すぐにりりさんが「新・o6asanの掲示板」にレスつけてくれたんだが,早速,エラー。なんでかっていうと,私のつけたタイトルが「自鯖ダウン時連絡用」でね,これに,レス付けると自動で「Re: 自鯖ダウン時連絡用」になるんだよね。もともとのJoyfulには,タイトルは全角で15文字までっていう制限があったのだ。これに引っかかっちゃった。えっ,15文字ないって,そうなんだよね。初め,なんでよって思ったんだが,考えたら,UTF-8だと,全角日本文字は3バイト使うんだよ。完全に忘れてた。

 実際,Joyfulのタイトル文字数制限のところを見たら,30バイトまでというカウントになっていた。で,使用モジュールにEncodeを追加してやって,lengthのカウントのとこにdecodeも追加してやって解決。使っているうちには,まだいろいろ出てくるだろうなあ。

追記(8/25):
 SSIの利用部分を結局<iframe>で書き直した。キャッシュによるリロード手間への対策というかなんというか。

図2=個別画面図1=一覧画面追記2(8/26):
 りりさんが,「o6asanの掲示板」の方に知らせてくださったが,うかつに書き込んだ,<iframe>の<と>をエンティティするのを忘れていたので,追記の文章から下が見えなくなっていた(図1=一覧画面,図2=個別画面 参照)。ウッ,ひどいもんだ。今,直しました。

追記3(11/29): KENTさんのところに合わせて,Joyful Note v3.71の改造版をアップした。

追記4(2014.2.24):
 ドメインを移管したので, XREA においてあったものは,なくなった。

カテゴリー
Linux

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

投稿アップデート情報  追記(9/8)  追記2(10/1)

 前項で

そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

と書いたのだが,ClamAVをwgetでインストールしたときに分かったことがある。
 常識なんだろうが,yumでインストールすると,依存関係をyumの方でちゃんとやってくれる。なので,
   $ sudo yum install clamd
とやると,clamav,clamd,clamav-dbが,すべてインストールされるが,wgetでダウンロードして,rpmでインストールするとそうはいかないから,順番とかライブラリに気を付けなければいけないことになる。どのサイトにも「yumは依存関係の処理もやってくれる」と書いているし,clamav直前のlm_sensorsのインストールでは,自分でも依存関係でいろいろ入ることに驚いているのに,これらのことをしっかり認識していなかったりするのだ(汗)。ただし,rpmを手動でインストールしても,yumは関知してるようで,
   $ sudo yum list installed|grep clam*
   clamav.i686 0.97.5-2.el6.rf installed
   clamav-db.i686 0.97.5-2.el6.rf installed
   clamd.i686 0.97.5-2.el6.rf installed
とちゃんとリストに表示される。

 ということになると,やはりclamavを含むリポジトリの導入をやっておいた方がいいわけで,ここ(魚拓です)を参考にそれをちょっとやってみた。大概のところは,clamavの導入時にリポジトリを追加し,あとでこれを外すみたいに書いてあって,「めんどくさいな。それならwgetでその都度やっても,同じジャン」とか思っていたのだが,参考ページではyum-prioritiesプラグインをインストールすることになっている。これ,いいな。
   $ sudo yum install yum-plugin-priorities
 CentOs6のCentOS-Base.repoを弄る。[priority=1]を追加してやって,リポジトリに優先順位をつけるわけだ。
   $ sudo vi /etc/yum.repos.d/CentOS-Base.repo

   [base]
   name=CentOS-$releasever – Base
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
   #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #released updates
   [updates]
   name=CentOS-$releasever – Updates
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
   #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #additional packages that may be useful
   [extras]
   name=CentOS-$releasever – Extras
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
   #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加
上書き保存して,終了。

 さて,rpmforgeリポジトリをインストールし,ついでにアップデートしておく。どうして,rpmforgeリポジトリにしたかっていうと,ClamAVオフィシャルのLinux(魚拓です)「RedHat and Fedora」のところに,「Dag Wieersによって大変よくメンテされてるリポジトリがあるのでそれを使うといい」と書いてある。これが http://packages.sw.be/clamav/ で,前項ではここからwgetで入れたわけ。今回は,も一度FAQを読みに行って,How do I use Yum ?のところを読み,rpmforge-release packageを見に行って,「RHEL6 and CentOS-6 x86 32bit」の下記を選択した。でもこれ,結局のところ理研のミラーから落ちてくるようだ。
   $ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
   $ sudo yum update rpmforge-release

 「11 packages excluded due to repository priority protections」と出た。yum-prioritiesを入れた効用だ。お利口さん。さて改めて,
   sudo yum install clam*    で,うっかりインストールしてしまったので,改めて   sudo yum install clamd
でやり直した。clamav,clamd,clamav-dbについては,最新版がインストールされていると出たが,依存関係がうまく解決されていなかったようだサービスを止めて,インストールし直してみた。

 その後,
   $ sudo vi /etc/clamd.conf
で,189行目を下記のようにコメントアウトする。
   #User clamav
clamdを再スタート。
   $ sudo /etc/rc.d/init.d/clamd restart
 –9/8(土),消し線追加。どうしてもうまくclamdscanを走らせられないので,clamscanで行くことにした。この場合,Userはclamavのままで,不都合はなかった。clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。今のところ,何が足を引っ張っているのか,不明。当面は,clamscanでいいことにしよう。–

   $ chkconfig –list
をチェックしてみると,この段階で,

clamd  0:off  1:off  2:on  3:on  4:on  5:on  6:off

となっており,clamav-milterとclamdが自動起動O.K.になっているようだ。sudo yum install clamdだと,有効になっているサービスは,clamdだけだった。

   $ sudo freshclam
 $ sudo /etc/rc.d/init.d/clamd restartも,freshclamやるまえから一度でうまくいった。やっぱ,前回は何かまずかったのかな。
 sudo yum install clamd でやると,やはり,freshclamを先にやらないと,clamd restartがうまくいかない。

追記2(10/1):
 上に,
> clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。
と書いたのだが,これについては,CentOS6.3 Minimalを改めて新規インストールして試したら,permissive+rootでは走らせることができた。いろいろ弄っていたのでどこかがまずくなっていたのかもしれない。

カテゴリー
Linux

CentOS6の練習-#7(lm_sensorsとClamAVの話)。

投稿アップデート情報  追記(8/12)

 今日は,夕立あり。3時過ぎには,降り出した。まぁ,一時の雨足は強かったが,本当に夕立で,すぐにやんだ。昨日は立秋。暑い暑いと言っていても,季節は進んでいるな。

 Tera Termを起動して,サーバに接続する。
   $ sudo yum update
をやってみた。できたけど,アップデートが何もなかった(爆)。そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

 Tera Termそのものは,CUIのターミナルエミュレータだが,マウスでコピー&ペーストもできるし,サーバの処理をやりながらおんなじPC上でこの記事も書けるし,うんと楽チン。CentOS6.3のMinimalインストールでは,マウスさえ使える状態になっていなくて,久しぶりにキーボード頼りだった。日頃も結構ショートカットキーを使ってはいるが,全部となると,また問題が別。今日の夜中にSSHが使えるようになって,前記事の冒頭でぼやいたことが嘘みたい。サーバ上はこのまま,CUIだけでいいや。現金なやつ —>> 自分

 本家のお世話-#40。で書いたように,春から初夏にかけて,温度のことで大騒ぎしたxw4200なので,lm_sensorsを入れて温度を測ってみた。しかし,lm_sensorsを入れるだけでも,依存関係で結構いろいろ入るものである。
   $ sudo yum install lm_sensors
   $ sudo sensors-detect
   $ sensors
      ———————————————
      smsc47b397-isa-0480
      Adapter: ISA adapter
      fan1: 5619 RPM
      fan2: 0 RPM
      fan3: 0 RPM
      fan4: 3810 RPM
      temp1: +52.0°C
      temp2: +0.0°C
      temp3: +42.0°C
      temp4: +0.0°C
      ———————————————
 今朝からずっと火を入れていて,14:00現在,室温34℃の状態で上記だと,上出来じゃないだろうか。ただし,システムファンは7段階の7番目(「低 <-- 123456(7) --> 高」)でフル回転していて,ものすごーくウルサイ。

 そういえばClamAVを入れていないので入れてみることにする。標準のリポジトリには含まれていないので,ダウンロードにwgetを使うが,これもMinimalには入っていないので,先にwgetをインストール。
   $ sudo yum install wget
 次に,ClamAV関係の3ファイルをダウンロードする。
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamd-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-db-0.97.5-2.el6.rf.i686.rpm
 ダウンロードした3ファイルは/home/centosに保存されている。
   $ sudo rpm -ivh clamav-db-0.97.5-2.el6.rf.i686.rpm
はできたが,
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
をやると,libltdl.so.7がないと怒られるので,libtool-ltdlをインストール。
   $ sudo yum install libtool-ltdl
改めて,次をやると
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
通ったので,次に,
   $ sudo rpm -ivh clamd-0.97.5-2.el6.rf.i686.rpm
で,インストールは完了。

   $ sudo /etc/rc.d/init.d/clamd start
とやると,
     Starting Clam AntiVirus Daemon: LibClamAV Error: cl_cvdhead: Can’t read CVD header in
     /var/clamav/daily.cld
     LibClamAV Error: cli_loaddbdir(): error parsing header of /var/clamav/daily.cld
     ERROR: Malformed database
と daily.cld が壊れているらしいので,先に
   $ sudo freshclam
をやってみた。その後,改めて
   $ sudo /etc/rc.d/init.d/clamd start
をやったら,Clam AntiVirus Daemon が無事走り出した。

追記(8/12):
 ちゃんとrpmforgeリポジトリを導入して,ClamAVのインストールをやり直した。その経緯を次記事に書いたので,インストールする場合は,そっちを参考にしてください。

カテゴリー
Linux

CentOS6の練習-#6(SSHサーバ)。

 まず,ぼやき。LINUXサーバはCUIで行くって一応決めたんだが,やっぱ慣れない。なんか何十年も時代を遡った気分になる。しかし,使い勝手は別にして,セキュリティの点から言うとあんまりいらないものというか,使わなくてすむものは入れないほうがいいんだろう。例えば,BINDだって,うちのレベルだとなければないですむ。
 それと,もうひとつ悩んでいるのが,パッケージの利用。表題のSSHだってCentOS6.3標準のパッケージだと,openssh-5.3p1。開発元の最新だと,openssh-6.0p1。Apacheは2.2.15だし,PHPは5.3.3と来る。これまでのポリシーに反するから,やはり,自分でビルドすることに馴染むべきなのかなぁ。でも,Winだと最新バージョンを使うからって,ビルドまではやらないから,ホント馴染みがない。どうしよう。

 ところで本題。今のところユーザがrootしかいない。昨今,SSHの接続には,rootを使わないのが主流みたい。というわけで,この際,-gオプション付きでグループ(users)を指定して,一般管理ユーザcentosを作る。ホームディレクトリが一緒に作られるようだ。パスワードも設定しておく。
   # useradd -g users centos
   # passwd centos
 この一般ユーザをsudoで使いたいのだが,Minimalインストールの場合は,sudoそのものがインストールされていないので,これをインストールする。
   # yum install sudo
 あと,sudoersの編集をする。以下を追加。(注:sudoersファイルって,実は行単位で管理されているようで,追加場所は root の直下でなくて,末尾でも構わないようだ。)
   centos ALL=(ALL) ALL
 ひとまずログアウト,centosでログイン。プロンプトが# —->> $に変わる。
   # exit
   login: centos  <<—- 作成したユーザ名
   Password:  <<—- 作成したユーザのパスワードを入力
   $ pwd
   /home/centos と表示され,ログイン直後はユーザのホームディレクトリにいることが分かる。
   $ sudo -l  <<—- このユーザのsudo権限を確認(表示結果は,sudo_-l.txt参照)

 ところで,CentOS6の練習-#5で,SSHデーモンはデフォルトで動いていることが分かっているので,現時点のバージョンと設定を確認。
   $ rpm -q openssh
と問い合わせると,openssh-5.3p1-81.el6.i686が戻ってきた。これは,インストール時と同じである。OpenSSHによれば,現時点の最新バージョンはopenssh-6.0p1なんだが,wikiをうろうろしていたら,Securing OpenSSHの8. Frequently Asked Question (FAQ)にUpstream Vendorが出すセキュリティ・パッチをきっちり当てていれば,無理に最新バージョンにする必要はないと書いてあった。前述のように悩んではいるのだが,独自にビルドしてインストールするのは,もう少しわかってきてからにして,今回はこのままで行くことにした。
 さて,設定を弄るにあたってマニュアルを見たいのだが,installed.txtでわかるとおりMinimalでは,Manもインストールされていない。ここで,インストールする。
   $ sudo yum install man
   $ man sshd_config
で表示されたものを参考にしながら, /etc/ssh/sshd_configを見ていく。これの一番上の方に注釈として,コメントアウトの形で書いてあるのがデフォルトの設定で,アンコメントの分が特別に設定を変えてあるところだと書いてある。ずーっと見ていくと,まず,

  1. #Port 22 になっているのだが,これを Port xxxxx (0 ~ 65535なら何でもよい。)にする。
    ssh のポート22っていうのはWELL KNOWNだから,自分しか使わない接続のポートとしては「変えておいた方が無難だよな」って程度。普通は,0からずっと開いてるポートをなめてくって形だろうから,時間かかったらあきらめてくれることを狙って,大きい数の方がいいのかな。今どき,時間もあんまり関係ないかなぁ。まっ,でも22のままよりはいいだろう。
  2. Protocol 2(つまり,SSH2)になってて,レガシー(つまり,SSH1)は殺されてるから,O.K.
  3. #ServerKeyBits 1024  —>>  ServerKeyBits 2048
  4. #PermitRootLogin yes  —>>  PermitRootLogin no
  5. #RSAAuthentication yes だから,デフォルトで使えることになっているのだが,
    RSAAuthentication yes にして,利用していることを明示しておく。そのほうが,あとで自分が確認するとき,混乱しなくて済む。<<— 設定はデフォルトのままだけど,自分がこれを使うと特に認識したいときは,すべてこの書き方で行く。ということで,
    #PubkeyAuthentication yes  —>>  PubkeyAuthentication yes
    #AuthorizedKeysFile .ssh/authorized_keys  —>>  AuthorizedKeysFile .ssh/authorized_keys
  6. #HostbasedAuthentication no  —>>  HostbasedAuthentication no
  7. PasswordAuthentication yes  —>>  PasswordAuthentication no
    #PermitEmptyPasswords no  —>>  PermitEmptyPasswords no
  8. ChallengeResponseAuthentication no になっているからてるから,O.K.
  9. GSSAPIAuthentication yes  —>>  GSSAPIAuthentication no にもどす。ここは,あとで変えるかもしれない。
  10. X11Forwarding yes  —>>  X11Forwarding no にもどす。ここも後で変えるかもしれない。

 こんな感じかな。これで,

  • SSH2 接続。
  • 2048ビットのRSA公開鍵・秘密鍵
  • 上記鍵ペアのパスフレーズ

を想定した接続になるはず。

   $ sudo vi /etc/ssh/sshd_config
で設定を書き換える。
   $ which sshd
でsshdの場所を調べる。
   $ sudo /usr/sbin/sshd -t
で,テスト。bad configurationが戻ってきたら対処。今回は何も戻ってこないので,次へ進む。
   $ sudo service sshd restart
   Stopping sshd:                  [ OK ]
   Starting sshd:                  [ OK ]
が瞬時で戻ってきた。ハヤッ。

 SSHのポートを変更したので,ファイアーウォールの設定(/etc/sysconfig/iptables)で,ポート22を上で設定したものに変更する。変更を適用するために,サービスをリスタート。
   $ sudo service iptables restart

 「2048ビットのRSA公開鍵・秘密鍵」のつもりなので,鍵を用意しなければいけない。ssh-keygenコマンドで,CentOS6上で生成できるようだが,鍵ペアのパスフレーズにかなり長いものを使うつもりなので,入力が不安。まぁ,出来るまで何度でもやればいいようなもんだが……それに,公開鍵・秘密鍵の性質から考えて,クライアント側で生成して,サーバに送るほうが安全だろう。秘密鍵はメールで送るわけにいかないが,公開鍵ならそれもできるわけだし。
 どうせWin端末からリモートするから,ターミナルエミュレータとしてTera Termを導入することにした。Tera Termには鍵生成の機能もある。Tera TermはかなりあとまでSSH2やUTF-8に対応していなかったらしいが,現在はサポートするようになり,Tera Termプロジェクトが順調に動いているようなので,PuTTYでなくこちらを使うことにした。

  1. リリースファイル一覧から,teraterm-4.74.exeをダウンロード。Windows用定番SSHクライアント「Tera Term」の使い方を参考にしながら,イントラ内のWin端末にインストール。オプションがいろいろあるが,今回は初めてのことなので,「標準インストール」した。自分が使わないオプションは,入れないほうがいいかもしれないが,インストールするのはWin端末で,サーバ上じゃないから,ちょっとお気楽。
  2. Tera Termを起動する。新しい接続の窓は閉じて,鍵を生成する。練習サーバは,自LAN内からだけのアクセスだが,これ(今回のLINUX サーバ構築)を機会に外部からでもリモート出来るようにしてみたいという夢(オーバー ^^,,, )があるので,ガンバ。
    「設定」>>「SSH鍵生成」から,図1の設定で鍵を生成。生成の終わったところでパスフレーズを入力。公開鍵と秘密鍵を保存したら,鍵生成の窓を閉じてTera Termを終了する。
    ところで,
       公開鍵(id_rsa.pub)
         = サーバに登録する鍵(人に見られても問題ない鍵)
       秘密鍵(id_rsa)
         = ローカルマシンに置いておく鍵(人に見られてはいけない鍵)
    なので,公開鍵の方をサーバにコピーしなければいけない。
         参考ページ:秘密鍵と公開鍵
  3. Tera Termで鍵を作ったので,サーバ上にディレクトリ.sshがない。これを作る。場所は,/home/centos/.ssh 。
       $ cd
       $ mkdir .ssh   パーミッション755 ownerはcentos
       $ chmod 700 .ssh
     USBフラッシュメモリに入れたid_rsa.pubをサーバにコピーする。
       $ sudo mount -t vfat /dev/sdb1 /mnt/flash
       $ cp /mnt/flash/id_rsa.pub .ssh/authorized_keys
          パーミッション755 ownerはcentos
       $ sudo umount /mnt/flash
       $ chmod 600 .ssh/authorized_keys
       $ sudo service sshd restart

 さて,Tera Termを起動して,イントラ内から接続してみよう。

  1. 新しい接続のホスト名と,TCPポートだけをデフォルトから変更して[OK]をクリック(図2)。
  2. 1度目は,セキュリティ警告が出る(図3)。ここで,known hostsリストに追加しておくと,次から出なくなる。サーバ情報が何も変わっていないのに,セキュリティ警告が出る場合は,なりすましなどの危険があるので,そういう場合の用心のためにも,この画面は記録しておいた方がいいと思う。
  3. 図4でユーザ名とパスフレーズ,秘密鍵の場所を指定してやると,接続できた(図5)。
図1
図1

図2
図2

図3
図3

図4
図4

図5
図5

 今回の主たる参照先(上記ですでにリンクを貼っているところ以外)。

  1. Red Hat Enterprise Linux 6
  2. 仕事で使える魔法のLAMP
  3. Linuxコマンド百科辞典
カテゴリー
everyday life

本家のお世話-#47。(phpMyAdmin3.5.2,MySQL5.5.25aへアップデート)

 phpMyAdmin-3.5.2-english.zipとmysql-5.5.25a-win32.msiにアップデートした。

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

  1. phpMyAdmin-3.5.2-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.2 になっていれば,完了。
  8. バックアップ等を削除する。

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

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

かかりつけ歯医者さん。

 今日は,出先からの帰りにかかりつけの歯医者に寄って来た。1週間ばかり前に,「定期検診のお知らせ」というのをもらっていたが,先週は忙しくて行きださず,昨日,前を通ったので寄ろうと思ったら,午後休診の日だったのだ。この歯医者は,幼馴染(幼稚園まではよく遊んだらしい。本人には,よく分からないが……)がやっているのだが,半年ごとに「お知らせ」をくれる。もっとも,行かないで放っておくと,次はくれない。そこまでは面倒見切れないということだろう。

 乳歯のころは虫歯だらけだった。「菊のこと。」で触れた大叔父が歯医者で,母は「歯医者の子供が虫歯だらけで外聞が悪い」と叱られたそうだ。そのころの子供にしては歯の手入れはよかったのだが,偏食が極端だったので,そのせいかもしれない。就学前は預けられっ子で,ものすごく甘やかされて育てられた。就学後はほぼ両親の手で育てられたが,両親は私の偏食を直すのに一苦労も二苦労もしたし,私自身は学校給食が苦痛で苦痛で仕方がなかった。今でも,体調を壊すと幼児退行して,多くのものが咽喉を通らなくなる。その偏食が劇的によくなったのは,飲酒するようになってからのことだ(爆+笑)。

 さて,そんな育ちだったせいもあるが,学生時代以降,歯については1年に1回くらい検診に行くようになっていた。そして,今の歯医者にかかるようになってからは,半年に1回は検診に行くようになったわけだ。そして,驚いたことに,30代くらいからはめったに虫歯が進行しなくなった。永久歯になってすぐは,随分虫歯がひどかったのだが……なんでよくなったのだろう。 さて,御多分に洩れず,年をとるにしたがって,徐々に虫歯よりも歯周病のほうが問題になってきた。

 この歯医者が,歯周診断書というのをくれる。これを載せてみた(右図)。2009年4月の分が最初になっているが,実は,この年の3月に歯槽膿漏の急性症状でひどい目にあった。そのとき,少し治療した後,ある程度落ち着いた状態で調べてくれたのが,図1である。ひどいね。学生時代以降ずっと続けていた検診を,3年くらいサボっていたのが,この時期なのだ。これで懲りて,また,割とまじめに通うようになった。図2と図3の間にもう1回分あるはずなのだが,どうしても見つけられなかった。

 「痛くもないのに歯医者に行くなんて」と思う方もいるかもしれないが,そのほうが時間もお金も節約できるし,何より痛い思いをしなくて済む。それに,半年おきくらいに行くと,歯医者に「ここも悪いよ」と言われたくないので,日頃の手入れが念入りになり,その分歯周病の症状が進まなくて済むと言うことだ。

 エラそうに書いているが,「咽喉元過ぎれば熱さを忘れる」ってことが,よく起こるんだけどね(爆)。

図1 2009年4月分
2009/4分
図2 2009年8月分
2009/8分
図3 2011年12月分
2011/12分
図4 2012年7月分
2012/7分
カテゴリー
Linux

CentOS6の練習-#5(デフォルトで動いてるサービス)。

 アヂ,アヂ,アヂ!! やっと,昨日梅雨が明けた。しかし,今週の天気は,一昨日も昨日も今日も,梅雨というより,晴れーーーのち夕立ッ,見たいな感じだった。暑いし湿気てるし,「うーっ,溶けてしまいそうだ」。日本の夏だー。

 ひとしきり唸ったところで本題。7/13に6.3のMinimalをインストールしてから,正直,まだ何も手を付けていない。一番最初に,CentOSを使おうかなと決めたときのサイトを見に行って,別のディストリに食指を動かすなんてことをやったりもしている。まぁ,でもCentOSで行くことは変えてないけどね。

 電源入れるたび,yum updateだけをやってる感じなんだが,結構頻繁にkernelのマイナー・アップデートがあるんだな。7/13からもう2回もアップデートがあった。
   kernel.i686 2.6.32-279.el6  <<— インストール時
   kernel.i686 2.6.32-279.1.1.el6
   kernel.i686 2.6.32-279.2.1.el6
という感じ。でもって,
   yum list installed|grep kernel
とか
   rpm -qa|grep kernel
とかで問い合わせてやると,3つとも出てくるから,kernelについては自動で清掃作業はやらないみたい。まぁ,もしやられるとしたら逆に怖くもあるけど。今のところは必要ないが,古いkernelの削除を,CentOS6だと package-cleanup –oldkernels でざっくりできると書いてある。package-cleanup は,yum-utils に含まれているらしい。しかし,installed.txtを見た限りでは,Minimalだとインストールされていない。実際,
   package-cleanup –oldkernels
とやったら, command not found が戻ってきた。で,yum-utils をインストールしてみた。いらんことかもしれんが……。
   yum install yum-utils
 終わってから,
   package-cleanup –oldkernels
をやってみたら,
   kernel.i686 2.6.32-279.1.1.el6
   kernel.i686 2.6.32-279.2.1.el6
だけになった。ふーん,お利口さんだ。最新だけでなく,その直前のkernelも残すんだ。

 Minimal インストールだと,初期の段階で,どんなサービスが動いているんだろうか。 ntsysv が使えると書いてあるが,このパッケージもインストールされていなかった。あれもこれもインストールするのはどうかと思い,
   service –status-all
でチェックして見た。標準出力に出した場合と若干差があるようだが,USBフラッシュメモリに書きだした一覧がこれ。知らないサービスが並んでいて,見てもまだよく意味がよくわからない。しかし,sshdなんかはMinimalでも初めから走ってるんだなということは分かった(爆)。

カテゴリー
Windows

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

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

 PHPのおニューが出た。というわけで,4日遅れくらいで,PHP5.4.5(Jul-18 23:41:03UTC)にアップデートした。

 Apache Loungeのほうでも,下記のようになっていたので,php5apache2_4.dll-php-5.4-win32.zipをダウンロードし,中にあったPHP5.4.5用のphp5apache2_4.dllをPHPディレクトリにコピーした。
   20 July 2012
   php handler 5.3.15 and 5.4.5

 php.iniは前版と本質的な変更点がなかったので,そのまま利用した。もし,参考にされる方がいたら設定については,本家のお世話-#28。を参照してください。

 しっかし,前にも書いたが,相変わらず php handler が小枝番ごとに変わっている。やはりまだ,安定したとは言い難いんだろうな。

追記(8/10):
 今日は,8月10日。なっなんと,2週間以上,php5ts.dllのcrashが起こってないのだ。びっくり。PHP5.4.5へアップデートにしてからだ。Windows+Apache2.4.x+PHP5.4.xの件,ついに解決かな。開発者のみなさま,おめでとうございます&ありがとうございました。

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