squid メモ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
squid は プロキシキャッシュのサービス。&br;
オープンソース(ライセンスは GPL)。クラスプラットフォー...
- [[squid(公式/英語):http://www.squid-cache.org/]]
-- [[Squid Versions(Download):http://www.squid-cache.org/...
- [[Squid cache (Wikipedia):http://ja.wikipedia.org/wiki/...
ソースは 2.x まで C、3.0 から C++ になっているので注意。&...
3.x 系の最新(安定?)バージョンは 2010年 05月 現在 3.1.3。
#contents
** とりあえず使ってみる [#pf8edc27]
Fedora 12 などの最近の Linux には squid をインストール時...
インストールで導入してない場合は、パッケージをインストー...
+ スーパーユーザになる。
$ su
+ squid をインストールする。
# yum install squid
+ /etc/squid/squid.conf を設定
-- 後述参照
+ 「システム」→「管理」→「ファイアーウォール」を開く。
+ 画面左ペインから「その他のポート」を選択。
+ 画面右ペインで「追加」を押して 3128 番(squid)を選択し...
+ 「適用」を押して設定画面を閉じる。
+ squid を起動。
/etc/rc.d/init.d/squid start
+ 自動起動の設定もしておく(任意)
# chkconfig squid on
これで、このサーバを介してインターネットに接続してみる。
IE8 なら、「ツール」→「インターネットオプション」→「接続...
Firefox の場合も 「ツール」→「オプション」→「詳細」タブ→...
上記設定をして、どこかインターネットのページ(www.yahoo.c...
** コンパイルして実行してみる [#p052867c]
今度は yum ではなく、squid のソースから導入してみる。
+ まず、ダウンロード。
-- [[squid downlad:http://www.squid-cache.org/Versions/]]
-- どこでもいいけど、ここは /home/(ユーザ名)/download に ...
+ スーパーユーザになる。&br;
$ su
+ カレントを移動する。
# cd /home/(ユーザ名)/download
+ ダウンロードした書庫を展開する。
# tar zxvf squid-3.1.x.tar.gz
※squid-3.1.x というディレクトリができる。
+ カレントを移動する。
# cd squid-3.1.x
+ configure して Makefile をつくる。
# ./configure
インストール先はデフォルトで /usr/local/squid になるので...
# ./configure --prefix=/hoge/squid
とか。
+ make する。
# make
+ 特にエラーがなければインストールする。
# make install
+ ここまでで、/usr/local/squid にインストールされているは...
# ls /usr/local/squid
+ squid 用のグループがあるか確認。
# grep squid /etc/group
-- 見つかれば、すでにあるということ。私の環境には以下のよ...
squid:x:23:
※yum で squid を入れると勝手に作成されるのかな。。ちとよ...
-- ない場合は作成。
# groupadd squid
+ squid 用のユーザがいるか確認。
# grep squid /etc/passwd
-- 私の環境には以下のようなユーザが既にいた。
squid:x:23:23::/var/spool/squid:/sbin/nologin
-- いない場合は作成。
# useradd -g squid -s /sbin/nologin squid
※明示的なログインを不可にするので、ホームディレクトリはい...
+ キャッシュディレクトリを作成。
# mkdir /usr/local/squid/var/cache
//+ PID 用のディレクトリを作成。
// # mkdir /usr/local/squid/var/run
// # mkdir /usr/local/squid/var/run/subsys
//※これは /var/run とかにした方がいいかもしれないけど。
//+ ロック用のディレクトリを作成。
// # mkdir /usr/local/squid/var/lock
//+ ログディレクトリを作成。
// # mkdir /usr/local/squid/var/logs
//※これは多分インストールで作成されてると思う。
+ キャッシュとログのディレクトリのオーナーを squid に変更...
# chown squid.squid /usr/local/squid/var/cache
# chown squid.squid /usr/local/squid/var/logs
# chown squid.squid /usr/local/squid/var/run -R
# chown squid.squid /usr/local/squid/var/lock
或いは、こうかな。
# chown -R squid.squid /usr/local/squid/var
+ squid.conf を設定。
-- 後述参照
+ キャッシュディレクトリを作成。
# cd /usr/local/sbin (←インストールしたところ)
# ./squid /usr/local/squid/sbin/squid -z
ここまでで、一応動くようになっているはず。
squid ユーザで、とりあえずログ出力させながら起動してみる。
# sudo squid /usr/local/squid/sbin/squid -N -d1
※-Nd1 というのは、非デーモン、デバッグログを出力するモー...
※実行後プロンプトに復帰しないので、停止させる場合は Ctrl ...
特にエラーが出ていないようなら、Windows などの PC で接続...
Windows 側のインターネットの設定方法は、上述と同じで。
** squid.conf の設定 [#fa7398a7]
いっぱいあるけど、とりあえず動かす為にやっておいた方が良...
- アクセスコントロールの設定&br;
acl example_net src 192.168.0.0/255.255.255.0
※"acl CONNECT method CONNECT" の次の行くらい。&br;
※"example_net" は何でも良い。下の http_access allow の記...
※この IP はローカル使用を想定してます。
- アクセス許可&br;
http_access allow example_net
※"http_access deny all" の前の行。&br;
※"example_net" は何でも良い。上の acl の記述に合わせる。
- ローカルIPを見えなくする設定&br;
forwarded_for off
※多分どこでも良い
- プロキシの表示名設定&br;
visible_hostname squid.example.com
※多分どこでも良い。&br;
※ローカルで使用する名前なら何でも良い。
- プロキシを通過したことを隠す場合は以下を設定&br;
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
※多分どこでも良い。
- cache_dir の設定を変更&br;
#cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /usr/local/squid/var/cache 1024 16 256
※コメントになってるので、有効にしてパスとサイズを書き換え...
※ここは サイズ 1G としてますが、お好みで。
- coredump_dir の設定変更&br;
#coredump_dir /var/spool/squid
coredump_dir /usr/local/squid/var/cache
※cache_dirと同じところに。
- squidを実行するグループとユーザを設定&br;
cache_effective_user squid
cache_effective_group squid
** Windows でコンパイルしてみる [#w0346b02]
Windows で squid をコンパイルする場合は、主に MinGW(+ ms...
基本的なやり方は Linux でのやり方(上述)と同じだが、[[公...
''MinGW の場合''
$ ./configure \
--disable-wccp \
--disable--wccpv2 \
--enable-win32-service \
--enable-default-hostsfile=none
''Cygwin の場合''
$ ./configure \
--disable-wccp \
--disable--wccpv2
disable-wccp というのは、Windows は POSIX が使えないので...
*** msys での起動パス [#j1659e52]
msys で squid を起動しようとすると、パスがおかしいためか...
デフォルトでは、インストール先が /usr/local/squid となる...
なので、インストールフォルダをまるまる C:\usr\local\squid...
C:\> cd C:\usr\local\squid\sbin
C:\usr\local\squid\sbin> squid -z
C:\usr\local\squid\sbin> squid
ちなみに、Cygwin ならそのまま動作するようだ。
*** 3.1.x はコンパイルできない? [#qb4bd8be]
[[squid-2.7.STABLE9:http://www.squid-cache.org/Versions/v...
どちらも何か調整が必要なのかもしれない。もう少し調べてみ...
** 起動スクリプトをつくる [#d0567eff]
yum でインストールされたスクリプトを参考に、以下のような...
#code(sh){{
#!/bin/bash
# Source function library.
. /etc/rc.d/init.d/functions
# install dir
prefix=/usr/local/squid
# exec dir
exec_prefix=${prefix}
# program name
progname=squid
# lock file
lockfile=${prefix}/var/lock/subsys/${progname}
# program path
prog=${prefix}/sbin/squid
# config file path
conffile=${prefix}/etc/squid.conf
# log file
logfile=${prefix}/var/logs/squid.out
# PID file
pidfile=${prefix}/var/run/squid.pid
# shutdown timeout
stoptimeout=120
RETVAL=0
start() {
echo -n $"Starting $progname: "
$prog -f $conffile >> $logfile 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
[ $RETVAL -eq 0 ] && echo_success
[ $RETVAL -ne 0 ] && echo_failure
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $progname: "
$prog -k shutdown -f $conffile >> $logfile 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
rm -f $lockfile
timeout=0;
while : ; do
[ -f $pidfile ] || break
if [ $timeout -ge $stoptimeout ]; then
RETVAL=1
break
fi
sleep 1 && echo -n "."
timeout=$((timeout+1))
done
echo_success
echo
else
echo_failure
if [ ! -e $lockfile ]; then
RETVAL=0
fi
echo
fi
return $RETVAL
}
reload() {
$prog -k reconfigure -f $conffile
}
restart() {
stop
start
}
rhstatus() {
status $prog && $prog -k check -f $conffile
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload|force-reload)
reload
;;
restart)
restart
;;
status)
rhstatus
;;
*)
echo $"Usage: $0 {start|stop|status|reload|force-reload}"
exit 2
esac
exit $?
}}
これを /usr/local/squid/var/bin に squid.debug などとして...
# /usr/local/squid/var/bin/squid.debug start
上手く動いたらバンザイ。
*** 参考サイト [#f6813d62]
- [[シェルスクリプト(Bash):http://cyberam.dip.jp/linux_...
** Cache Manager を使えるようにする [#j4b4ce7a]
キャッシュマネージャというのは、squid がとっているログ情...
あと、Web サーバの Apache の設定もする必要がある。多分。
+ Apache がない場合は、まずインストール。
# rpm -qa | grep httpd
して、何も表示されない場合は未インストールなので入れる。&...
# yum install httpd
+ スクリプトを置くディレクトリを作成。&br;
# mkdir /var/www/cgi-bin/squid
※ /var/www/cgi-bin は Apache をインストールすれば作成され...
+ スクリプトが実行できるように、httpd.conf を編集。
# vi /etc/httpd/conf/httpd.conf
&br;
以下の設定を追加。
<Directory "/var/www/cgi-bin/squid">
order allow,deny
allow from all
</Directory>
※ アクセス元を限定する場合は allow from の後に指定する。
+ cachemgr.cgi を スクリプトディレクトリにコピー。
-- cachemgr.cgi は /usr/local/squid/libexec の下にある。&...
# cp /usr/local/squid/libexec/cachemgr.cgi /var/www/cgi-...
+ cachemgr.conf を設定。
-- /usr/local/squid/etc の下の cachemgr.conf には デフォ...
# vi /usr/local/squid/etc/cachemgr.conf
&br;
localhost:3128
※ ポート番号は squid が使っているポート番号。
+ squid.conf で、キャッシュマネージャにアクセスできるよう...
-- ここは LAN 内の接続からならアクセスできるようにする。&...
acl example_nw src 192.168.0.0/24
という定義を追加して、http_access deny manager という行の...
http_access allow manager example_nw
を追加する。&br;
※ example_nw という名前は何でも OK。
これでキャッシュマネージャは使えるようになってるはずなの...
# /etc/rc.d/init.d/httpd restart
# /usr/local/squid/sbin/squid -k reconfigure
これで、ブラウザから http://(プロキシサーバ)/cgi-bin/squi...
「Cache Manager Interface」の画面が出たら、そのまま「cont...
統計情報の一覧が表示されれば、設定完了。
*** Permission denied が出る場合 [#e5307bd2]
環境によっては上記の設定だけだとパーミッションで蹴られる。
Cache Manager Error
(プロキシサーバ) (13) Permission denied
/usr/local/squid/var/cache や /logs のパーミッションを確...
/var/log/audit/audit.log を確認してみて、
type=AVC msg=audit(1274851190.959:27996): avc: denied ...
for pid=4083 comm="cachemgr.cgi" dest=3128
scontext=unconfined_u:system_r:httpd_sys_script_t:s0
tcontext=system_u:object_r:http_cache_port_t:s0 tclass=t...
type=SYSCALL msg=audit(1274851190.959:27996): arch=40000...
success=no exit=-110 a0=3 a1=bf83cb70 a2=8615078 a3=3 it...
pid=4083 auid=500 uid=48 gid=489 euid=48 suid=48 fsuid=4...
fsgid=489 tty=(none) ses=1 comm="cachemgr.cgi" exe="/var...
/cachemgr.cgi" subj=unconfined_u:system_r:httpd_sys_scri...
みたいなログが出てたら、SELinux がクロ。
GNOME なら、「システム」→「管理」→「SELinux Management」...
*** 参考サイト [#kb2ef0c1]
- [[Squidの設定 【Squid Web プロキシ & キャッシュ】:http:...
-- [[キャッシュマネージャ:http://squid.robata.org/faq_9.h...
** カスタマイズしてみる [#gfc242ed]
作業しやすいように Eclipse CDT に取り込んでみるよ。
Eclipse CDT はこちら。
- [[Eclipse C/C++ Development Tooling - CDT:http://www.ec...
+ squid-3.x.x.tar.gz を適当なディレクトリに展開。
-- ここは /home/hoge/tmp とする。&br;
$ mkdir /home/hoge/tmp
$ cp (ダウンロードした場所)/squid-3.x.x.tar.gz /home/hog...
$ cd /home/hoge/tmp
$ tar zxvf squid-3.x.x.tar.gz
$ ls
squid-3.x.x squid-3.x.x.tar.gz
+ Eclipse を起動。
+ 「ファイル」→「新規」→「C++ Project」を選択。以下を設定。
-- プロジェクト名 : squid (何でも OK)
-- Project Type : 「''Makefile project''」 → 「Empty proj...
Makefile は configure でつくるので、Makefile project にす...
ここで Executable にしてしまうと、CDT が勝手にオレオレ Ma...
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 「src」フォルダを右クリックして「インポート」を選択。
-- 「一般」→「ファイルシステム」で上記で展開した /home/ho...
→ ガッツリとソースがインポートされる。
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 「プロジェクト」→「プロパティ」を選択して以下を設定。
-- 「C/C++ Build」を選択して「Build Settings」タブで以下...
--- 「Build Location」の「Build Directory」で、上記で作成...
→ ${workspace_loc/squid/build}
+ ここでちょっと Eclipse を離れてターミナル操作。
+ Eclipse のワークスペースディレクトリに build ディレクト...
-- ワークスペースを /home/hoge/workspace とすると、&br;
$ cd /home/hoge/workspace/squid/build
+ build ディレクトリで configure を実行する。
$ ../src/configure --prefix=/home/hoge/workspace/squid/app
※ これ以外のオプションはお好みでつけてネ。
+ Eclipse に戻って、プロジェクト名を右クリックして「更新...
-- 「build」フォルダに Makefile ができているはず。
+ 「build」フォルダを右クリックして「Make Target」→「Crea...
-- Target Name : 「all」(分かれば何でも OK)
-- Make Target : 「all」(こっちは「all」とすること)
+ 「build」フォルダを右クリックして「Make Target」→「Crea...
-- Target Name : 「install」(分かれば何でも OK)
-- Make Target : 「install」(こっちは「install」とするこ...
+ 「プロジェクト」→「Make Target」→「Build」で、「all」を...
-- 「build」フォルダに出力ファイルがドバーッと出る。
+ 「プロジェクト」→「Make Target」→「Build」で、「install...
-- 「app」フォルダに出力ファイルがドバーッと出る。
+ 「app」フォルダ →「etc」フォルダにある squid.conf ファ...
-- 設定方法は上記インストール時の設定と同じ要領で。
+ ターミナルで以下を実行。
$ cd /home/hoge/workspace/squid/app/sbin
$ squid -z
これでキャッシュディレクトリが作成される。
+ 「実行」→「デバッグの構成」を選択して以下を設定。
-- 「C/C++ Application」を選択。
--- 名前に「squid Debug」とでも設定。(何でも良い)
--- 「Main」タブの「C/C++ Application」で「Search Project...
--- 「Arguments」タブの「Program arguments」に以下を設定...
-Nd1
※ これは非サービスモード、デバッグログを出力するオプショ...
※ オプションの意味が分かれば他にもいろいろ追加して OK。
--- 「Debugger」タブの「Debugger」に「gdb/mi」を選択。&br;
※ デフォルトは「gdb Debugger」なので、そのままでもいいか...
+ ツールバーの「デバッグ」→「お気に入りの編成」で、上記で...
+ ツールバーの「デバッグ」か F11 などでデバッグ実行してみ...
-- 特に問題なければ squid が起動し、main.cc の先頭でブレ...
後は好きなところにブレークはったり変数いじったりしながら ...
ちなみに、プログラミングガイドはこれ。
- [[Squid 3.x Developer Programming Guide :http://squid....
英語ダケドネー。(~_~;
*** 参考サイト [#w2cbd157]
- [[Eclipse Platformを使用したC/C++ 開発:http://www.ibm.c...
- [[CDT デバッガーとのインターフェース: 第 1 回 C/C++ デ...
- [[CDT デバッガーとのインターフェース: 第 2 回 Eclipse ...
** その他小ネタ [#r17b344b]
*** COSS? [#q37b10ad]
squid 3.x 系は、%%キャッシュディレクトリのタグ(cache_dir...
これは何かというと、squid は通常 cache_dir に設定されたデ...
COSS 自体は squid 2.6 くらいから設定によって利用できるら...
'''参考'''
- [[cossとは - はてな:http://d.hatena.ne.jp/keyword/coss]]
- [[Squid/キャッシュストレージとして COSS を使う:http://w...
** 外部リンク [#id28b92e]
- [[プロキシサーバー構築(Squid):http://fedorasrv.com/squi...
- [[Fedora 12 でプロキシサーバー構築(squid):http://ytooya...
- [[Proxyキャッシュサーバ設定術―Squidの設定:http://arika....
- [[squidのインストールと設定:http://www.rose.sannet.ne.j...
- [[Squid プロキシサーバの設定:http://unixlife.jp/unixlif...
- [[システム/サーバ構築:http://www.stackasterisk.jp/tech/...
-- [[プロキシサーバSquid:http://www.stackasterisk.jp/tech...
-- [[SquidGurardによるアクセス制御:http://www.stackasteri...
-- [[squidの統計情報:http://www.stackasterisk.jp/tech/sys...
-----
[[MLEXP. Wiki]]
終了行:
squid は プロキシキャッシュのサービス。&br;
オープンソース(ライセンスは GPL)。クラスプラットフォー...
- [[squid(公式/英語):http://www.squid-cache.org/]]
-- [[Squid Versions(Download):http://www.squid-cache.org/...
- [[Squid cache (Wikipedia):http://ja.wikipedia.org/wiki/...
ソースは 2.x まで C、3.0 から C++ になっているので注意。&...
3.x 系の最新(安定?)バージョンは 2010年 05月 現在 3.1.3。
#contents
** とりあえず使ってみる [#pf8edc27]
Fedora 12 などの最近の Linux には squid をインストール時...
インストールで導入してない場合は、パッケージをインストー...
+ スーパーユーザになる。
$ su
+ squid をインストールする。
# yum install squid
+ /etc/squid/squid.conf を設定
-- 後述参照
+ 「システム」→「管理」→「ファイアーウォール」を開く。
+ 画面左ペインから「その他のポート」を選択。
+ 画面右ペインで「追加」を押して 3128 番(squid)を選択し...
+ 「適用」を押して設定画面を閉じる。
+ squid を起動。
/etc/rc.d/init.d/squid start
+ 自動起動の設定もしておく(任意)
# chkconfig squid on
これで、このサーバを介してインターネットに接続してみる。
IE8 なら、「ツール」→「インターネットオプション」→「接続...
Firefox の場合も 「ツール」→「オプション」→「詳細」タブ→...
上記設定をして、どこかインターネットのページ(www.yahoo.c...
** コンパイルして実行してみる [#p052867c]
今度は yum ではなく、squid のソースから導入してみる。
+ まず、ダウンロード。
-- [[squid downlad:http://www.squid-cache.org/Versions/]]
-- どこでもいいけど、ここは /home/(ユーザ名)/download に ...
+ スーパーユーザになる。&br;
$ su
+ カレントを移動する。
# cd /home/(ユーザ名)/download
+ ダウンロードした書庫を展開する。
# tar zxvf squid-3.1.x.tar.gz
※squid-3.1.x というディレクトリができる。
+ カレントを移動する。
# cd squid-3.1.x
+ configure して Makefile をつくる。
# ./configure
インストール先はデフォルトで /usr/local/squid になるので...
# ./configure --prefix=/hoge/squid
とか。
+ make する。
# make
+ 特にエラーがなければインストールする。
# make install
+ ここまでで、/usr/local/squid にインストールされているは...
# ls /usr/local/squid
+ squid 用のグループがあるか確認。
# grep squid /etc/group
-- 見つかれば、すでにあるということ。私の環境には以下のよ...
squid:x:23:
※yum で squid を入れると勝手に作成されるのかな。。ちとよ...
-- ない場合は作成。
# groupadd squid
+ squid 用のユーザがいるか確認。
# grep squid /etc/passwd
-- 私の環境には以下のようなユーザが既にいた。
squid:x:23:23::/var/spool/squid:/sbin/nologin
-- いない場合は作成。
# useradd -g squid -s /sbin/nologin squid
※明示的なログインを不可にするので、ホームディレクトリはい...
+ キャッシュディレクトリを作成。
# mkdir /usr/local/squid/var/cache
//+ PID 用のディレクトリを作成。
// # mkdir /usr/local/squid/var/run
// # mkdir /usr/local/squid/var/run/subsys
//※これは /var/run とかにした方がいいかもしれないけど。
//+ ロック用のディレクトリを作成。
// # mkdir /usr/local/squid/var/lock
//+ ログディレクトリを作成。
// # mkdir /usr/local/squid/var/logs
//※これは多分インストールで作成されてると思う。
+ キャッシュとログのディレクトリのオーナーを squid に変更...
# chown squid.squid /usr/local/squid/var/cache
# chown squid.squid /usr/local/squid/var/logs
# chown squid.squid /usr/local/squid/var/run -R
# chown squid.squid /usr/local/squid/var/lock
或いは、こうかな。
# chown -R squid.squid /usr/local/squid/var
+ squid.conf を設定。
-- 後述参照
+ キャッシュディレクトリを作成。
# cd /usr/local/sbin (←インストールしたところ)
# ./squid /usr/local/squid/sbin/squid -z
ここまでで、一応動くようになっているはず。
squid ユーザで、とりあえずログ出力させながら起動してみる。
# sudo squid /usr/local/squid/sbin/squid -N -d1
※-Nd1 というのは、非デーモン、デバッグログを出力するモー...
※実行後プロンプトに復帰しないので、停止させる場合は Ctrl ...
特にエラーが出ていないようなら、Windows などの PC で接続...
Windows 側のインターネットの設定方法は、上述と同じで。
** squid.conf の設定 [#fa7398a7]
いっぱいあるけど、とりあえず動かす為にやっておいた方が良...
- アクセスコントロールの設定&br;
acl example_net src 192.168.0.0/255.255.255.0
※"acl CONNECT method CONNECT" の次の行くらい。&br;
※"example_net" は何でも良い。下の http_access allow の記...
※この IP はローカル使用を想定してます。
- アクセス許可&br;
http_access allow example_net
※"http_access deny all" の前の行。&br;
※"example_net" は何でも良い。上の acl の記述に合わせる。
- ローカルIPを見えなくする設定&br;
forwarded_for off
※多分どこでも良い
- プロキシの表示名設定&br;
visible_hostname squid.example.com
※多分どこでも良い。&br;
※ローカルで使用する名前なら何でも良い。
- プロキシを通過したことを隠す場合は以下を設定&br;
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
※多分どこでも良い。
- cache_dir の設定を変更&br;
#cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /usr/local/squid/var/cache 1024 16 256
※コメントになってるので、有効にしてパスとサイズを書き換え...
※ここは サイズ 1G としてますが、お好みで。
- coredump_dir の設定変更&br;
#coredump_dir /var/spool/squid
coredump_dir /usr/local/squid/var/cache
※cache_dirと同じところに。
- squidを実行するグループとユーザを設定&br;
cache_effective_user squid
cache_effective_group squid
** Windows でコンパイルしてみる [#w0346b02]
Windows で squid をコンパイルする場合は、主に MinGW(+ ms...
基本的なやり方は Linux でのやり方(上述)と同じだが、[[公...
''MinGW の場合''
$ ./configure \
--disable-wccp \
--disable--wccpv2 \
--enable-win32-service \
--enable-default-hostsfile=none
''Cygwin の場合''
$ ./configure \
--disable-wccp \
--disable--wccpv2
disable-wccp というのは、Windows は POSIX が使えないので...
*** msys での起動パス [#j1659e52]
msys で squid を起動しようとすると、パスがおかしいためか...
デフォルトでは、インストール先が /usr/local/squid となる...
なので、インストールフォルダをまるまる C:\usr\local\squid...
C:\> cd C:\usr\local\squid\sbin
C:\usr\local\squid\sbin> squid -z
C:\usr\local\squid\sbin> squid
ちなみに、Cygwin ならそのまま動作するようだ。
*** 3.1.x はコンパイルできない? [#qb4bd8be]
[[squid-2.7.STABLE9:http://www.squid-cache.org/Versions/v...
どちらも何か調整が必要なのかもしれない。もう少し調べてみ...
** 起動スクリプトをつくる [#d0567eff]
yum でインストールされたスクリプトを参考に、以下のような...
#code(sh){{
#!/bin/bash
# Source function library.
. /etc/rc.d/init.d/functions
# install dir
prefix=/usr/local/squid
# exec dir
exec_prefix=${prefix}
# program name
progname=squid
# lock file
lockfile=${prefix}/var/lock/subsys/${progname}
# program path
prog=${prefix}/sbin/squid
# config file path
conffile=${prefix}/etc/squid.conf
# log file
logfile=${prefix}/var/logs/squid.out
# PID file
pidfile=${prefix}/var/run/squid.pid
# shutdown timeout
stoptimeout=120
RETVAL=0
start() {
echo -n $"Starting $progname: "
$prog -f $conffile >> $logfile 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
[ $RETVAL -eq 0 ] && echo_success
[ $RETVAL -ne 0 ] && echo_failure
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $progname: "
$prog -k shutdown -f $conffile >> $logfile 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
rm -f $lockfile
timeout=0;
while : ; do
[ -f $pidfile ] || break
if [ $timeout -ge $stoptimeout ]; then
RETVAL=1
break
fi
sleep 1 && echo -n "."
timeout=$((timeout+1))
done
echo_success
echo
else
echo_failure
if [ ! -e $lockfile ]; then
RETVAL=0
fi
echo
fi
return $RETVAL
}
reload() {
$prog -k reconfigure -f $conffile
}
restart() {
stop
start
}
rhstatus() {
status $prog && $prog -k check -f $conffile
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload|force-reload)
reload
;;
restart)
restart
;;
status)
rhstatus
;;
*)
echo $"Usage: $0 {start|stop|status|reload|force-reload}"
exit 2
esac
exit $?
}}
これを /usr/local/squid/var/bin に squid.debug などとして...
# /usr/local/squid/var/bin/squid.debug start
上手く動いたらバンザイ。
*** 参考サイト [#f6813d62]
- [[シェルスクリプト(Bash):http://cyberam.dip.jp/linux_...
** Cache Manager を使えるようにする [#j4b4ce7a]
キャッシュマネージャというのは、squid がとっているログ情...
あと、Web サーバの Apache の設定もする必要がある。多分。
+ Apache がない場合は、まずインストール。
# rpm -qa | grep httpd
して、何も表示されない場合は未インストールなので入れる。&...
# yum install httpd
+ スクリプトを置くディレクトリを作成。&br;
# mkdir /var/www/cgi-bin/squid
※ /var/www/cgi-bin は Apache をインストールすれば作成され...
+ スクリプトが実行できるように、httpd.conf を編集。
# vi /etc/httpd/conf/httpd.conf
&br;
以下の設定を追加。
<Directory "/var/www/cgi-bin/squid">
order allow,deny
allow from all
</Directory>
※ アクセス元を限定する場合は allow from の後に指定する。
+ cachemgr.cgi を スクリプトディレクトリにコピー。
-- cachemgr.cgi は /usr/local/squid/libexec の下にある。&...
# cp /usr/local/squid/libexec/cachemgr.cgi /var/www/cgi-...
+ cachemgr.conf を設定。
-- /usr/local/squid/etc の下の cachemgr.conf には デフォ...
# vi /usr/local/squid/etc/cachemgr.conf
&br;
localhost:3128
※ ポート番号は squid が使っているポート番号。
+ squid.conf で、キャッシュマネージャにアクセスできるよう...
-- ここは LAN 内の接続からならアクセスできるようにする。&...
acl example_nw src 192.168.0.0/24
という定義を追加して、http_access deny manager という行の...
http_access allow manager example_nw
を追加する。&br;
※ example_nw という名前は何でも OK。
これでキャッシュマネージャは使えるようになってるはずなの...
# /etc/rc.d/init.d/httpd restart
# /usr/local/squid/sbin/squid -k reconfigure
これで、ブラウザから http://(プロキシサーバ)/cgi-bin/squi...
「Cache Manager Interface」の画面が出たら、そのまま「cont...
統計情報の一覧が表示されれば、設定完了。
*** Permission denied が出る場合 [#e5307bd2]
環境によっては上記の設定だけだとパーミッションで蹴られる。
Cache Manager Error
(プロキシサーバ) (13) Permission denied
/usr/local/squid/var/cache や /logs のパーミッションを確...
/var/log/audit/audit.log を確認してみて、
type=AVC msg=audit(1274851190.959:27996): avc: denied ...
for pid=4083 comm="cachemgr.cgi" dest=3128
scontext=unconfined_u:system_r:httpd_sys_script_t:s0
tcontext=system_u:object_r:http_cache_port_t:s0 tclass=t...
type=SYSCALL msg=audit(1274851190.959:27996): arch=40000...
success=no exit=-110 a0=3 a1=bf83cb70 a2=8615078 a3=3 it...
pid=4083 auid=500 uid=48 gid=489 euid=48 suid=48 fsuid=4...
fsgid=489 tty=(none) ses=1 comm="cachemgr.cgi" exe="/var...
/cachemgr.cgi" subj=unconfined_u:system_r:httpd_sys_scri...
みたいなログが出てたら、SELinux がクロ。
GNOME なら、「システム」→「管理」→「SELinux Management」...
*** 参考サイト [#kb2ef0c1]
- [[Squidの設定 【Squid Web プロキシ & キャッシュ】:http:...
-- [[キャッシュマネージャ:http://squid.robata.org/faq_9.h...
** カスタマイズしてみる [#gfc242ed]
作業しやすいように Eclipse CDT に取り込んでみるよ。
Eclipse CDT はこちら。
- [[Eclipse C/C++ Development Tooling - CDT:http://www.ec...
+ squid-3.x.x.tar.gz を適当なディレクトリに展開。
-- ここは /home/hoge/tmp とする。&br;
$ mkdir /home/hoge/tmp
$ cp (ダウンロードした場所)/squid-3.x.x.tar.gz /home/hog...
$ cd /home/hoge/tmp
$ tar zxvf squid-3.x.x.tar.gz
$ ls
squid-3.x.x squid-3.x.x.tar.gz
+ Eclipse を起動。
+ 「ファイル」→「新規」→「C++ Project」を選択。以下を設定。
-- プロジェクト名 : squid (何でも OK)
-- Project Type : 「''Makefile project''」 → 「Empty proj...
Makefile は configure でつくるので、Makefile project にす...
ここで Executable にしてしまうと、CDT が勝手にオレオレ Ma...
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 「src」フォルダを右クリックして「インポート」を選択。
-- 「一般」→「ファイルシステム」で上記で展開した /home/ho...
→ ガッツリとソースがインポートされる。
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 画面左ペインのプロジェクト名を右クリックして「新規」→「...
+ 「プロジェクト」→「プロパティ」を選択して以下を設定。
-- 「C/C++ Build」を選択して「Build Settings」タブで以下...
--- 「Build Location」の「Build Directory」で、上記で作成...
→ ${workspace_loc/squid/build}
+ ここでちょっと Eclipse を離れてターミナル操作。
+ Eclipse のワークスペースディレクトリに build ディレクト...
-- ワークスペースを /home/hoge/workspace とすると、&br;
$ cd /home/hoge/workspace/squid/build
+ build ディレクトリで configure を実行する。
$ ../src/configure --prefix=/home/hoge/workspace/squid/app
※ これ以外のオプションはお好みでつけてネ。
+ Eclipse に戻って、プロジェクト名を右クリックして「更新...
-- 「build」フォルダに Makefile ができているはず。
+ 「build」フォルダを右クリックして「Make Target」→「Crea...
-- Target Name : 「all」(分かれば何でも OK)
-- Make Target : 「all」(こっちは「all」とすること)
+ 「build」フォルダを右クリックして「Make Target」→「Crea...
-- Target Name : 「install」(分かれば何でも OK)
-- Make Target : 「install」(こっちは「install」とするこ...
+ 「プロジェクト」→「Make Target」→「Build」で、「all」を...
-- 「build」フォルダに出力ファイルがドバーッと出る。
+ 「プロジェクト」→「Make Target」→「Build」で、「install...
-- 「app」フォルダに出力ファイルがドバーッと出る。
+ 「app」フォルダ →「etc」フォルダにある squid.conf ファ...
-- 設定方法は上記インストール時の設定と同じ要領で。
+ ターミナルで以下を実行。
$ cd /home/hoge/workspace/squid/app/sbin
$ squid -z
これでキャッシュディレクトリが作成される。
+ 「実行」→「デバッグの構成」を選択して以下を設定。
-- 「C/C++ Application」を選択。
--- 名前に「squid Debug」とでも設定。(何でも良い)
--- 「Main」タブの「C/C++ Application」で「Search Project...
--- 「Arguments」タブの「Program arguments」に以下を設定...
-Nd1
※ これは非サービスモード、デバッグログを出力するオプショ...
※ オプションの意味が分かれば他にもいろいろ追加して OK。
--- 「Debugger」タブの「Debugger」に「gdb/mi」を選択。&br;
※ デフォルトは「gdb Debugger」なので、そのままでもいいか...
+ ツールバーの「デバッグ」→「お気に入りの編成」で、上記で...
+ ツールバーの「デバッグ」か F11 などでデバッグ実行してみ...
-- 特に問題なければ squid が起動し、main.cc の先頭でブレ...
後は好きなところにブレークはったり変数いじったりしながら ...
ちなみに、プログラミングガイドはこれ。
- [[Squid 3.x Developer Programming Guide :http://squid....
英語ダケドネー。(~_~;
*** 参考サイト [#w2cbd157]
- [[Eclipse Platformを使用したC/C++ 開発:http://www.ibm.c...
- [[CDT デバッガーとのインターフェース: 第 1 回 C/C++ デ...
- [[CDT デバッガーとのインターフェース: 第 2 回 Eclipse ...
** その他小ネタ [#r17b344b]
*** COSS? [#q37b10ad]
squid 3.x 系は、%%キャッシュディレクトリのタグ(cache_dir...
これは何かというと、squid は通常 cache_dir に設定されたデ...
COSS 自体は squid 2.6 くらいから設定によって利用できるら...
'''参考'''
- [[cossとは - はてな:http://d.hatena.ne.jp/keyword/coss]]
- [[Squid/キャッシュストレージとして COSS を使う:http://w...
** 外部リンク [#id28b92e]
- [[プロキシサーバー構築(Squid):http://fedorasrv.com/squi...
- [[Fedora 12 でプロキシサーバー構築(squid):http://ytooya...
- [[Proxyキャッシュサーバ設定術―Squidの設定:http://arika....
- [[squidのインストールと設定:http://www.rose.sannet.ne.j...
- [[Squid プロキシサーバの設定:http://unixlife.jp/unixlif...
- [[システム/サーバ構築:http://www.stackasterisk.jp/tech/...
-- [[プロキシサーバSquid:http://www.stackasterisk.jp/tech...
-- [[SquidGurardによるアクセス制御:http://www.stackasteri...
-- [[squidの統計情報:http://www.stackasterisk.jp/tech/sys...
-----
[[MLEXP. Wiki]]
ページ名: