----- FileName /etc/httpd/conf/httpd.conf ----- … # ☆ 616 行目付近 ☆ # CustomLog /var/log/httpd/access_log common # 元の設定 SetEnvIf Request_URI "^/dav($|/)" dav_access CustomLog /var/log/httpd/access_log common env=!dav_access CustomLog /var/log/httpd/dav_access_log common env=dav_access ------ end of httpd.conf ------最初の SetEnvIf のところで DAV用か一般用かの判定をしてます。Request_URI が "^/dav($|/)" にマッチング、つまり「/dav」か「/dav/〜」の場合は dav_access という環境変数を設定する、そういう意味だね。で、次の行は元の設定の最後に env=!dav_access が足されてます。つまり、環境変数 dav_access が設定されていない(! が NOT の意味)時だけ access_log にログを残すことに。最後の行は逆で、環境変数 dav_access が設定されている時だけ dav_access_log に。こうすることで振り分けはOK。
○mod_gzipのインストール
mod_gzip はHTTP出力を圧縮して吐き出すためのモジュール(説明後述)。 まずはパッケージを拾ってきてインストール。
# rpm -ivh mod_gzip-1.3.19.1a-1.i386.rpm続いて設定。インストをすると /etc/httpd/conf/mod_gzip.conf を作成して、httpd.conf からこのファイルを読みこむようになるようだ。念の為 httpd.conf の記述が正しいかチェック。
----- FileName /etc/httpd/conf/httpd.conf ----- … <IfModule mod_gzip.c> include /etc/httpd/conf/mod_gzip.conf </IfModule> ------ end of httpd.conf ------続いて mod_gzip.conf を適当に修正。ログの項目を圧縮に関することだけに減らす。他のことは access_log を見ればいいわけだし。
----- FileName /etc/httpd/conf/mod_gzip.conf ----- mod_gzip_on yes mod_gzip_dechunk yes mod_gzip_keep_workfiles No mod_gzip_temp_dir /tmp mod_gzip_minimum_file_size 1002 mod_gzip_maximum_file_size 0 mod_gzip_maximum_inmem_size 1000000 … # 入力は LogFormat ... common_with_mod_gzip_info2 まで一行で(↓は2行に分割してある) LogFormat "%h %t \"%r\" %>s mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2 CustomLog /var/log/httpd/mod_gzip.log common_with_mod_gzip_info2 ------ end of mod_gzip.conf ------あとは httpd の再起動。楽だね。さて、mod_gzipについて簡単に。圧縮を行うことは名前からすぐに分かるね。普通 Webサーバは、ファイルなりCGIの出力なりをそのまま Webクライアントに渡すよね。通常はそれでも困らないけど、回線の帯域が細かったりするとレスポンスの低下が著しく起きることもある。そこで、データを圧縮して出力することで効率を高める、と。データを圧縮するわけだから、クライアント側がそれを元のデータに展開しないといけない。まぁ、代表的なブラウザならまず問題なく対応してるから安心。もし対応してないクライアントだとどうなるか?それは自動的に判断して非圧縮のまま出力するからそれも大丈夫。具体的にはリクエストの中のヘッダ Accept-Enconding に gzip が含まれているかで判断。
mod_gzip_item_include file \.htm$ # 拡張子が .htm のファイルは圧縮 mod_gzip_item_include mime text/.* # MIMEタイプが text/〜 の出力は圧縮 mod_gzip_item_exclude file "\.css$" # 拡張子が .css のファイルは非圧縮こんな感じになってる。自分で圧縮したいものを追加することももち可能。さて、実際圧縮されているかログを見てみよう。(見やすいように一部編集)
"GET / HTTP/1.1" 200 mod_gzip: DECHUNK:OK In:1542 Out:1067:31pct. "GET /**/ HTTP/1.1" 200 mod_gzip: DECLINED:TOO_SMALL In:473 Out:0:0pct. "GET /**/***/ HTTP/1.1" 200 mod_gzip: DECLINED:TOO_SMALL In:969 Out:0:0pct. "GET /**/***/fml.css HTTP/1.1" 200 mod_gzip: DECLINED:EXCLUDED In:0 Out:0:0pct. "GET /**/***/thread.html HTTP/1.1" 200 mod_gzip: DECLINED:TOO_SMALL In:973 Out:0:0pct. "GET /**/***/***/thread.html HTTP/1.1" 200 mod_gzip: OK In:30945 Out:2886:91pct. "GET /**/***/***/index.html HTTP/1.1" 200 mod_gzip: OK In:24991 Out:2337:91pct. "GET /**/***/***/745.html HTTP/1.1" 200 mod_gzip: OK In:1751 Out:825:53pct.HTTPステータス以降が mod_gzip のステータス。左から 結果ステータス、圧縮前サイズ、圧縮後サイズ、圧縮率。例えば、最初の行は「1542バイトのデータを1067バイトまで正常に圧縮。圧縮率31%」ってことやね。主なステータスはこんな感じらしい。正確じゃないかも。時間があるときにソースコードで追ってみよっと。
ステータス | 意味 | 特に関係する設定項目 |
---|---|---|
DECHUNK:〜 | CGIなどの動的なページを処理した場合。後ろに OK などがつく | |
OK | 正常に圧縮完了 | |
DECLINED:TOO_SMALL | データサイズが小さいので圧縮しない | mod_gzip_minimum_file_size |
DECLINED:TOO_BIG | データサイズが大きいので圧縮しない | mod_gzip_maximum_file_size |
DECLINED:EXCLUDED | データが対象外なので圧縮しない | mod_gzip_item_exclude file mod_gzip_item_exclude mime mod_gzip_item_exclude handler など |
DECLINED:DECLINED:NO_ACCEPT_ENCODING | クライアントが圧縮データに非対応なので圧縮しない | |
DECLINED:UNHANDLED_SUBREQ | リクエストが無効なので圧縮しない?(よくわからん…) | |
SEND_AS_IS:NO_200 | HTTPステータスが"200"でないので圧縮しない |
# tar xfI fml-4.0-stable-20010917.tar.bz2 # cd fml-4.0-stable-20010917 # su # env RECOMMEND=yes perl makefml installインストーラに質問されるけど設定が記憶されているのでデフォルトで。ただ、言語のところだけ「Japanese」を設定。
----- FileName /var/spool/ml/maillist/cf ----- … LOCAL_CONFIG #__MAKEFML_LOCAL_CONFIG__ # configured by ./makefml on Tue, 18 Sep 2001 09:53:28 # *** DO NOT EDIT MANUALLY THIS BLOCK!!! *** #__END_OF_MAKEFML_LOCAL_CONFIG__ # YOU CAN EDIT MANUALLY AFTER HERE. # Reply-To を強制的に書き換える &DEFINE_FIELD_FORCED('reply-to', $MAIL_LIST); ------ end of cf ------設定を反映させる。
# makefml update-config.ph maillist
○mod_dav のインストール
まずはパッケージを拾ってきてインストール。
# rpm -ivh mod_dav-1.0.2-6.i386.rpm次にロックファイル用ディレクトリの作成。これは後で設定するコンフィグのパスと一致させる必要がある。うちの Apache はユーザー名、グループ名ともに apache で起動しているので、権限の設定で Apache から読み書きできるようにする。
# mkdir -p /var/lock/apache # chown apache.apche /var/lock/apacheこのままでは日本語のエンコーディングに関する問題が起きるので、それを回避するために mod_encoding を導入。これはパッケージはなくてソースからのインストールとなる。ソースの入手元は http://www.lyra.org/pipermail/dav-dev/2001-May/002392.html (※--- cut here --- 以降を切り出して保存)。
# /usr/sbin/apxs -c mod_encoding.c # /usr/sbin/apxs -i mod_encoding.so次に httpd.conf に設定を追加。
----- FileName /etc/httpd/conf/httpd.conf ----- … ## ## DAV ## DAVLockDB /var/lock/apache/DAVLock # これのディレクトリ部分を上記の準備で作成 LoadModule encoding_module modules/mod_encoding.so <IfModule mod_encoding.c> EncodingEngine on SetServerEncoding UTF-8 AddClientEncoding SJIS "Microsoft .* DAV" # Windows は シフトJIS AddClientEncoding SJIS "xdwin9x/" AddClientEncoding EUC-JP "cadaver/" # linux は EUC </IfModule> Alias /dav /hogehoge/dav <Location /dav> DAV on # すべてのアクセスに対して認証で制限 <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Order deny,allow Deny from all Allow from ***** # 設定したホスト、ドメイン以外は拒否 AuthType Basic AuthName "WebDAV Users Auth" AuthUserFile /etc/httpd/conf/dav_userpwd Require valid-user </Limit> Options Indexes </Location> ------ end of httpd.conf ------後は apache を再起動。
# /sbin/service httpd restart最初きちんとインストールしたのに上手くいかなくてなんでだろう?って思ったのだけど、答えは簡単。Apache のバージョンが 1.3.12 で古すぎたん。1.3.20 にアップしたらなんなくOK。
(2001/11/05 一部補足)
----- FileName smb.conf ----- … wins support = yes # WINSサーバとして動作 local master = yes # ブラウズマスタとして動作 preferrerd master = yes # Samba 起動時にブラウズマスタの選定を必ず行う os level = 64 # ブラウズマスタの選定に有利 dns proxy = no # DNSへの問い合わせはしない ------ end of smb.conf ------続いて Windowsマシンのほう。TCP/IP のプロパティで WINSの設定をする。「WINS の解決をする」を選んで、下に WINSサーバ、つまり Linuxマシンの IPアドレスを入力。追加をして OKして再起動するだけで WINSを使えるようになる。うん、簡単!
レジストリキー [ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP ]
・NodeType(文字列)
値 | ノード |
---|---|
"1" | b-node(Broadcast node) … ブロードキャストのみ(WINSを使わない時のデフォルト) |
"2" | p-node(Peer-to-Peer node) … WINSのみ |
"4" | m-node(Mixed node) … bノード → pノードの順に照会 |
"8" | h-node(Hybrid node) … pノード → bノードの順に照会(WINSを使う時のデフォルト) |
値 | DNS参照 |
---|---|
"0" | しない |
"1" | する(デフォルト) |
C:\WINDOWS>nbtstat -r NetBIOS Names Resolution and Registration Statistics ---------------------------------------------------- Resolved By Broadcast = 0 Resolved By Name Server = 2 Registered By Broadcast = 0 Registered By Name Server = 6よしっと。これで完了っす♪