12-7. Apache 2.x 系WWWサ−バ `28〜`2a (1) Solaris 9 に Apache 2.x を入れる * Apache 2.x をとってくる http://httpd.apache.org/docs/2.0/ja/install.html。Apache HTTP サ−バのバ−ジョン 2.0、2008-12-14 の 2.2.11 is the best available version。 以前フリ−ソフトをダウ ンロ−ドした ftp.kddlabs.co.jp、ftp.lab.kdd.co.jp は応答がないか unknown host に なった。ftp.ring.gr.jp もだめ。ftp.apache.jp はOKだった。 # cd /usr/local/source << ここにダウンロ−ドしてくる。 # ftp ftp.apache.jp ftp> cd /pub/apache/httpd ftp> get httpd-2.2.11.tar.gz 30秒ぐらいで取り込んだ。 local: httpd-2.2.11.tar.gz remote: httpd-2.2.11.tar.gz そんな小さいファイルか?。 6806786 bytes received in 22 seconds (300.95 Kbytes/s) # gzip -d httpd-2.2.11.tar.gz << これで httpd-2.2.11.tar になる。 # tar xf httpd-2.2.11.tar # cd httpd-2.2.11; ls -F ABOUT_APACHE Makefile.in apachenw.mcp.zip httpd.spec Apache.dsw Makefile.win build/ include/ BuildAll.dsp NOTICE buildconf* libhttpd.dsp BuildBin.dsp NWGNUmakefile config.layout modules/ CHANGES README configure* os/ INSTALL README.platforms configure.in server/ InstallBin.dsp ROADMAP docs/ srclib/ LAYOUT VERSIONING emacs-style support/ LICENSE acinclude.m4 httpd.dsp test/ * 先ずはただの Apache の設定 # /bin/csh # setenv PATH /usr/local/bin:/usr/ccs/bin:$PATH # which gcc /へのもへ/gcc-3/bin/gcc << gcc バージョン 3.3.2 を使用。 # setenv LD_LIBRARY_PATH /へのもへ/gcc-3/lib << ライブラリのパスもあること。 Apache の静的モジュ−ルとして DSO 機能と Proxy 機能を組み込む。 Apache のコンパイル時に configure --enable-module=xxx と指定する。 # cd /usr/local/source/httpd-2.2.11 # ./configure --enable-module=so --enable-module=proxy << DSO と Proxy サポ−ト。 # make << これは /usr/ccs/bin/make 使用。 # make install # /usr/local/apache2/bin/httpd -v << デフォルトで /usr/local/apache2/ に入る。 Server version: Apache/2.2.11 (Unix) Server built: Jun 24 2009 17:30:34 /usr/local/apache2/conf/httpd.conf ---------------------------------------- |ServerRoot "/usr/local/apache2" |Listen 80 |User daemon |Group daemon |ServerAdmin you@example.com |#ServerName www.example.com:80。 |ServerName 127.0.0.1 << ServerName だけこのように記述した。 |DocumentRoot "/usr/local/apache2/htdocs" | | # cd /usr/local/apache2/bin << スタ−トしましたとか特に何も出てこない。 # ./apachectl start 以下 /usr/local/apache2/bin もマシンの 環境変数 PATH に含めたとする。 これで手元のパソコンのIEから http://192.168.1.99 とやったら "It works!" と出た。 /usr/local/apache2/htdocs/には index.html ファイルが1つあっただけ。このファイル は "

It works!

