【 Makotto (03.16/02) 】 すいません訂正。誤 ./configure --enable-win32-service configure 正 ./configure --enable-win32-service |
【 ? (03.16/02) 】 とりあえず。詳しくは後で。------------------------------------------------------ >しかし、win32.c をコンパイル中に >Errorがでて、そこで終わってしまいます。 ChangeServiceConfig2A/Wなどのwin2000以降のAPIが "/usr/include/w32api/winsvc.h"に追加されていない ので、とりあえず(?)以下のように該当部2箇所を潰す。 (SL掲示板の仕様で、TAB等が削除されるかも知れない。 その場合、patch使用は諦め、手で修正) diff -u win32.c.org win32.c --- win32.c.org Fri Mar 15 13:22:32 2002 +++ win32.c Fri Mar 15 13:29:53 2002 @@ -70,9 +70,11 @@ #define CHANGESERVICECONFIG2 "ChangeServiceConfig2A" #endif #define DATABASEPATH "DataBasePath" +/* static SC_ACTION Squid_SCAction[] = { { SC_ACTION_RESTART, 60000 } }; static SERVICE_DESCRIPTION Squid_ServiceDescription = { SOFTWARENAME " " VERSION " WWW Proxy Server" }; static SERVICE_FAILURE_ACTIONS Squid_ServiceFailureActions = { 0, NULL, NULL, 1, Squid_SCAction }; +*/ static char REGKEY[256]="SOFTWARE\\"VENDOR"\\"SOFTWARENAME"\\"WIN32_VERSION"\\"; static char TCP_REGKEY[256] = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"; static char *keys[] = { @@ -600,6 +602,7 @@ NULL, /* LocalSystem account */ NULL); /* no password */ if (schService) { +/* if ((WIN32_OS_version == _WIN_OS_WIN2K) || (WIN32_OS_version == _WIN_OS_WINXP)) { HMODULE ADVAPI32Handle; @@ -612,6 +615,7 @@ dwInfoLevel = SERVICE_CONFIG_FAILURE_ACTIONS; ChangeServiceConfig2(schService, dwInfoLevel, &Squid_ServiceFailureActions); } +*/ CloseServiceHandle(schService); /* Now store the config file location in the registry */ if (!ConfigFile) ------------------------------------------------------ "--enable-win32-service" を付けてもサービス対応にならない場合、 "squid/include/autoconf.h"に、 #define USE_WIN32_SERVICE を追加する。サービス対応になっている場合、 >squid -v Squid Cache: Version 2.6-DEVEL-20020224 configure options: --disable-wccp --enable-underscores --disable-ident-lookups --enable-win32-service --prefix=d:/squid Compiled as Windows System Service. のように"Compiled as Windows System Service"と表示される。 ちなみに、当方では以下のオプションでコンパイルしている。 CFLAGS="-s -O2 -march=i686" ./configure --disable-wccp --enable-underscores --disable-ident-lookups --enable-win32-service --prefix=d:/squid ------------------------------------------------------ cygwin.dll 1.3.10では、当方では安定稼動できていない。 1.3.9-1へダウンしたほうがよいかも知れない。また、 cygwin.patch内の最終日付が Feb 26 2002 ゆえ、ソース には squid-2.6-DEVEL-20020224.tar.gz を意図的に使用し ている。 あと、ntsecを使用すると、ログ等がsquid.conf内の cache_effective_user 権限でしか見えなくなったりする。注意。 |
【 Makotto (03.17/02) 】 返信ありがとうございます。しかも、興味を持った書き込みをされた ?さんからとは、ありがとうございます。 教えていただいたやり方でコンパイルは通るようになりました。 2.5snap と 2.6 で試しました。 2.6 は、cygwin.patch をあてると defines.h で failしてたので、あたらしいのを落として試しました。 だた、サービス起動できる状態にどうしても出来ませんでした。 私のやり方が悪いんだと思います。 #define USE_WIN32_SERVICE を挿入する位置が悪いんじゃないかなと 思っていますが、知識不足でよくわかりませんでした。 よければ、ご教授お願いいたします。m(__)m それから >ChangeServiceConfig2A/Wなどのwin2000以降のAPIが >"/usr/include/w32api/winsvc.h"に追加されていない が気になって、調べていたら ttp://sources.redhat.com/cgi-bin/htsearch?method=and&format=builtin-long&sort=time&config=htdig&restrict=%2Fml%2Fcygwin-patches%2F&exclude=&words=winsvc.h こういうページを見つけました。 winsvc.h のパッチです。古いものから順に当てたのですが 当てたあと、win32.c に変更を加えなくても コンパイルは通るようになりました。 しかしやっぱり、私のやり方では、Service 起動できる状態まで 持っていくことが出来ませんでした。 2.6は、開発者用なのかなと思い敬遠していたのですが 私も、?さんと同じように2.6でがんばってみようと思います。 また、Configure の option も教えていただきありがとうございます。 まだそこまで調べていなかったので、目標達成後、自分で調べるまで 同じように使わせていただきます。 コンパイルが出来て、初めてわかったのですが、 make が終わればもう Binary ができるんですね。 Cygwin を起動して、その中でしか動かないのだと思っていました。 これでもう、あとは Service 起動さえ出来れば 目標達成です。またがんばってみます。 今日は、疲れました。5時間ほどぶっ通しでやってたのでw |
【 ? (03.17/02) 】 >#define USE_WIN32_SERVICE を挿入する位置>が悪いんじゃないかなと思っていますが、 configureにより書き換えられるんで、configure後 に追加する。追加位置にこだわるなら./acconfig.h 内での位置に準じて挿入する。 |
【 ? (03.17/02) 】 >option も教えていただき-march= や --prefix= は好みでイジって下さい。 >make が終わればもう Binary ができるんで >すね。 make install で、--prefix指示位置へ一式 格納されます。squid.conf内フォルダ系初期 値も--prefixに準じます。 あと、patchはちゃんと当たっていますか。 >それらをC:\cygwin\tmp\squidに解凍、 >CD /tmp/squid cd /tmp では?(文面だけでは詳細不明だが) cygwin.patch内を見て、しかるべきDIR位置 にてpatchを実行してください。私は、 tar zxvf squid-xxx.tar.gz mv squid-xxx squid patch -p0 < cygwin.patch >aaa patch -p0 < cygwin-svc.patch >bbb cd squid ./_cnfig.sh みたいな感じでやってます。 # コンパイル出来たら、cygwin設定編、 # conf設定編、log回転編、? |
【 Makotto (03.17/02) 】 私のような若輩者にこんなに親切に説明していただき 本当にありがとうございます。m(__)m >cygwin.patch内を見て、しかるべきDIR位置 動作さえすれば、どのDirでやっても 問題ないものだと思っていました。 だから、どこでもいいから、同じフォルダ内でやれば動くだろうと思いまして。 ?さんと同じようにやったところ、>aaa で出力された Log をみるかぎりパッチは一応正常にあたっていたようです。 >configureにより書き換えられるんで、configure後 ここが間違っていました! これをすることによって、ちゃんと Compiled as Windows System Service. が表示されるようになりました。 感動です。 最終的に、行った方法は 1.winsvc.h パッチ当て済みを使用。 2.cygwin,patch で fail や足りないといわれるファイルの追加。 3.configure 後 acconfig.h に #define USE_WIN32_SERVICE を end の前に追加 。 Cygwin1.3.10 環境下で行いました。 Configure は、教えていただいたものに --enable-delay-pools を追加し、 --prefix=c:/usr/squid に変更しました。(X-mail と共通にするため) ># コンパイル出来たら、cygwin設定編、 ># conf設定編、log回転編、? こういったことをした方がいいという設定が あるようでしたら、ぜひともお願いします。m(__)m 私の設定は、 cygwin 設定では、c:\cygwin\bin に Path を通しただけです。 普通のUnixっぽく、アカウント作ったり、マウントしたり また後日やってみようと思います。 conf 設定は、 http_port 8080 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl mygip src 210.xxx.yyy.zzz/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow mygip http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all dns_testnames なしにしてます。 forwarded_for off header_access は、 不都合が出ない程度に、Deny 設定にしています。 header_replace User-Agent Mozilla/4.0 (unknown) visible_hostname unknown hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi \? no_cache deny QUERY log_icp_queries off buffered_logs on conf の設定で気になっているのは、 acl localhost src 127.0.0.1/255.255.255.255 を Allow にしているのですが、 自分のグローバルを通るようにしないと 接続できないということです。この状態だけは、 落としてきた Binary でも同じでした。 現在はまだ、自宅サーバーを作ることの出来る環境になく PC も1台しか所有していません。 回線は CATV で1枚の NIC で直接接続しています。 IP はグローバル。 log回転というのは、閲覧に関係することなのでしょうか。 一息ついた後、調べてみたいと思います。 |
【 Makotto (03.17/02) 】 あ、ちなみに現在稼動中で、今のところ 問題なく動作してるように見えますw |
【 B (03.17/02) 】 > ログ回転の件ログローテートとか聞いたことありませんか? unix系ならcronで(以下略) |
【 M (03.17/02) 】 はい、ぜんぜん知りませんでした…Log見るときいつもメモ帳で見てたのでw あれから検索してみてたんですが、 想像してはいたんですが、 ログ管理のソフトなんですね。 閲覧だけでなく、自動でいろいろしてくれるんですね。 |
【 ? (03.17/02) 】 > http_access allow mygip> <中略> > http_access deny CONNECT !SSL_ports > http_access deny all 上から評価するので、allow mygip 以下のdeny 文が無駄になっています。通常ユーザをallow する場合は、deny allの直前でallowします。 >ログ管理のソフトなんですね。 xx\squid -k rotate -n SquidNT と実行すると、 *.log.0→*.log.1 *.log →*.log.0 のように自動リネーム(ログローテート)されます。 サービスを止めずに実行します。 で、ついでにcalamaris( ttp://calamaris.cord.de/ ) でログ統計を取ります。例: perl xx\calamaris.pl -a -w -f squid < yy\access.log > zz\log_0.htm 一連の処理はバッチ化し、タスクスケジューラで定期的 に起動すれば良いでしょう。 リアルタイムな稼動状態は、libexec/cachemgr.exe を使う。cgiが動くフォルダにコピーしcgiとして実行。 この際、".htaccess"や"http_access allow manager" は注意深く設定すること。 (Apacheならcachemgr.cgiにリネームしても起動可能) Menuの内、 Internal DNS Statistics General Runtime Information Process Filedescriptor Allocation Store Directory Stats Cache Client List あたりは有用。 # 深くなったので、新たなネタは新スレへ。 |
【 ? (03.18/02) 】 (他の人向けに)ちょっと追加:コンパイルにはcygwinが必要ですが、稼動機 (サーバ)に入れるのは抵抗が。。。という人 は多いでしょうね。 実は、稼動にはcygwin1.dll,cygregex.dll, (psapi.dll @NT) があればいいのですね。 (c:\winnt\system32 辺りに入れておく) で、環境変数を、 CYGWIN="tty binmode nontea nontsec" とでもしておけば、group,passwd辺りは 無くても何とかなるような。。(私はダミー で /etc に一応用意しているが) これでcygwinインスト無しのNTで1ヶ月程度 無事に動いています。(と言っても200クライ アント程度。それ以上の負荷に対しては不明) |
【 Makotto (03.18/02) 】 本当にいろいろありがとうございました。m(__)mおかげで、Squidをただ起動するだけでなく 管理する方法も勉強することが出来ました。 今はまだ、ルーターもない状況なので PCの2台目の購入と同時にルーターも導入するころに 再度、設定をいじろうと思います。 次は、 Cygwinの安全性などはよくわかりませんが、 Win2000Pro工房にあるソフト群を すべてCygwinからのコンパイルで まかなえないかなと、楽しんでみるつもりです。 また、わからないことが出てきたりしたときは お世話になります。 よろしくお願いします。 追記: 第一弾としてApacheをコンパイルしてみましたが Patchも必要なく、素で通ってしまいました。 いまは、いろんなFtpdを試し中です。 (どこかの記事で、CygwinのFtpdの方が パフォーマンスがいいとあったので) もう引っかかってますがw(Wu、Proが撃沈) 最終的に、1つのドライブをCygwin用にしちゃおうと思っています。 試して、また書かせていただきます。 |