Fedora Core1〜2によるWEBサーバ構築 (2004年4月頃に記載) (補足) Fedora1〜2の時代にPukiWiki向けに書いたメモなんで情報古いかと思いますがご容赦を。 今ならCygwinよりVNC接続の方がお勧めかと。またtelnetよりはsshですね。 #contents ----------------------------------------------------------------------------- *【導入方針】 ※なるべく手間をかけない事が前提 -Fedora Core1、及びCore2によるWebサーバー構築。 Fedora導入用CD(Core1は3枚・Core2は4枚)を書籍付録等より入手して利用。 -専用PCにて24時間稼動。HDDは一台全てをFedoraに割当(DualBoot等は一切なし)。 -Webコンテンツ修正者は管理者ただ一人。複数ユーザー共同利用関連は除外。 -一つのグローバルIPを家庭用ルーターで家内LAN共有。 プライベートIPは192.168.1.*。各種ネットワーク情報はルーターよりDHCP入手。 -ルーターのPortForward機能を用いて、外界のPort80のみをFedoraマシンに接続。 Fedoraマシン事体のFireWall設定は強いて実施せず(家内LANは全て信用)。~ ※要はセキュリティ関連はルーター任せとし、当資料では扱わず。 ちなみにPortForward設定は大抵固有IPに対して行うので、ルーターのDHCP設定 を調整してFedoraマシンのNICのMACアドレスに応じて固有のプライベートIPを 与え、そのIPを80番Portで外界と繋ぐ様に設定する。 GlobalIPとDNS対応関連は当資料ではノータッチ。~ (当方ではDDNSを別のWindowsマシンのDiCEで管理している)。 -メンテナンスは主にWindowsマシンからCygwin経由にてX-Window画面を直接操作。 及びsambaによるファイルシステムアクセス&FTPでファイルのやりとり。 -基本的にWebサービス主体で最小構成を目標。 ただしX-Windowは利用(RunLevel5)。GUIで出来る設定は積極的にGUI利用。 WindowマネージャはGNOMEとKDEの2種類があるが、ここではGNOMEを選択。~ (Fedoraではこちらの方がサポート手厚い模様。勿論、好みでKDE利用も可) -プリンター利用せず。NSFによるUNIXネットワーク共有利用せず。 ----------------------------------------------------------------------------- *【インストール】 Fedoraのインストールで注意が必要なのは、導入項目の設定個所のみ。 古いLinuxにありがちなVIDEOチップ設定やNIC設定等は全て自動化されている。 (またある程度PnPにも対応しており、例えば稼動後にNICを変更した場合も、 ちゃんと変更後の初起動時に新NICの設定画面が自動起動する)~ HDDパーティション設定なども全てデフォルトでOK。 尚、序盤のCDメディアチェックはskipすべし(無駄に時間がかかるだけ) 導入項目についてはカスタムにて。大項目をチェックすると、まずその項目内の 一般的な小項目が選択される。通常はおおよそそのままで構わないが、細かく 修正したい場合は更に詳細設定に入り、個別項目を見直す。 -X-Window−導入方針の通り、導入。 -GNOME−選択。 -KDE−今回は不要とするが、両方導入して切り替え運用する事も可能な模様。 -エディタ−GNOMEのGEDITをメイン利用する為不要(emacs&vim程度は活用も手) -技術系と科学系−不要 -グラフィカルインターネット−導入(WEBブラウザが動けば十分) -テキストインターネット−不要 -Office−趣味で導入しても構わないが、基本的には不要 -サウンドとビデオ−不要(遠隔操作しても鳴るのは実機であり、事実上意味なし) -著作と発行−不要 -グラフィックス−不要 -ゲームと娯楽−不要 -サーバー設定Tool−導入しても良いが後述の通りredhat-config-httpdは省く事。 -WEB−勿論導入。小項目についてはデフォルト+必要に応じてMySQL連携、 PostgreSQL連携も追加。LDAP認証やDB認証関連はまず使わないので省いても良い。 mod_sslはエラーログを吐く為、利用しないなら同様に省いてしまうのも手。 -メール−SendMailもしくはpostfix位は入れておく(家内LAN利用のみ) -Windowsファイルサーバー(Samba)−導入 -DNSネームサーバー−不要 -FTP−導入 -SQL−PostgreSQL&mySQL関連については活用したい所なので導入。 ただし、後日必要となってから追加導入でも構わない。 -ネットワークサーバー−telnetのみチェック、その他は基本的に不要。~ ※この部分は不要な物を含めてしまうと無駄にサービス稼動してしまう為、 選択は慎重かつ厳選する事が望ましい。 -開発ツール−導入 -カーネル開発−導入(ある程度はコンパイラー環境も揃えた方が便利) -X開発−不要 -GNOME開発−不要 -KDE開発−不要 -管理ツール−導入 -システムツール−導入 -印刷サポート−不要(但しFedora1は大項目チェックなく強制導入?) ----------------------------------------------------------------------------- *【Fedoraのサービスについて】 起動後、いくつか不要サービスが稼動しているので、停止しておく。 GUIでシステム設定-サーバ設定-サービス、より操作するのが楽。 (以下GUIサービスと表記。尚、各サービスの再起動もここで行える) 該当サービスを停止とし、更にチェックを外し自動起動からも除外。 最後に保存して終了(自動起動チェック欄は保存しないと反映されない為、注意) **明らかに不要なサービス -apmd ノートPC用電源管理 -isdn ISDN接続関連 -pcmcia これもノートPC用PCMCIA関連 **Webサーバーとしては不要なサービス (導入時の選択によっては存在すらしない) -nfs UNIX間ファイル共有 -netfs 起動時ネット経由NFS、SMB、NCPマウント -nfslock nfs内部のファイルロック -rhnsd RedHatNetwork -gpm コンソール用マウス -portmap RPC接続のTCPマッピング -cups プリンタキュー処理 ----------------------------------------------------------------------------- *【別端末からのtelnet・ftp利用】 ***telnet Fedoraはデフォルトで外部Telnet接続を禁止している為、以下の対応。~ /etc/xinetd.d/telnet の編集 disable=no ←yesをnoに変更 only_from = 192.168.1.0/24 ←環境に応じた許可IP指定 その後、xinet.dを再起動する必要あり。 デフォルト設定では直接rootでログインする事は禁止されている。 telnetクライアントはUTF8対応ソフトを利用の事。 ちなみに今時はtelnetよりセキュリティを考慮してsshを利用する方が 主流であるが、家庭内LAN利用では強いて拘る必要もない。 ***ftp デフォルトではvsftpdサービスは起動していない為、GUIサービスより 開始&自動起動のチェックを付け保存、としておく。 例によってrootからのログインは禁止となっている為、例えば /var/www/html に対してapacheユーザーでftpアクセスさせるなら、 上記ディレクトリのowner&グループをapacheに変更し、 apacheユーザーのパスワード(telnetと共用)を設定しておく。 ※追記12/3 Fedoraのデフォ状態ってFTPのASCII転送が不可んなってるんですね・・・ という訳で、~ /etc/vsftpd/vsftpd.confの修正 #ascii_upload_enable=YES #ascii_download_enable=YES この2行のコメント#を外して保存し、GUIサービスよりvsftpdを再起動。 ----------------------------------------------------------------------------- *【WindowsマシンからX-Window利用】 ※X-Window-Systemと呼ぶのが本来正しい様子であるが、当資料ではX-Windowと略記~ CygwinにてWindowsマシン上にフリーX-Server環境の構築可能。 ここでは、部分的にプロセス単位でFedora側のX-Windowアプリを稼動させるのでは なく、XDMCPにてログイン段階から全てのFedora操作をWindows上で実現させる。 Cygwinの導入方法は適当にネット検索の事。setup.exeでは全てを選択 (Allの箇所を何度かクリックしてInstallとする。 その際更にカテゴリを開いてしまうと個別ではskip扱いになっていて紛らわしいが、 カテゴリは開かないまま次へと進めばちゃんと全部入る) 接続前にFedora側で以下の設定が必要。~ /etc/X11/xdm/xdm-config の編集(非Fedora系の古い資料の場合Pathが異なる事もある) DisplayManager.requestPort: 177 ←0を177に変更 /etc/X11/gdm/gdm.conf の編集(同じくPathが異なる場合あり) [xdmcp] Enable=1 ←0を1に変更 Port=177 ←177でないときは177に変更 その後、Fedora本体を再起動する必要あり。 Fedora自体はランレベル5で稼動している事。 Windowsマシンに戻って、Cygwinの実行。 古い資料(古いCygwin)だと環境変数設定云々と続くが、2004年4月時点の物では 一切不要。Cygwinへのショートカットを実行し、Unix風のコマンドライン画面にて $ XWin.exe -screen 0 1024x768x65536 -query (FedoraIP) -from (WinIP) (画面サイズは適当に変更可能)~ 以上にてFedoraのグラフィカルログイン画面が表示される筈。 終了はログアウト操作の後、Ctrl+Alt+BSにてX-Server終了。 残ったCUI画面はexitで(稀に正しく終了しないが、気にせず×で終了) 尚、資料によってはこの後に漢字対応云々と続くが、Fedora+現段階Cygwinの 組み合わせなら上記設定のみで正しく漢字が表示&入力出来る。 ----------------------------------------------------------------------------- *【アプリケーションの追加と削除】 Windows風に各種RPMをGUIより追加・削除する仕組み。OS導入時のそれと全く 同一であり、実行すると現在の導入状況を表示、そこからチェック個所を修正 すると、その差分のみが処理される。 **[Fedora1の場合] と上手く行けば良いのだがFedora1では Bugっているらしく?追加操作をしても導入途中でエラーとなるケース多し。 その場合、入れようとしているrpmを覚え、それをNautilusより導入操作すると 正しく導入出来る(右クリック-アプリケーションから開く-Install Package)。 ※Nautilus=GNOME上のファイルマネージャ(GUIシェル) イマイチ信用のおけない機能だが、単純に導入状況確認として利用価値有り。 また指定RPMの削除操作だけなら正しく動作する様子。 メニューから選ばず、CDマウント時の自動起動から利用すると何故か正常動作する? **[Fedora2の場合] 上記のBugは多少マシになったのか、予め該当CD-ROMが挿入済みの状態であれば、 GUIからの追加も正しく動作する模様。ただしCD-ROM入れ替えが生じた場合は やはりイマイチ動作不全? ----------------------------------------------------------------------------- *【SambaによるWindowsからのファイル共有】 設定方法については -設定テキスト直接修正 -システム設定-サーバ設定-Samba (Fedora特有のGUI管理ソフト) -SWAT の3通りがあるが、SWATがお勧め。rpmが導入されていれば、GUIサービス に並ぶが、OS導入時の選択肢には含まれない為、別途導入の必要がある。 Fedora1ではCD3に、Fedora2ではCD4に収録されているので、直接そこから rpmを導入する。※Fedora2ならsamba-swat-3.0.3-5.i386.rpm~ xinetd経由で起動の為、自動起動のチェックは不要。 (xinetdの仕組みにより普段は停止状態、要求があった時のみ稼動する) まず先に、/etc/xinetd.d/swat の修正 desable=no ←yesからnoに修正 only_from=192.168.1.0/24 ←環境に応じた許可IPを指定 に修正して、xinetdの再起動。その後、WEBブラウザより http://(FedoraマシンIP):901/ にて設定画面へ。 SWATでのSamba設定は、ここでは極単純に「user認証」方式にてrootユーザー に/以下全ファイルシステムを共有(開放)とする。 必要とあらば、その他個別ユーザーに個別ディレクトリも設定。 SWAT操作は触れば分かる範疇。大まかに設定ポイントを列挙すると、 ***[全体設定(GLOBALS)] -モードはユーザー認証モード(user) -workgroupにWindowsネットワークで利用しているワークグループ名 -その他、PC名及びNetBEUI名を設定してCommite Changes(設定) ***[共有設定(SHARES)] -適当な共有名を新たにCreate Share -その共有に対して、Fedora上のファイルpath&許可ユーザーを設定。 read only、guest okなどを適切に設定の後、Commite Changes(設定) Sambaを「user認証」方式で稼動させる場合、Samba用ユーザーを登録する 必要がある(最低でもrootを登録)。 smbpasswd -a ユーザー名 にて登録。 (既存sambaユーザーのパスワード変更は-aは不要) ※SWATのPASSWORD欄からも設定可能、だがヤヤ動作が怪しい? 更にそのユーザー名はFedoraユーザーとして登録されている必要もある。 ただしSambaユーザーのパスワードはFedoraユーザーとは独立している点、注意。 (smbpasswdに同期オプションもあるが単に同設定をetc/passwdに行うだけ) 最後、GUIサービスよりsmb開始&自動起動チェックを付け保存。 SWATからも起動は出来るが、自動起動設定はGUIサービスにて行っておく事。 尚、SWATのサーバー動作状況画面はヤヤ不正確?(気にする必要はなし) Windowsからアクセスの際はSambaユーザー&パスワードを利用。 そのユーザー名がファイルシステム上のOwnerとなる。 この後、古い資料によってはSambaの日本語対応云々と続くが、 Fedoraでは標準で日本語対応済みの様子である(所謂UTF-8の恩恵)。 Samba越しにて全角ファイル名も問題なく利用可能。 (但し、共有名のコメントのみ文字化け。コメントは全角利用禁止とすべし) 尚、/etc/samba 以下の smb.conf smbpasswd smbusers の3ファイルを バックアップ取得しておけば、後日に環境再現可能。 プリンタ関連は本資料ではノータッチとする(必要とあらばWindowsから印刷)。 **※Samba利用の補足事項 - Ownerについて※ rootユーザーで/以下全てをSamba共有する場合、利用はお手軽であるが ファイル作成やネットコピーするファイル全てのOwnerがrootとなり、 Unix風習的にはあまり行儀良くない。ただしother読者の権限も付く為、 /var/www/html以下の修正などは、これでも強いて実害はない。 尤もroot以外の所有者情報が重要な意味を成す個所の調整は、Samba越し ではなく直接X-Window(cygwin経由)から操作する事。※PostgreSQL設定など **※Samba利用の補足事項 - 改行コードについて※ Samba越しでWebコンテンツをメンテする場合、html・cgi等のテキスト ファイルの改行コードはLF(\n)のみとする事(対応エディターを用いる)。 Windows界のCR+LFだと(特にcgiが)正しく動作しない場合あり。 (FTP転送で適切なソフトを利用すれば、非バイナリ転送は改行コード変換が行われる) またcgiにはパーミッションotherに実行権限、データファイルにはother書込権限 が必要となるが、これらの設定はsambaでは不可。 X-Window越しやFTPで対応する必要がある。 現実的に、Script関連のメンテはFTP越しで行った方が無難。 **※FedoraCore2のSWATの日本語表示について Fedora2にて付属のMozillaでSWATにアクセスすると、Core1では日本語表記 だったものが英語表記に変化してしまう。が、これはSWATが日本語対応を 止めた訳ではなくCore2のMozillaが英語版になったせいの模様。 という訳で、Mozillaを別途日本語対応するか、もしくは別のWindowsマシン などからアクセスすれば、Core2のSWATも普通に日本語利用する事が可能。 ↑で済めば良かったものの、外部のIEからSWAT利用を続けている内に、何故か 突然ボタン類&本文表記が化け始めて、以後まともに利用不能?~ (素直にX-Window上から英語で使うのが賢明カモ) ----------------------------------------------------------------------------- *【HTTPD−Apache2.0の設定】 まず、旧Ver(1.3系)や他のディストリビューションでは、rpm名やフォルダ名、 サービス名がApacheとなっている資料が存在するが、Fedoraではhttpdで統一 されている点、注意。 もう一つ、GUIの システム設定-サーバ設定-HTTP (Fedora特有のGUI管理ソフト) は絶対使用しない事。設定項目が少な過ぎるだけではなく、既存のhttp.confを 無視して設定値を上書く為、構築済みのhttp.confが破壊される恐れあり。 当機能は導入すら不要(間違えて入っていたら削除しておくべし)。 各種pathはFedoraのデフォルト状態では以下 ServerRoot → /etc/httpd conf関連 → /etc/httpd/conf Log関連 → /var/log/httpd ※/etc/httpd/logs と等価(SymLink) DocumentRoot → /var/www/html 実行バイナリ → /usr/sbin perl本体 → /user/bin/perl 関連過去資料とFedoraでは、Pathが異なっているケースが見受けられる点、注意。 設定は素直にhttpd.confをテキストエディタで修正し、その都度httpdを再起動。 Samba越しでWindowsから直接修正してしまうと、例えエディタがLFのみ改行& UTF8に対応していても、見た目正常なのにSyntaxErrorが生じてしまう事あり。 詳細不明であるが、修正はviやGNOMEテキストエディタ等で行うのが無難。 (また例えコメント内であろうが全角文字は避けた方が安全かも?)~ 尚、httpd.confへの修正の際には、常にバックアップを残しておく事を推奨。 httpd.conf修正項目は以下(抜粋記述・矢印より右側は実際には入力しない事) ServerAdmin mail@Domain.jp ←管理者のメールアドレス(値は環境依存) ServerName www.domain.jp ←サーバーのURL(同じく値は環境依存) ←以下一段落、修正&追加 Options None AllowOverride None Order Deny,Allow Deny from all ←同上。尚、実際は間にコメント行多々あり Options Includes FollowSymLinks Order allow,deny Allow from all SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" nolog ←追加 SetEnvIf Remote_Addr 192.168. nolog ←追加 # CustomLog logs/access_log common ←コメント化 CustomLog logs/access_log combined env=!nolog ←追加 AllowOverride None Options ExecCGI ←CGIの許可 Order allow,deny Allow from all #AddDefaultCharset UTF-8 ←コメント化 ※重要 AddHandler cgi-script .cgi ←コメントを外す とりあえず、上記の設定程度で実用になる。 AddDefaultCharset UTF-8 行をコメント化するのは、S-JIS主体のhtmlが Fedoraデフォルト状態だと文字化けしてしまう為。 (Fedora+Apache2.0特有の症状の模様。逆にここさえ直せば最低限の 動作はしてくれる) ~ の記述は極単純(汎用的)な設定例。 IncludesはSSIの利用許可。FollowSymLinksはSymLinkの利用許可。 ファイル一覧を許可する場合は、Indexesも追加。 設定は配下のサブディレクトリ全てに適用される。 (親で全体像を決めてから、子側で個別設定を上書いて行く、という流れ) 本来、ユーザーディレクトリを他人に開放して多人数でWebサーバーを共用する 際には、もっと細かい設定(AllowOverride関連など)も必要になる所であるが、 管理者一人で使う分にはあまり拘る事もなく、この程度で十分かと思われる。 尚、ここのOptions設定にExecCGIを含めてしまえば、cgiは(cgi-bin以外でも) どこでも利用可能となる。 ログ関連は、SetEnvIfにてログ記録除外条件をかけ(nolog)、 出力指定CustomLogにて、env=!nologにて上記条件を省いて出力。 同時に、出力フォーマットをcombinedとして情報量を増やしている。 上記例ではプライベートIPアクセス&画像アクセスを記録除外。 上記以外の項目は、おおよそデフォルトのままでOK。 SSL関連やVirtualHosts関連は当資料ではノータッチ。 世間のApache構築記事では大抵これらの対応に行数割かれているが、 個人でのWebサーバー構築では無視してもなんら支障なし。 認証関連は、必要とあらば個別ディレクトリに対してその都度設定。 ※後述(例えば、"/var/www/html/usage"以下を特定ユーザーのみに絞る、など) 複数ユーザーのWebSite共有(ユーザーディレクトリ対応)はデフォルトでは 無効&コメント化されている為、必要とあればhttpd.confを更に修正の事。 モジュール類については、導入時の選択に問題がなければ強いて弄る必要なし。 逆に不要な物が混じっていたら適時コメント化。 尚、PerlやPHPなどはconf.d配下のconfファイルがincludeされて用いられる。 ----------------------------------------------------------------------------- *【ログのWorm対策について】 前項にて、httpd.confのカスタマイズの中で SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" nolog ←追加 SetEnvIf Remote_Addr 192.168. nolog ←追加 # CustomLog logs/access_log common ←コメント化 CustomLog logs/access_log combined env=!nolog ←追加 など、画像やプライベートIPなどの特定条件によるLOG出力制限を行ったが、 同様にSetEnvIfを利用してワームアクセスの記録除外も可能である。 SetEnvIf Request_URI default \.ida nolog SetEnvIf Request_URI cmd \.exe nolog SetEnvIf Request_URI mod_ssl:error:HTTP-request nolog SetEnvIf Request_URI "NULL\.IDA" nolog SetEnvIf Request_URI "^/_mem_bin/" nolog SetEnvIf Request_URI "^/_vti_bin/" nolog SetEnvIf Request_URI "^/c/" nolog SetEnvIf Request_URI "^/d/" nolog SetEnvIf Request_URI "^/msadc/" nolog SetEnvIf Request_URI "^/MSADC/" nolog SetEnvIf Request_URI "^/scripts/" nolog ※これらはCustomLog行より前へ挿入 尚、世間には/にアクセスにくるWormがあり、それはSetEnvIfでは除外不能。~ (最近は一時に比べ減って来た模様。まぁこれ位は放置で) その他、2004年春頃よりSEARCHメソッドで多量のURL文字列を送付するワームが発生 (MSのWebdavの脆弱性を攻撃するワームとの事)。~ その対策として、LogFormat設定行を以下の様に修正 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" (続き)\"%{User-Agent}i\"" combined ※ここまで一行で記述 ↓ LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" (続き)\"%{User-Agent}i\"" combined ※ここまで一行で記述 この設定によりリクエストにTooLongエラーの生じた行が出力から除外される。 ----------------------------------------------------------------------------- *【ログのrotateについて】 Fedoraではデフォルトで、cronにより毎日4:02に /etc/cron.daily/ 配下の スクリプトが定期稼動しており(設定はetc/crontabを参照のこと)、 その中では00Webalizerとlogrotateが設定されている。 前者はhttpdのログを解析してグラフィカルにhtml出力するソフト(後述)。 後者はFedora内部の各種ログをローテートするソフト。 (ローテートプログラムはこの他にrotatelogsという物もあるが、別途後述)~ 名前順実行なので、00の付いてるいるWebalizerが先に処理される点に注目。 ログローテートは/etc/logrotate.confの設定の通り、週次で過去4世代まで ログを残し、それ以前を破棄。対象は/etc/logrotate.d/配下の設定の通り、 httpdを含めてFedora内部関連ログのほぼ全てがローテート対象となっている。 (即ちデフォルト状態でほっておいても、ログがHDDを埋め尽くしてしまう ような危険はない様に作られている) ファイル名書式は以下の通り(ファイル名はhttpdログの一例)。 Access_log ←最新版 ※このファイル名は常に同一 Access_log.1 ←1世代前 Access_log.2 ←2世代前 ・・・以下同様 httpd関連のログローテートは、/etc/logrotate.d/httpd設定内容の通り。 (ここではログローテートに併せてhttpdのリブートも行われている)~ /var/log/httpd/配下で、末尾がlogで終わるファイルがローテート対象。 即ち、access_logのみならずerror_log、referer_logなども対象となる。 逆に言えばこれらは約一ヶ月で破棄されてしまう為、永久にログを残したい 場合は、出力時のファイル名の末尾をlog以外にしておけば良い。 例えば、Access_logと並行して重要部分を別出ししたい場合、httpd.conf内に SetEnvIf Request_URI \.mp3 downlog CustomLog logs/down combined env=downlog ←出力名末尾にlogがない などと追加する。上記例では、mp3ファイルのアクセスのみ抜粋してdownに出力。 nologの時に用いたプライベートIP除外を複合させたい場合は、 SetEnvIf Remote_Addr 192.168. nolog !downlog とすれば、上記条件はnologに適用され、かつdownlogからは除外される。 上記の例では、別出ししたdownログは一つのファイルに永久追記されてしまう。 そこで更に、apacheのもう一種のログローテートの仕組みであるrotatelogsを 利用するように上記例を修正。 CustomLog "|/usr/sbin/rotatelogs /etc/httpd/logs/down.%Y%m%d (続き)86400 540" combined env=downlog ←ここまで合わせて一行で記述 ファイル名の部分がrotatelogsを用いたパイプ処理に変化。ファイル名に 日付情報が入り、同一日の間は追記、日が変わるとログはローテートされる。 86400の部分は一日の秒数。週次にしたければ値を7倍にすれば良い。 (ただし、先のlogrotateの週次とはローテート曜日はズレてしまう模様) rotatelogsの手法でのファイル名書式は以下の通り(一例)。 down.20040430 ←(今日が2004年4月30日として)最新分 down.20040429 ←1日前 down.20040428 ←2日前 ・・・以下同様~ この手法の場合、ログは(別途削除処理を行わない限り)残り続ける。 以上、ログのローテートは大別して二つの手法がある事になる。 どちらを利用する(or併用する)のも管理者の自由であるが、 後述のWebalizerは、最新ログをファイル名固有で出力するlogrotateと相性が 良く、逆に長期的にアクセスログを分析する際にはrotatelogsの方が 扱い安いかと思われる。 ----------------------------------------------------------------------------- *【Webalizer】 何度か話題に上がった通り、cronで毎日一回実行され、httpdのログを集計し グラフィカルにhtml出力するソフト。Fedora導入時に選択しておけば、 既にデフォルト状態で稼動しており、/var/www/html/usage/配下に /var/log/httpd/access_logの分析結果を毎日4:02に形成する。 設定は /etc/webalizer.conf にて。上記の分析対象や結果出力場所などは ここに設定されているが、強いて修正しなくとも充分動作する。 またデフォルトで Incremental yes となっており、以前の集計結果を蓄積しつつ、上乗せで累計されていく。 ここで、access_logは(デフォルトで)週次ローテートなのに、 webalizerは日時集計であり、ローテートされる前のLogを何度も重複して 集計する形となるのが気になる所であるが、実際にはwebalizer処理は 同一ファイル内でも既に集計済の部分をスキップして差分のみ処理してくれる為 同じaccess_logを何度集計しても多重集計されてしまう問題はない。 またcronの実行順序では、webalizerの集計を先に行った後にaccess_logの ローテートを行っている為、ローテートの際に未集計個所が生じる恐れもない。 集計蓄積&DNSデータのキャッシュなどは以下。 IncrementalName /var/lib/webalizer/webalizer.current HistoryName /var/lib/webalizer/webalizer.hist DNSCache /var/lib/webalizer/dns_cache.db (及び、/var/www/html/usage 以下) 既存累積分を破棄したくなった場合は、上記ファイル群を削除する。 逆に上記ファイル群が破損した場合、過去のアクセスログが残っていれば それらを全部再集計する事により、集計をやり直す事も可能。 /usr/bin/webalizer アクセスログファイル名 にて指定ファイルの集計が可能(この場合は、webalizer.confで指定された 対象ログファイルよりコマンドライン側が優先される)。 尚、webalizer.conf内での対象ログファイル指定は、固定値しか設定出来ない (日付を含んだ動的な指定や、ワイルドカードを用いた指定は不可)。 よって、rotatelogs方式でログをローテートしている場合、 webalizerとは相性が悪い点、注意。cronでのwebalizer起動個所に 別途スクリプトを挟んで対象ファイル名を生成させるか、もしくは 単純にデフォルトのlogrotateの仕組みをそのまま用いるのが楽。 集計間隔はデフォルトでは日時となっているが、毎時集計したい場合は /etc/cron.daily/00webalizer を /etc/cron.hourly/にコピーすれば良い。 mvでもおおよそ構わないが、厳密に考えると、hourlyは毎時1分、 dailyは毎日4:02、よって4:01〜02までの1分間のHTTP-LOGが週に一回 webalizer集計されないままlogrotateされる恐れがある為、 daily側の集計も残しておいた方が無難ではある。 (尤も1週間中の1分程度、強いて気にする必要ないとも言える) ※逆にあまり集計し過ぎてもサーバー負荷との兼ね合いもある為、 ここらはサーバーパワーとアクセス量を考慮して調整の事。 ***-Fedora2注意点- Fedora2よりデフォルトで、/etc/httpd/conf.d/ 配下にwebalizer.conf というファイルが出来ており、閲覧可能者をlocalhostに制限、及び pathのAliasを行っている~ (/var/www/usage → /var/www/html/usage扱い) 同時に本体設定側 /etc/webalizer.conf の出力先も /var/www/usage に 変更となっている。Fedora1からの移行の際には注意。~ (個人的には、localhost制限は外しその代わりに認証制限をかけた方が 便利かと) ***-その他のカスタマイズ個所- /etc/webalizer.confについて、その他の修正個所を以下 #HostName localhost (デフォルトでは#でコメント化、即ち指定なしの場合はこの値が用いられる) 生成されたusageページの分析対象リソース等のLINKに用いられる値。~ このままだと別端末から表示の際には各種LINKが正しく機能しない為 HostName abab.dip.jp (ウチの場合の例) などと修正すれば端末依存しなくなる。~ (ルーターによっては自分のグローバルIPへ家内ネットからアクセス出来ない 機種もあるが、その場合ここにWebサーバーのプライベートIPを直接記述して しまうのも手。ただしそうすると外部アクセス時はLINKが機能しなくなる点、注意) #TopURLs 30 分析対象リソースが増えて来た場合、ここのコメントを外して値を増やすと良い。 #TopReferrers 30 同じくコメントを外して値を増やせば、その分Referrer表示が増加。 HideReferrer abab.dip.jp/ Referrer分析で自サイト内のクリックを集計してもあまり意味はなし、 など場合は上記の様に指定URLを分析対象から除く事も可能(上記はウチの例)。 #HideReferrer Direct Request 同様に、DirectRequestの集計が不要な場合は、ここのコメントを外す。 ----------------------------------------------------------------------------- *【Apacheの認証利用】 Webサーバーは基本的には不特定多数のユーザーへ開放するものだが、 例えば上記webalizer解析結果などの様に、閲覧者を限りたいケースもある。 設定例として、httpd.conf内の記述を以下。 AuthName "Webalizer AREA" AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user username satisfy any Order deny,allow Deny from all Allow from 192.168.1. 及び、認証情報ファイルの作成手順を以下。 /usr/bin/htpasswd -c /etc/httpd/conf/.htpasswd username (-cは初作成の際に指定。既存ファイルに追加の場合は不要) その後、usernameに対応したパスワードを入力する。 出来あがった.htpasswdはapacheユーザーで読める必要あり。 (必要とあらばパーミッションを修正する) 以上で、webalizerの集計結果部分に関して、 家内LAN(プライベートIP)からはフリー閲覧、 それ以外の場合は設定したユーザー認証経由で閲覧可能、となる。