conf t

インフラエンジニアのメモ

squidのソースインストール

squidをソースからインストールしました。

http://www.squid-cache.org/Versions/v3/3.5/
wgetでtarをダウンロードする

解凍したら、解凍したディレクトリに入って以下configureを実行
configureのオプションはとりあえずインストール場所の指定のみ
(デフォルトで/usr/local/squidにインストールされるようなので、本当は何も指定しなくても良かった)

./configure --prefix=/usr/local/squid/
make
make install

./configureのオプション指定をもう一度やり直したい時は

make clean

makeすると以下エラーが発生して失敗しました。

# make
Making all in compat
make[1]: ディレクトリ `/root/download/squid-3.5.17/compat' に入ります
source='assert.cc' object='assert.lo' libtool=yes \
    DEPDIR=.deps depmode=none /bin/sh ../cfgaux/depcomp \
    /bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I.. -I../include -I../lib -I../src -I../include   -I../libltdl    -c -o assert.lo assert.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I../include -I../lib -I../src -I../include -I../libltdl -c assert.cc  -o .libs/assert.o
../libtool: line 1763: g++: コマンドが見つかりません
make[1]: *** [assert.lo] エラー 1
make[1]: ディレクトリ `/root/download/squid-3.5.17/compat' から出ます
make: *** [all-recursive] エラー 1

gcc-c++が必要らしいので、yumでインストール

yum install gcc-c++

起動

/usr/local/squid/sbin/squid

インストール後、 起動しようとしたところ以下エラーが出てしまいました。

# /usr/local/squid/sbin/squid
WARNING: Cannot write log file: /usr/local/squid/var/logs/cache.log
/usr/local/squid/var/logs/cache.log: Permission denied
         messages will be sent to 'stderr'.

squidはデフォルトだとnobodyで動くため、そのままだとディレクトリにアクセスできないらしい。
/usr/local/squidパーミッションをnobodyに変更

chown -R nobody: squid/

デフォルトだとaccess.logの時間がエポック秒のため読めない。
JSTに直す。squid.confに以下を追加する。

# logformat
logformat squid %tl %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt

設定反映のため、再起動

/usr/local/squid/sbin/squid -k restart

設定チェック
起動できない時は何かしらエラーが出ている。

/usr/local/squid/sbin/squid -k parse

停止

/usr/local/squid/sbin/squid -k shutdown