" と、これだけの内容だった。 # ps -ef | grep apache << # kill 5395 で全部消える。 daemon 5440 5395 0 10:53:19 ? 0:00 /usr/local/apache2/bin/httpd -k start daemon 5398 5395 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start daemon 5397 5395 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start daemon 5399 5395 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start root 5395 1 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start daemon 5396 5395 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start daemon 5400 5395 0 10:50:24 ? 0:00 /usr/local/apache2/bin/httpd -k start * Apache に Proxy の設定を加える # cd /usr/local/source/httpd-2.2.11/modules/proxy # /usr/local/apache2/bin/apxs -cia mod_proxy.c proxy_util.c | chmod 755 /usr/local/apache2/modules/mod_proxy.so [activating module `proxy' in /usr/local/apache2/conf/httpd.conf] # /usr/local/apache2/bin/apxs -cia mod_proxy_http.c mod_proxy.c にはどうも proxy_util.c が付き物らしい。下記のように mod_proxy.so が コピ−される、proxy_util.c の中身は mod_proxy.so に含められたようだ。 # ls /usr/local/apache2/modules httpd.exp mod_proxy.so* mod_proxy_http.so* /usr/local/apache2/conf/httpd.conf ------------------------------------------------------------------------------- | | |# Dynamic Shared Object (DSO) Support |# |# To be able to use the functionality of a module which was built as a DSO you |# have to place corresponding `LoadModule' lines at this location so the |# directives contained in it are actually available _before_ they are used. |# Statically compiled modules (those listed by `httpd -l') do not need |# to be loaded here. |# |LoadModule proxy_module modules/mod_proxy.so << [a] |LoadModule proxy_http_module modules/mod_proxy_http.so << [b] | | |ProxyRequests On << これだけ記述すればいいはず。以下はなくてもいいはず。 |ProxyVia On << これコメントにしてもプロキシとしては問題なかった。 | | Order deny,allow | Deny from all | Allow from 192.168.1 | でル−ルをは | さんだ。mod_proxy.c が指定されていれば、この間に記 | | 述したル−ルを適用するということ。 上記の記述で LoadModule の下に、AddModule mod_proxy.c を加えているサイトの例も見 受けられたが記述はしないこと。書くとエラ−が出た。Apache 1.3.x での httpd.confに は全部の LoadModule と AddModule が記述されている。 Apache 2.2.x は Apache 1.3.x とは設定の仕方が異なっている。 # /usr/local/apache2/bin/httpd -M 動的モジュ−ルの組込みだと5から9%性 Loaded Modules: 能が落ちると「Software Design」 に書か core_module (static) れてあった。2003/12号の62ペ−ジ、"モ | ジュ−ルを DSO で組み込むと遅くなる?"。 so_module (static) proxy_module (shared) << この2つが動的モジュ−ル(shared) で組み込まれた。 proxy_http_module (shared) << httpd -M はコマンドを叩いた際にhttpd.confを読む。 Syntax OK 確認テスト。httpd.conf の [b] をコメントにした。 httpd -M で使われているモジュ− ルの一覧を表示した。proxy_http_module (shared) がなくなっていた。apache をスタ− トさせて外のホ−ムペ−ジにアクセスしたら、IEのブラウザに Internal Server Error と出た。proxy_http_module はプロキシサ−バには必要である。 * 入ったソ−スファイル # cd /usr/local/source/httpd-2.2.11 configure, make した後。 # ls -F ABOUT_APACHE NOTICE config.log modules/ Apache.dsw NWGNUmakefile config.nice* modules.c BuildAll.dsp README config.status* modules.lo BuildBin.dsp README.platforms configure* modules.o CHANGES ROADMAP configure.in os/ INSTALL VERSIONING docs/ server/ InstallBin.dsp acinclude.m4 emacs-style srclib/ LAYOUT apachenw.mcp.zip httpd* support/ LICENSE build/ httpd.dsp test/ Makefile buildconf* httpd.spec Makefile.in buildmark.o include/ Makefile.win config.layout libhttpd.dsp # cd modules; ls -F Makefile arch/ debug/ http/ proxy/ Makefile.in cache/ echo/ ldap/ ssl/ NWGNUmakefile config5.m4 experimental/ loggers/ test/ README database/ filters/ mappers/ aaa/ dav/ generators/ metadata/ # cd proxy; ls << apxs コマンドでコンパイルする前。 CHANGES ajp_header.c mod_proxy_ajp.dsp Makefile ajp_header.h mod_proxy_balancer.c Makefile.in ajp_link.c mod_proxy_balancer.dsp NWGNUmakefile ajp_msg.c mod_proxy_connect.c NWGNUproxy ajp_utils.c mod_proxy_connect.dsp NWGNUproxyajp config.m4 mod_proxy_ftp.c NWGNUproxybalancer libproxy.exp mod_proxy_ftp.dsp NWGNUproxycon mod_proxy.c mod_proxy_http.c NWGNUproxyftp mod_proxy.dsp mod_proxy_http.dsp NWGNUproxyhtp mod_proxy.h modules.mk ajp.h mod_proxy_ajp.c proxy_util.c * インスト−ルされた状態 # ls /usr/local/apache2 bin/ cgi-bin/ error/ icons/ lib/ man/ modules/ build/ conf/ htdocs/ include/ logs/ manual/ # ls /usr/local/apache2/bin ab* apxs* envvars-std htpasswd* rotatelogs* apachectl* checkgid* htcacheclean* httpd* apr-1-config* dbmmanage* htdbm* httxt2dbm* apu-1-config* envvars htdigest* logresolve* # ls /usr/local/apache2/conf extra/ httpd.conf magic mime.types original/ # ls /usr/local/apache2/conf/original extra/ httpd.conf << 上の conf/httpd.conf と同じ。 # ls /usr/local/apache2/modules httpd.exp << インスト−ル直後はこれだけあった。 * 動的にモジュ−ルを追加する様子 # cd /usr/local/source/httpd-2.2.11/modules/proxy # /usr/local/apache2/bin/apxs -c mod_proxy.c 動作確認してみる。 /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DSOLARIS2=9 ... -c -o mod_proxy.lo mod_proxy.c && touch mod_proxy.slo /usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_proxy.la -rpath /usr/local/apache2/modules -module -avoid-version mod_proxy.lo 上記のコマンドで mod_proxy.la mod_proxy.lo mod_proxy.o mod_proxy.slo ができた。 apxs -c の -c オプションはコンパイルすること。 -cia とオプションを付けるとコンパ イルして/usr/local/apache2/modules ディレクトリにできたモジュ−ル mod_proxy.soを コピ−して、httpd.conf ファイルに "LoadModule proxy_module modules/mod_proxy.so" を追記する。手作業で httpd.conf ファイルをいじらなくても済むということ。 * ライブラリのパスを通していないとエラ−になる # /usr/local/apache2/bin/httpd -l ld.so.1: httpd: 重大なエラー: libgcc_s.so.1: open に失敗しました: ファイルもディ レクトリもありません。強制終了 # /bin/csh gcc のライブラリも含めて # setenv LD_LIBRARY_PATH /へのもへ/gcc-3/lib コンパイルするか、環境変 数としてパスを通しておく。 ./cshrc root ロッグインする際に設定される。 ---------------------------------------------------- "$PGLIB"を $PGLIB にする |PGLIB=/opt/trend/imss/PostgreSQL/lib と、/bin/csh をやると"文 |setenv LD_LIBRARY_PATH "$PGLIB":/へのもへ/gcc-3/lib 法があいまいです" と出る。 (2) Apache 2.x の WebDAV を試す `2a/10 * 情報を集める Solaris 9 での最近の WebDAV のインスト−ルや設定記事がない。ネットにも見当たらな い。Linux の CentOS とか SUSE などでは、もう最初から WebDAV は Apache に入ってい るみたい。Apache 2.x には標準で WebDAV が組み込まれている。WebDAV はまだ日本語の ファイル名はうまく扱えない?。Apache には mod_dav と mod_dav_fs モジュ−ルがいる とか。Apache のコンパイルを5年ぶり位にやった。最初 Apache の Proxy の設定をやっ た。これは1日でできた。気をよくしてこの勢いで長年、懸念していた WebDAV の設定も やってみた。こっちは半日でできてしまった。勿論ユ−ザ認証とか細かいとこは抜きにし てだが。とりあえずパソコンのフォルダにあるファイルをドラッグ&ドロップしてブラウ ザに表示されているところにコピ−できるかである。 * 関連制御ファイル # cd /usr/local/apache2/conf/extra; ls httpd-autoindex.conf httpd-mpm.conf httpd-dav.conf httpd-multilang-errordoc.conf httpd-default.conf httpd-ssl.conf httpd-info.conf httpd-userdir.conf httpd-languages.conf httpd-vhosts.conf httpd-manual.conf httpd-dav.conf 元々の内容 ---------------------------------------------------------------------------- |# Distributed authoring and versioning (WebDAV) |# |# Required modules: mod_dav, mod_dav_fs, mod_setenvif, mod_alias |# mod_auth_digest, mod_authn_file | |# The following example gives DAV write access to a directory called |# "uploads" under the ServerRoot directory. |# |# The User/Group specified in httpd.conf needs to have write permissions |# on the directory where the DavLockDB is placed and on any directory where |# "Dav On" is specified. | |DavLockDB "/usr/local/apache2/var/DavLock" |Alias /uploads "/usr/local/apache2/uploads" | | | Dav On | | Order Allow,Deny | Allow from all << クライアントのIPアドレス、 ホスト名でアクセス制 | 限をかける。バ−ジョン2.1 より前では mod_access.c | AuthType Digest という access_module が入っていた。1.3 にもある。 | AuthName DAV-upload | | # You can use the htdigest program to create the password database: | # htdigest -c "/usr/local/apache2/user.passwd" DAV-upload admin | AuthUserFile "/usr/local/apache2/user.passwd" | AuthDigestProvider file | | # Allow universal read-access, but writes are restricted | # to the admin user. | | require user admin | | | |# The following directives disable redirects on non-GET requests for |# a directory that does not include the trailing slash. This fixes a |# problem with several clients that do not appropriately handle |# redirects for folders with DAV methods. |# |BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-care |BrowserMatch "MS FrontPage" redirect-carefully fully |BrowserMatch "^WebDrive" redirect-carefully |BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully |BrowserMatch "^gnome-vfs/1.0" redirect-carefully |BrowserMatch "^XML Spy" redirect-carefully |BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully /usr/local/apache2/conf/httpd.conf ------------------------------------------------------------------- | | |# Supplemental configuration |# |# The configuration files in the conf/extra/ directory can be ... |#Include conf/extra/httpd-mpm.conf |#Include conf/extra/httpd-multilang-errordoc.conf 説明部分は省略した。 |#Include conf/extra/httpd-autoindex.conf |#Include conf/extra/httpd-languages.conf |#Include conf/extra/httpd-userdir.conf |#Include conf/extra/httpd-info.conf |#Include conf/extra/httpd-vhosts.conf |#Include conf/extra/httpd-manual.conf | |# Distributed authoring and versioning (WebDAV) |#Include conf/extra/httpd-dav.conf << このコメントを外す。 | |#Include conf/extra/httpd-default.conf |#Include conf/extra/httpd-ssl.conf | |SSLRandomSeed startup builtin |SSLRandomSeed connect builtin | * 前のは消さずにそのままコンパイル # cd /usr/local/source/httpd-2.2.11 # ./configure --enable-module=so --enable-dav=shared --enable-dav-fs=shared # make # make install | Building shared: mod_dav.la Building shared: mod_dav_fs.la Installing configuration files [PRESERVING EXISTING HTDOCS SUBDIR: /usr/local/apache2/htdocs] 前のディレクトリ [PRESERVING EXISTING ERROR SUBDIR: /usr/local/apache2/error] を保存しているみ [PRESERVING EXISTING ICONS SUBDIR: /usr/local/apache2/icons] たい。 [PRESERVING EXISTING CGI SUBDIR: /usr/local/apache2/cgi-bin] Installing header files Installing build system files Installing man pages and online manual # ls -l /usr/local/apache2/modules -rw-r--r-- 1 ... 9046 6月 25日 18:02 httpd.exp -rwxr-xr-x 1 ... 697752 6月 25日 18:03 mod_dav.so << 今回追加された分。 -rwxr-xr-x 1 ... 377960 6月 25日 18:03 mod_dav_fs.so << configureやって自 -rwxr-xr-x 1 ... 315684 6月 24日 19:04 mod_proxy.so 動でここに入った。 -rwxr-xr-x 1 ... 138180 6月 25日 10:49 mod_proxy_http.so /usr/local/apache2/conf/httpd.conf --------------------------------------------------------- | | 前にやったプロキシ設定の記述はそのままあった。 |#LoadModule proxy_module modules/mod_proxy.so << この2つコメント |#LoadModule proxy_http_module modules/mod_proxy_http.so << にする。使わない。 | |LoadModule dav_module modules/mod_dav.so << この2つを手作業 |LoadModule dav_fs_module modules/mod_dav_fs.so << で記述する。 # /usr/local/apache2/bin/httpd -M # /usr/local/apache2/bin/httpd -l Loaded Modules: Compiled in modules: core_module (static) core.c "httpd -l"は静的モ authn_file_module (static) mod_authn_file.c ジュ−ルのみリスト authn_default_module (static) mod_authn_default.c する。"httpd -M"の authz_host_module (static) mod_authz_host.c staticが静的モジュ authz_groupfile_module (static) mod_authz_groupfile.c −ルを示す。shared authz_user_module (static) mod_authz_user.c は動的モジュ−ルを authz_default_module (static) mod_authz_default.c を示す。動的モジュ auth_basic_module (static) mod_auth_basic.c −ルを組み込むには include_module (static) mod_include.c so_module (static) filter_module (static) mod_filter.c を静的モジュ−ルで log_config_module (static) mod_log_config.c 入れておくこと。 env_module (static) mod_env.c setenvif_module (static) mod_setenvif.c mpm_prefork_module (static) prefork.c http_module (static) http_core.c mime_module (static) mod_mime.c status_module (static) mod_status.c autoindex_module (static) mod_autoindex.c asis_module (static) mod_asis.c cgi_module (static) mod_cgi.c negotiation_module (static) mod_negotiation.c dir_module (static) mod_dir.c actions_module (static) mod_actions.c userdir_module (static) mod_userdir.c alias_module (static) mod_alias.c so_module (static) mod_so.c dav_module (shared) << 上記の httpd.conf の記述で、 dav_fs_module (shared) << この2つが shared になった。 Syntax OK * 動作確認をした こんなようにやって所定のティレクトリを作り、パ−ミッションを設定しておく。 # cd /usr/local/apache2; mkdir var; chown daemon var; chgrp daemon var # cd /usr/local/apache2/htdocs; mkdir file; chown daemon file; chgrp daemon file /usr/local/apache2/conf/httpd.conf ------------------------------------------------- |ServerRoot "/usr/local/apache2" |Listen 80 |User daemon |Group daemon |ServerName 127.0.0.1 |DocumentRoot "/usr/local/apache2/htdocs" |LoadModule dav_module modules/mod_dav.so |LoadModule dav_fs_module modules/mod_dav_fs.so |Include conf/extra/httpd-dav.conf /usr/local/apache2/conf/extra/httpd-dav.conf ------------------------------------------------- |DavLockDB "/usr/local/apache2/var/DavLock" |Alias /file "/usr/local/apache2/htdocs/file" | | Dav On サンプルでは となっているが、この指定 |# Order Allow,Deny のままだと、パソコンのブラウザで予期せぬエラ−が発生し |# Allow from all ました、と出てだめだった。Location指定にすること。コメ | トを外しても別に、ここでのテストするぐらいでは関係なし。 最初このディレクトリには何もなかった。 # ls -l /usr/local/apache2/var -rw-r--r-- 1 daemon daemon 0 6月 26日 11:26 DavLock.dir -rw-r--r-- 1 daemon daemon 0 6月 26日 11:26 DavLock.pag # apachectl restart * パソコンからアクセス --- Windows 2000 Professional にて --- # ls -l /usr/local/apache2/htdocs/file drwxr-xr-x 2 daemon daemon 512 6月 26日 11:32 .DAV -rw-r--r-- 1 daemon daemon 48717 6月 26日 11:27 test.txt -rw-r--r-- 1 root other 22 6月 26日 11:18 s1.txt -rw-r--r-- 1 root other 0 6月 26日 11:18 s2.txt s1.txt と s2.txt は htdocs/file ディレクトリで touch コマンドで作成した。.DAV デ ィレクトリは気付いたらできていた。test.txt ファイルは後先になるが、 パソコンのフ ァイルを実際に WebDAV の機能を用いて転送したもの。 ブラウザIEの [ファイル]->[開く] ----------------------------------------------------- Windows パソコンでは Web | ファイルを開く | フォルダという。 |---------------------------------------------------| | ドキュメントやフォルダを開くには、インタ− | デスクトップに{WebDAV}の | ネット アドレスまたはパスを入力してください。| アイコンを作っておいてク | | リックしてもいい。 | 開く: [ http://192.168.1.99/file ▽] | | □ Web フォルダとして開く | << ここ〆入れる。 | [ OK ] [キャンセル] [参照] | ----------------------------------------------------- ---------------------------------------------------------------------------- | ファイル 編集 表示 お気に入り ツ−ル ヘルプ | |--------------------------------------------------------------------------| | アドレス [ http://192.168.1.99/file ▽] | |==========================================================================| | 名前 | インタ−ネット アドレス |サイズ | 種類 |更新日時| |--------------------------------------------------------------------------| | test.txt http://192.168.1.99/file/test.txt 47.5KB テキスト文書 | | s1.txt http://192.168.1.99/file/s1.txt 22バイト テキスト文書 | | s2.txt http://192.168.1.99/file/s2.txt 0バイト テキスト文書 | * 試してみた感想 デスクトップに {WebDAVテスト} アイコンをおいてクリック。Samba サ−バのアイコンも デスクトップにある。見た目の表示は {WebDAVテスト} のも同じだった。まるで区別がつ かない。ドラッグ&ドロップにて、ダウンロ−ドは一瞬、100KB ぐらいのテキストファイ ルで。アップロ−ドは数秒もたついている。作業している様子が小さな画面で出る。コピ −してますとか。アップロ−ドが終わると小さな画面は消える。これらちょっと操作した 感じでは反応が遅いということはない。なかなかいいのではないか。案外簡単に設定がで きた。これなら Samba の代わりに直ぐにでもできるぞと思った。 しかし喜んでいたのは 束の間で、Windows XP Professional で触って考えの甘さに気付かされることになる。 * 参考 「Software Design」2006/02, P.135〜173, "第2特集:Subversion,LDAP,SSL 連携もばっ > ちり WebDAV サ−バ構築パ−フェクトガイド"。 「NETWORK MAGAZINE」2003/01, P.114〜117, "Windows を使ったサ−バ構築 (4)WebDAV で > インタ−ネットからファイルサ−バを作る"。 (3) Apache WebDAV のユ−ザ認証 * 次の確認のステップ ファイルのアップロ−ドができることをこれまでで確認した。次はユ−ザ認証でディレク トリやファイルのアクセスの制限をかけることを確認したい。 Apache の基本的なユ−ザ 認証を設定してみて、WebDAV でもユ−ザに応じて、 ディレクトリやファイルへのアクセ スが制限されることを確認してみたい。ベ−シック認証は暗号化されないので使用は危険 とか。ダイジェスト認証は暗号化されるので利用が推奨されるとか。これはまた検討する。 * ベ−シック認証の設定 /usr/local/apache2/conf/extra/httpd-dav.conf httpd.conf に書いてもいい。 -------------------------------------------- | Basic 認証は AuthUserFile の記述 | Dav On で、モジュ−ルはmod_authn_file.c | Order Allow,Deny を使う。各ユ−ザ用ディレトリでの | Allow from all 記述は "Require user satou" とか。 | AuthType Basic | AuthName "WebDAV Account" << 名前は何でもいいみたい。 | AuthUserFile "/usr/local/apache2/.User" << ファイル名も何んでもいい。 | Require valid-user | Apache だけで使えるユ−ザのアカウントを作る。マシンのOSとは関係ない。 ここでは satou と mutou という Apache 用のアカウントを作るが、 Sun のマシンのアカウントを 作ることはない。つまり Sun で /etc/passwd ファイルをいじる必要はないということ。 # cd /usr/local/apache2/bin # ./htpasswd -c /usr/local/apache2/.User satou New password: henomohe << 表示はされない。 オプションは -d がデフォルト Re-type new password: henomohe << でパスワ−ドは暗号化される。-c はアカウントを Adding password for user satou 記録するファイル .User を新規に作るということ。 # ./htpasswd /usr/local/apache2/.User mutou << もう一人のアカウントを作る。 /usr/local/apache2/.User ------------------------ パスワ−ドは暗号化されている。 ユ−ザ satou と mutou |satou:WAFBRx3EdlG1o には同じパスワ−ドを入れてみた。パスワ−ドが違った文 |mutou:Xj60VORniHhoc 字列になっていることに注意されたい。 # apachectl restart WebDAV 画面を出す。satou と mutou さんだけが利用でき る。アクセスできるところは一緒である。 * ユ−ザそれぞれのディレクトリを作る /usr/local/apache2/htdocs/file/ に satou 用 dir1 ディレクトリ、mutou用 dir2 ディ レクトリを作って、それぞれのアカウントでなければ利用できないようにしたい。 /usr/local/apache2/conf/extra/httpd-dav.conf -------------------------------------------- | | Dav On | | 上記の通り。 | Require valid-user << 登録したユ−ザでないと /fileディレクトリにアクセスで | きない。コメントにして無効にするとアカウントを入れる | ことなく、誰でもアクセスできる。 | << Require valid-user を有効にしていて、satouでログイン | Require user satou したら、dir1 にはそのままアクセスできる。dir2 に入ろ | うとするとアカウント画面がでてくる。 | | Require user mutou ※ディレクトリを Dir1, Dir2 と大文字混じりにしたら認 | 証の画面は出ずにそのままアクセスできた。 # apachectl configtest << xxx.conf ファイルの書き方がおかしければ、 ">" がない Syntax OK よとか教えてくれる。 問題がなければ "Syntax OK" と出 # apachectl restart ておしまい。 各ディレクトリに .htaccess ファイルをおき、これで制限を書くことができる。 しかし WebDAV では読み書きがそもそもできるので、.htaccess でやるのは危険。httpd.conf で 制限を記述すること。これまでの検討で .htaccess は使ったことがなかった。 * パソコンからアクセス --- Windows 2000 Professional にて --- ---------------------------------------------------------------------------- | ファイル 編集 表示 お気に入り ツ−ル ヘルプ | |--------------------------------------------------------------------------| | アドレス [ http://192.168.1.99/file ▽] | |==========================================================================| | 名前 | インタ−ネット アドレス |サイズ | 種類 |更新日時| |--------------------------------------------------------------------------| | dir1 http://192.168.1.99/file/dir1 Webフォルダ | | dir2 http://192.168.1.99/file/dir2 Webフォルダ | | s1.txt http://192.168.1.99/file/s1.txt 22バイト テキスト文書 | | s2.txt http://192.168.1.99/file/s2.txt 0バイト テキスト文書 | {dir1} をクリックすると。dir1 には satou で、dir2 には mutou でしか入れない。 ------------------------------------------------ |ネットワ−クのパスワ−ドを入力 | |----------------------------------------------| いったん入力したら覚えて | 認証情報を入力してください。 [ OK ] | いる。 | [キャンセル] | | リソ−ス: http://192.168.1.99/file/dir1 | "パスワ−ド をパスワ−ド | ユ−ザ−名: [ satou ] | リストに保存" のチェック | パスワ−ド: [ ******** ] | をしないでおくと、毎回自 | 〆パスワ−ドをパスワ−ドリストに保存 | 分で入力する。 ------------------------------------------------ パソコンにログオンした時のアカウントを使うことはできるのか。dir1 の satou がそう だとすれば、ここでいちいちアカウントを入れなくても、何もしなくても dir1 をアクセ スできるという話。dir1 は特に satou さんのものということではない。 root でただデ ィレクトリを作ったので、そのまま root がオ−ナ−になっている。 # ls -l /usr/local/apache2/htdocs/file こんな様なパ−ミッションになっている。 drwxr-xr-x 2 root other 512 6月 29日 15:43 dir1 -rw-r--r-- 1 daemon daemon 48717 6月 26日 11:27 test.txt -rw-r--r-- 1 root other 0 6月 26日 11:18 s1.txt [ 問題 ] 動作の確認がややこしくなるので Require valid-user はコメントにしてみた。 dir1 に アクセスする時に最初にアカウントの入力画面が出る。 dir1 に入りファイルを読もうと クリックすると、またアカウント画面が出てくる。いちいちうっとうしい話でこれは困る。 実際の運用ではこういう細かいことがネックになってくる。 アカウント入れて WebDAV 画面が出ていったん閉じて、また {WebDAV} アイコンをクリッ クすると、そのまま WebDAV 画面がでてくる。いったいいつまで、どれぐらいの時間、入 れたアカウントが有効になっているのか。# apachectl restart とやって Apache を再起 動しても状況は変わらなかった。パソコンが勝手に覚えてしまっているのでないか。 上記のテストを Windows XP Professional でやると、全くだめ。 Windows パソコンはや はり腐り切っている。ちっとはこなれてきたのかと思いきや、へんな挙動をするのはまる で改善されていない。むしろ増しているのでないか。 Windows XP の問題にここであまり かまけているとまるで先に進めないのでしばらく放置する。しょうもない話だ。 * 半年ぶりに Windows XP をやってみた Windows XP でIEの [ファイル]->[開く] から WebDAV アクセス。 -------------------------------------- | Connect to 192.168.1.99 | |------------------------------------| | ユ−ザ名 [192.168.1.99\satou ▽]| 認識されない。 | パスワ−ド[ ]| | | | [ OK ][キャンセル] | -------------------------------------- [管理ツ−ル]->[サ−ビス] 一覧がでてくる。WebClient は 状態は"開始"、スタ−トアッ プの種類は "自動" になっていた。画面の [全般] でサ−ビスの状態 [停止] をクリック、 スタ−トアップの種類を [無効▽] にして [適用]。 アカウント入力画面がこんなのに変わった -------------------------------------- | 192.168.1.99 に接続 | *** 何かこれでうまくいったぞ *** |------------------------------------| | WebDAV | | ユ−ザ名 [ satou ▽] | Apache の AuthType Basic は Windows XPの | パスワ−ド [ ] | WebDAV は認識しないので、Apache を SSLに | □パスワ−ドを記憶する | しないとだめという話はどうなったのだ。そ | | ういうように書いているサイトもあったけど、 | [ OK ][キャンセル] | その記述は正しくはなかったということ。 -------------------------------------- 自分のフォルダのファイルをドラッグしてコピ−してみた。PPP.txt はそのままコピ−で きた。小文字のファイル名 qqq.txt もそのままコピ−した。新規テキスト.txt と言う日 本語のファイル名だと、すぐにはそのままコピ−できたかに見えた。しかし開こうとする とできず、削除も名前の変更もできず、プロパティも開かなかった。見たらファイル名が 化けてしまっていた。次で日本語のファイル名も扱えるようにしてみる。 * Apache のグル−プでのアクセス制限 mod_auth がサポ−トしてたのは AuthUserFile と AuthGroupFile で、以前からグル−プ でのアクセス制限はできていたと言うことみたい。mod_authz_groupfile.c はバ−ジョン 2.1 以降で使用する。ネットでも雑誌でもグル−プでのアクセス制限をかけている例はま るで見ない。実際にはほとんど使われることがないのか、それとも簡単なことなので特に 紹介するまでもないということか。実際に設定して動作を確かめたわけではないが、次の ような記述をすればいいと思う。ユ−ザ名をずらずら並べるよりもすっきり記述ができる、 それぐらいの意味しかないような気がする。 dir1 ディレクトリはグル−プ sekkei の人 しかアクセスできない。グル−プ sekkei にはユ−ザ satou と mutou さんが属している。 /usr/local/apache2/conf/extra/httpd-dav.conf --------------------------------------------- | | AuthUserFile "/usr/local/apache2/.User" << ユ−ザのアカウント・ファイル。 | AuthGroupFile "/usr/local/apache2/.Group" << グル−プ指定用のファイル。 | Require valid-user | | | Require group sekkei | | | Require group eigyou | /usr/local/apache2/.Group ------------------------- |sekkei: satou mutou << グル−プ名を書いてユ−ザ名を列挙する。 |eigyou: katou << | |common: katou satou << こんな指定もOKだと思う。 (4) Apache WebDAV の日本語対応 -------------------------------------------------------------------------------- Apache では日本語の扱いが難しいようなことがネットでも雑誌でも書かれている。 ファ イル名とフォルダ名が日本語だと化けるのだが、そもそも公式な Apache の配布では日本 語対応はしてなくて、有志が2002年頃に作ったパッチに今なお頼っているのである。 -------------------------------------------------------------------------------- * 下準備をする # /bin/csh root でログイン。vi で /.cshrc ファイルに /usr/local/lib を追加した。 # setenv SHELL=/sbin/sh 関係するところのみ表示。 PATH=/usr/sbin:/usr/bin:/usr/local/bin:/へのもへ/gcc-3/bin:/usr/ccs/bin LD_LIBRARY_PATH=/へのもへ/gcc-3/lib:/usr/local/lib # gmake -v 2008年8月 ftp ftp.iij.ad.jp の /pub/gnu/gnu/make から最新の GNU Make 3.82 GNU make をダウンロ−ドした。/usr/local/bin にインスト−ルされる。 インスト−ルしだちでは /usr/ccs/bin/make が認識される。gmakeとし てコピ−して /usr/local/bin/gmake として使用した。 * 必要なファイルを取ってくる # ls /usr/local/source httpd-2.2.11/ mod_encoding-20021209.tar.gz これ以下3つのファイルを取ってくる。ネ mod_encoding.c.apache2.20040616 ットを見るといろんな所に Apache+WebDAV mod_encoding.c-apache2.2-20060520.patch の記述はあるが、これらで何とかできた。 ファイルのありかは http://webdav.todo.gr.jp/download/、http://wlug.selifp.org/の WebDAV のところ、http://www.aconus.com/%7eoyaji/ の RedHat 9.0 と SuSE 9.0 FTP版 の Apache+DAVの設定。2010年のお盆休みの10日間、ネットで Apache+WebDAV の情 報をくまなく調べ、自宅のマシンでしつこくインスト−ルをやってみた。分かったことは どうやら2002年に Apache の WebDAV の日本語対応の基本的なプログラミングは終わ っていて、それ以降は部分的な改修が散発的に行われている。 http://wlug.selifp.org/ に書かれているのが最新といえば最新である、でも自宅のマシン環境でちょっと試してみ たがうまく行かなかった。自宅ではマシンは HP ProLiant ML115 G5、OSは SUSE Linux Enterprise Server 10 である。上の3つのファイルで何とか設定ができた。 * Apache ヘの組込み # cd /usr/local/source # gzip -d mod_encoding-20021209.tar.gz # tar xf mod_encoding-20021209.tar # cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c # cd mod_encoding-20021209 # patch -p0 < ../mod_encoding.c-apache2.2-20060520.patch << /usr/bin/patch。 結合されたコンテキスト diff のようです。 終了 # cd lib # ./configure # gmake << /usr/ccs/bin/make はダメ、こんなメッセ−ジが出る "mksh: Fatal # gmake install error in reader: = missing from replacement macro reference"。 # cd .. << 今のディレクトリは /usr/local/source/mod_encoding-20021209。 # ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-iconv-hook=/usr/loc # gmake al/include /usr/local/apache2/bin/apxs -c -I/usr/local/include mod_encoding.c /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic ... mod_encoding.c:362: 警告: 互換性のないポインタ型からの初期化です mod_encoding.c:366: 警告: 互換性のないポインタ型からの初期化です mod_encoding.c:370: 警告: 互換性のないポインタ型からの初期化です mod_encoding.c:374: 警告: 互換性のないポインタ型からの初期化です mod_encoding.c:378: 警告: 互換性のないポインタ型からの初期化です /usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_encoding.la ... # gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook # cp mod_encoding.so /usr/local/apache2/modules << apxsコマンドを使ってないの # ls /usr/local/apache2/modules で自前でモジュ−ルをコピ−。 httpd.exp mod_dav_fs.so* mod_proxy.so* mod_dav.so* mod_encoding.so* mod_proxy_http.so* # ls /usr/local/source/mod_encoding-20021209 AUTHORS NEWS config.log mod_encoding.c COPYING README config.status* mod_encoding.la ChangeLog README.JP configure* mod_encoding.lo INSTALL acconfig.h configure.in mod_encoding.o Makefile aclocal.m4 install-sh* mod_encoding.slo Makefile.am config.cache lib/ mod_encoding.so* Makefile.in config.h missing* stamp-h Makefile.simple config.h.in mkinstalldirs* stamp-h.in # ls /usr/local/lib ldscripts/ libiconv_hook.la* libiconv_hook.so.1@ libiconv_hook.a libiconv_hook.so@ libiconv_hook.so.1.0.0* # ls /usr/local/include/iconv_hook iconv.h iconv_hook.h # /usr/local/apache2/bin/httpd -M Loaded Modules: | dav_module (shared) dav_fs_module (shared) encoding_module (shared) << 追加された動的モジュ−ル。 * 制御ファイルの記述と起動 /usr/local/apache2/conf/httpd.conf ---------------------------------------------------- |ServerRoot "/usr/local/apache2" | | |LoadModule dav_module modules/mod_dav.so |LoadModule dav_fs_module modules/mod_dav_fs.so |LoadModule encoding_module modules/mod_encoding.so << apxs コマンドを使って | | ないので自前で記述。 |Include conf/extra/httpd-dav.conf | | | << これらも記述。 | EncodingEngine on << | NormalizeUsername on << | SetServerEncoding UTF-8 << | DefaultClientEncoding JA-AUTO-SJIS-MS SJIS << | AddClientEncoding "cadaver/" EUC-JP << | << # apachectl restart (5) Apache WebDAV はやはり何か変 * Windows XP の Basic 認証その1 Windows XP から WebDAV にアクセスする。Windows XP SP2 は WebDAV の仕様が変わった。 暗号化されていないと Basic 認証が使えない。Digest 認証は暗号化されるが、あまり面 白くないらしい。Basic 認証は暗号化されない。-m オプションだとパスワ−ドは MIMEエ ンコ−ディングされる。プレ−ンテキストでは流れないが、解読は簡単である。Basic 認 証を指定するのは Microsoftサポ−トオンライン の文書番号 841215 に規定されている。 「NETWORK magazine」2008/08, P.82〜85, "日本一やさしい Linux 入門、第6回: WebDAV と SSH によるファイル転送"。 記事の最初に、もともとWebDAV はマイクロソフトが提唱 したと書いてある。85ペ−ジの終わりのとこに。XP の SP2 以降および、Vista の Web フォルダ機能においても、暗号化されていない経路でのベ−シック認証はデフォルトで無 効になっています。と気になる記事あり。その前に SSLの自己署名証明書も問題あるとか。 * Windows XP の Basic 認証その2 UseBasicAuth ファイルを作成して値を 0 以外にする。おかしいのは変わらなかった。値 の指定が16進になっている。10進に変えようと画面の10進の方に〆しても16進に 戻ってしまい、10進の指定はできなかった。 Windows XP で UseBasicAuth 1 にしたが、 パスワ−ドは聞いてこなかった。 Apache で Require valid-user を有効にしたらパスワ −ドをきいてきた。しかし WebDAV のアイコンの方がクリックしても出てこなくなった。 Windows XP でレジストリをいじって基本認証を有効にする。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\ * 拡張子の表示が変 パソコンのロ−カルのフォルダを開くと xxx.txt ファイルの拡張子 TXT は表示されてな い。WebDAV の方も拡張子は表示されていない。[ツ−ル]->[フォルダ オプション]で画面 をだす。[ファイルの種類] で "TXT テキストドキュメント" を選んで [詳細設定]をクリ ック。{常に拡張子を表示する}に〆を入れる。この変更はただちに有効になる。これで拡 張子 TXT が表示されるようになった。WebDAV の方も拡張子が表示された。 Apache は最 初から拡張子が表示されていて変わらず。"PDF Adobe Acrobat Document" も〆を入れた。 WebDAV 画面の [ツ−ル]->[フォルダ オプション] の画面をだす。 [表示] で関係ありそ うなところ 〆{各フォルダの表示設定を保存する}、〆{登録されている拡張子は表示しな い}。2番目の {登録されている拡張子は表示しない} の〆を外してみた。これで WebDAV でもちゃんと xxx.pdf と拡張子が表示された。なんてうっとうしい話!。 この設定をや れば個別に {常に拡張子を表示する} はやらなくてもいいのでないか、そうでした。そも そも拡張子を表示するのをデフォルトにすべきだと思う。違うか!?。 * WebClient って何だ Windows パソコンに入っている WebDAV 対応サ−バの機能。Windows XP Professional や Windows 2003 Server などに入っている。 [コントロ−ルパネル]->[管理ツ−ル]->[サ− ビス] に WebClient というのがある。一応 Windows 2000 Professional でも見てみたが WebClient は入ってなかった。どうも Windows パソコンの動作が遅いという場合、 この WebClient サ−ビスが悪さをしている?、ことがあるらしい。WebClient サ−ビスをオフ にすると遅くなくなると書かれている。 * ユ−ザ名がおかしい Windows XP の WebDAV クライアントはユ−ザ名を WebDAV サ−バに送る際、 次のように する、htpasswd .pass servername\\user_name。mod_encoding を入れると user_name で いくようになる。WebClient サ−ビスが関係しているもよう。アクセスはできたが、日本 語のファイル名が表示されていない。xxx.txt はメモ帳が開いた。xxx.txt の中の日本語 は表示された。xxx.pdf もちゃんと表示された。フォルダが開くのに5秒位時間がかかっ た。フォルダの中で表示一番上に化けた文字が出た /file/%90V%56... ファイルサイズ0 更新日時は出てない。 * 日本語対応も今いち Solaris で TEST.txt と言うファイルを作った。 WebDAV で見ると \\192.168.1.99\file 内で TEST.txt と表示されている。ただの Apache で見ると http://192.168.1.99/file/ 内で、TEST.txt.txt と表示された。 クリックするとちゃんと開き内容もそのままだった。 手で TEST.txt とやってクリックすると開かなかった。xxx.pdf.pdf になるのも見た。 Solaris で "最初に見て.txt" と言うファイルを作った。どうやって日本語のファイル名 を作ったのだったか?。パソコン上でそのファイルを WebDAV フォルダにコピ−したらそ のままOKだった、そう見えただけでファイルを開こうとしたりしたら、ファイル名が化 けてしまった。Apache でも見たら日本語のファイル名であるはずが化けていた。 その後いろいろやっていたら TEST.txt.txt とはならなくなった。"(4)Apache WebDAV の 日本語対応" もやってか WebDAV では日本語は化けなくなった。しかし Apache で見ると 依然として化けている。Apacheで文字化けを防ぐには制御ファイルで AddDefaultCharset をコメントアウトすることとか、extra/httpd-languages.conf も関係するみたいだし。 # cd /usr/local/apache2/htdocs/file;ls -l -rw-r--r-- 1 daemon daemon 942 ... TEST5.txt -rwxr-xr-x 1 daemon daemon 919 ... readme.txt drwxr-xr-x 2 daemon daemon 512 ... katou/ drwxr-xr-x 3 daemon daemon 512 ... mutou/ drwxr-xr-x 2 daemon daemon 512 ... satou/ drwxr-xr-x 2 daemon daemon 512 ... 違 / -rw-r--r-- 1 daemon daemon 12 ... 域 考 (2).txt << これは"新規テ -rw-r--r-- 1 daemon daemon 12 ... 域 考.txt << キスト" です。 # ls -l satou -rwxr-xr-x 1 daemon daemon 48717 ... sample1.txt -rwxr-xr-x 1 daemon daemon 3303270 ... sample2.pdf * 参考になるかも知れない 「UNIX MAGAZINE」2004/03, P.45〜53, "連載 UNIX Communication Notes 189, 山口英,広 帯域インタ−ネット時代の情報共有(2) WebDAV"。52ペ−ジの記述では、Windows XP で は、 ユ−ザ・アカウントとパスワ−ドを URL に埋め込まないと正しくアクセスできない。 たとえば http://suguru:himitsuyo@webdav.naist.jp/dav。と記述がある。しかしこれは とても危険であると書かれている。パスワ−ドを URL に含めない、 簡単に回避する方法 も示されている。たとえば http://www.nix.con/dav と指定するとサ−バには、ユ−ザ名 として www.nix.con\username 渡すので、そのようにパスワ−ドファイルを記述すればで きる。日本語のファイル名を正しく扱えるようにするには mod_encoding モジュ−ルを導 入すればいい。Windows XP におけるユ−ザ−認証の問題もそれで解決する、とか。 ------------------------------------------------------------------------------------ [ 付録 ] Solaris 9 での Apache 2.x * Apache のユ−ザ認証関係のモジュ−ル Apache 2.2 にデフォルトで入ったユ−ザ認証関係のモジュ−ル。「Software Design」誌 2007/01 の P.55〜56, "Apacheでのユ−ザ認証" には認証と承認の違いが少し説明されて いる。下記は同号の "2.2対応!最新モジュ−ルカタログから" 抜粋させてもらった。 mod_authn_file.c テキストファイルを用いたユ−ザ認証 AuthUserFile mod_authn_default.c 承認フォ−ルバックモジュ−ル AuthzDefaultAuthoritative mod_authz_host.c ホスト名/IPアドレスに基づくグル−プ承認 Allow,Deny,Order mod_authz_user.c ユ−ザ承認 AuthzUserAuthoritative mod_authz_default.c 承認フォ−ルバックモジュ−ル AuthzDefaultAuthoritative mod_auth_basic.c Basic 認証を実現 AuthBasicAuthoritative AuthBasicProvider mod_authz_groupfile.c プレ−ンテキストファイルを用いたグル−プ承認 AuthGroupFile AuthzGroupAuthoritative Apache 2.2 系では mod_auth_basic がユ−ザの Basic 認証を担う、Digest認証をしたけ れば mod_auth_digest を使用する。mod_auth はバ−ジョン 2.1 より前で Basic 認証す る場合である。mod_xxx という名称をはっきりさせたということか。ユ−ザ認証と密接に 関係しているのがファイルのアクセス制限である。ユ−ザ認証だけでも分かりにくいのに ファイルACLのことも絡んでくると、もはや収支が付かない。その更にややこしくする のが拡張ACLである。Apolloコンピュ−タのOSには最初から拡張ACL相当のファイ ルアクセス制限が実装されていた。20年以上前に自作したCADで、デ−タ管理に当り 前のように用いた。それが今になってああだこうだと言われても困っちゃう。 * Apache のファイルのアクセス制限 普通には Apache のファイルを見るのは、 Apache の制御ファイル中のアクセス制御の設 定による。OSのファイルレベルのアクセス制限は関係しない。それがOSのファイルの ACL設定を反映するようにできる。Apache のバ−ジョン 2.1 以降で使用できる。モジ ュ−ルは mod_authz_owner.c で、Apache に組み込むには --enable-authz-owner 指定す る。これでファイルオ−ナ−に基づく承認ができるようになる。ハ−ドディスクのファイ ルにオ−ナ−であるユ−ザ名とグル−プ名を付け read/write 権限を付ける。Apacheでは xxx.conf ファイル内で Require file-owner と Require file-group の記述をする。 上の話は Linux などのファイルシステムにおいて、 一般のアクセス制限のACL設定で のことである。ファイルシステムにはより細かいアクセス制限ができるよう、拡張ACL というのができた。Linux では XFS フォ−マットが拡張ACL対応している。WebDAV に は拡張ACL機能を付加するモジュ−ルがあり mod_dav_aclという。「Software Design」 `29/04,P.30〜37,"特集:イマドキのファイル共有テクニック (3)WebDAVの現状と未来を探 る"。35ペ−ジに、このなかで最大級の難度を誇るのは mod_dav_acl です、と記述があ る。他に mod_dav_acl の記事はまるでない。ネットにも全然でてない。 (株)デ−ジ−ネットが出しているオ−プンソ−ス。 mod_userdir_ldap、Apache 2.2 のた めのモジュ−ル。バ−ジョン 0.1、リリ−ス。2007-10-25。 http://sourceforge.jp/ か ら取れる。マシンの各ユ−ザのホ−ムディレクトリをアクセスできるという代物。 この 会社の社長は OpenLDAP の本をはじめ Linux の本など出している。 postLDAPadmin とい う LDAP でメ−ルのアカウントを LDAP サ−バで管理するためのWebアプリケ−ション もオ−プンソ−スでだしている。かなり技術力のある会社である。セキュアWebサ−バ 構築サ−ビスというのがある、もうこれを買うか。http://designnet.co.jp/。 * LDAP 対応のコンパイル − できんぞ `2b/02 何かおかしいです。とりあえず1日ああだこうだやってみた。ネットを探して Solaris用 の Apache の LDAP モジュ−ルというのがあるということまで突き止めた。しかしだいぶ 長いことメンテナンスはしてないみたいで、2003年が最終更新の日付けみたいで。こ れ以上 Solaris 2.x で Apache を触るのはやめにしよう。もうマシンは Sun の時代では ない。Solaris OSはなかなか優秀だったのに惜しいことである。仮想化サ−バのマシン がもう直に来る。これが来てから Red Hat Linux で改めてやってみることにする。 # cd /usr/local/source/httpd-2.2.11 # ./configure --with-ldap --enable-ldap --enable-authnz-ldap # make make[1]: Leaving directory `/usr/local/source/httpd-2.2.11/support' make[1]: Entering directory `/usr/local/source/httpd-2.2.11' /usr/local/source/httpd-2.2.11/srclib/apr/libtool --silent ... gcc -g -O2 -pthreads -DSOLARIS2=9 -D_POSIX_PTHREAD_SEMANTICS ... /usr/local/source/httpd-2.2.11/srclib/apr/libtool --silent --mode=link gcc ... Undefined first referenced symbol in file apr_ldap_info server/.libs/libmain.a(exports.o) apr_ldap_init server/.libs/libmain.a(exports.o) apr_ldap_rebind_add server/.libs/libmain.a(exports.o) apr_ldap_url_parse_ext server/.libs/libmain.a(exports.o) apr_ldap_ssl_deinit server/.libs/libmain.a(exports.o) apr_ldap_is_ldapi_url server/.libs/libmain.a(exports.o) apr_ldap_is_ldaps_url server/.libs/libmain.a(exports.o) apr_ldap_set_option server/.libs/libmain.a(exports.o) apr_ldap_get_option server/.libs/libmain.a(exports.o) apr_ldap_rebind_init server/.libs/libmain.a(exports.o) apr_ldap_rebind_remove server/.libs/libmain.a(exports.o) apr_ldap_is_ldap_url server/.libs/libmain.a(exports.o) apr_ldap_ssl_init server/.libs/libmain.a(exports.o) apr_ldap_url_parse server/.libs/libmain.a(exports.o) ld: fatal: Symbol referencing errors. No output written to .libs/httpd collect2: ld returned 1 exit status make[1]: *** [httpd] Error 1 make[1]: Leaving directory `/usr/local/source/httpd-2.2.11' make: *** [all-recursive] Error 1 以下のような関係しそうなオプションもあるが、何やってもだめだった。 # ./configure --help | Optional Packages: --with-included-apr Use bundled copies of APR/APR-Util --with-apr=PATH prefix for installed APR or the full path to apr-config --with-apr-util=PATH prefix for installed APU or the full path to apu-config * LDAP 対応のコンパイル − 解決策? `2b/02 ネットを探してこんなのを以前に見つけていた。Solaris 9 では別途作られたモジュ−ル を入れないといけないようである。"Gary Tay's Home Page" http://web.singnet.com.sg /~garyttt/。ここに LDAP のいろいろ試したノウハウが記載されている。さて信用になる のかどうかは何とも分からないが。 その中の "2.Installing Configuring OpenLDAP for Solaris9" が参考になりそう。 Step 9: Configure "Apache" to use LDAP Authentication The auth_ldap modules built-into Apache 2 is "experimental" and may not be stable,you may use: http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html IMPORTANT NOTE: DO NOT add --enable-ldap or --enable-auth-ldap or --with-ldap, to the above, they are for the "experimental" ldap module support built-into Apache 2.x, and they DID NOT work from me, no sure of experience of other. To configure "mod_auth_ldap" from muquit.com: # ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr/local LoadModule auth_ldap_module modules/mod_auth_ldap.so AuthType Basic AuthName "syslog" require valid-user LDAP_Server ldap1.example.com LDAP_Server ldap2.example.com LDAP_Port 389 Base_DN dc=example,dc=com UID_Attr uid