Нет четких указаний на этот счет. Самый важный для Squid ресурс - наличие физической памяти. Ваш процессор может быть и не ультра-быстрым. Ваша дисковая система может стать самым уязвимым местом с точки зрения производительности, поэтому быстрые диски очень важны для кешей большого размера. Не используйте IDE-диски, если у вас есть такая возможность.
В 1998 году, если вы покупаете новую машину для кеша, я бы порекомендовал такую конфигурацию:
Также см. Squid Sizing for Intel Platforms от Martin Hamilton. Это отличная страница с суммарной статистикой по конфигурациям систем, которые люди используют для больших кешей Squid.
После компиляции Squid вы можете установить его такой простой командой:
% make install
Если вы включили
поддержку ICMP,
то вам также необходимо ввести
% su
# make install-pinger
После инсталяции вам нужно отредактировать файл squid.conf под свои нужды. По умолчанию этот файл расположен в /usr/local/squid/etc/squid.conf.
В дистрибутив также включен гид QUICKSTART. Посмотрите в директории, куда вы распаковали исходные тексты.
Файл squid.conf описывает настройки дляr squid. Конфигурация включает в себя (но это не есть ограничение) описание номера HTTP-порта, номер порта для запросов ICP, входящих и исходящих запросов, информацию о контроле доступа и различных таймаутах.
Да, после того, как вы сделаете make install, вы можете найти пример файла squid.conf
в поддиректории ``etc" директории, куда установлен ваш Squid.
Пример файла squid.conf содержит поясняющие комментарии для каждой из опций.
После того, как вы закончили редактирование конфигурационного файла, вы можете первый раз запустить Squid. Эта операция имеет небольшие отличия в зависимости от используемой вами версии.
Прежде всего вы должны создать swap-директории. Это делается запуском Squid с ключем -z:
% /usr/local/squid/bin/squid -z
Когда процедура закончена, можете запускать Squid и пробовать его в работе.
Возможно хорошим решением станет запуск из вашего терминала и наблюдение за
отладочными сообщениями. Используйте команду:
% /usr/local/squid/bin/squid -NCd1
Если все работает как следует, то вы увидите строку:
Ready to serve requests.
Если вы хотите запускать Squid в фоновом режиме как процесс-демон, то уберите все опции:
% /usr/local/squid/bin/squid
ЗАМЕЧАНИЕ: в зависимости от вашей конфигурации вам возможно необходимо запускать squid из под root.
Для версии 1.1.16 и более поздних вы должны сначала запустить Squid с ключем -z, чтобы создать директории кеша.
% /usr/local/squid/bin/squid -z
Squid завершит работу, когда закончит создание всех директорий.
Далее можете запускать RunCache:
% /usr/local/squid/bin/RunCache &
Для версий до 1.1.6 вы должны сразу запускать RunCache, взамен того, чтобы сначала запускать squid -z.
Squid-2 встроенную поддержку рестарта. Это существенно упрощает запуск Squid и значит, что вам нет необходимости использовать RunCache или inittab. Как минимум вы должны указать полный путь к исполняемую файлу Squid. К примеру:
/usr/local/squid/bin/squid
Squid автоматически помещает себя в фоновый режим и порождает дочерний процесс. В файле, куда пишет ваш syslog, вы должны увидеть нечто подобное:
Sep 23 23:55:58 kitty squid[14616]: Squid Parent: child process 14617 started
Это значит, что процесс ID 14563 - родительский процесс, который управляет дочерним
процессом (pid 14617). Именно дочерний процесс проделывает всю работу. А родительский процесс
просто ждет завершения дочернего процесса. Если дочерний процесс внезапно завершается, то родительский
процесс автоматически запускает новый дочерний процесс. В этом случае syslog выведет:
Sep 23 23:56:02 kitty squid[14616]: Squid Parent: child process 14617 exited with status 1
Sep 23 23:56:05 kitty squid[14616]: Squid Parent: child process 14619 started
Если есть проблемы и Squid не может запуститься, то родительский процесс закончит работу через некоторое время. Ваш syslog выведет следующее:
Sep 23 23:56:12 kitty squid[14616]: Exiting due to repeated, frequent failures
Если это произошло, вы должны проверить сообщения от syslog и файл cache.log
на наличие ошибок.
Когда вы посмотрите на результат отработки команды ps, вы ложны увидеть два процесса squid:
24353 ?? Ss 0:00.00 /usr/local/squid/bin/squid
24354 ?? R 0:03.39 (squid) (squid)
Первый - это родительский процесс, а дочерний процесс называется ``(squid)''.
Заметьте, что если вы случайно убьете родительский процесс, то
дочерний на это никак не среагирует.
Если вы хотите запустить Squid с терминала, чтобы он не уходил в фоновый режим и не порождал дочерний процесс, используйте ключ -N командной строки.
/usr/local/squid/bin/squid -N
На системах, поддерживающих файл /etc/inittab (Digital Unix, Solaris, IRIX, HP-UX, Linux), вы можете добавить в него такую строку:
sq:3:respawn:/usr/local/squid/bin/squid.sh < /dev/null >> /tmp/squid.log 2>&1
Мы рекомендует использовать скрипт squid.sh, а не вызывать Squid напрямую. Пример
скрипта squid.sh приведен ниже:
#!/bin/sh
C=/usr/local/squid
PATH=/usr/bin:$C/bin
TZ=PST8PDT
export PATH TZ
notify="root"
cd $C
umask 022
sleep 10
while [ -f /tmp/nosquid ]; do
sleep 1
done
/usr/bin/tail -20 $C/logs/cache.log \
| Mail -s "Squid restart on `hostname` at `date`" $notify
exec bin/squid -CYs
На BSD-системах, вам необходимо запускать Squid из ``rc'' фалов, обычно это файл /etc/rc.local. К примеру:
if [ -f /usr/local/squid/bin/RunCache ]; then
echo -n ' Squid'
(/usr/local/squid/bin/RunCache &)
fi
Некоторые желают использовать систему автозапуска ``init.d''. Если вы запускаете Squid (или RunCache) из скрипта ``init.d'', то вам возможно понадобится использовать nohup:
nohup squid -sY $conf >> $logdir/squid.out 2>&1
Также вы можете добавить строку для перехвата определенных сигналов воизбежании
их передачи процессу Squid.
Добавьте в начало вашего скрипта такую строку:
trap '' 1 2 3 18
Вы можете использовать программу client:
% client http://www.netscape.com/ > test
Есть также другие HTTP-клиенты для командной строки. Эти два могут показаться вам достаточно полезными: wget и echoping.
Другая возможность - использовать собственно сам Squid, чтобы посмотреть может ли он послать сигнал запущенному процессу Squid:
% squid -k check
После чего проверьте значение статуса завершения.
Также проверьте файлы журналов, наиболее важные из которых access.log и cache.log.
Опции командной строки для Squid-2:
Указывает альтернативный номер порта для входящих HTTP-запросов. Полезно для тестирования файла конфигурации на нестандартном порту.
Уровень отладки для сообщений ``stderr''. Если вы используете эту опцию, то отладочные сообщения, соответствующие указанному уровню, также будут записаны на stderr.
Указывает альтернативный файл squid.conf взамен пути, указанного при компиляции.
Выводит сообщение с описанием опций командной строки.
Посылает сигнал HUP, после которого Squid перечитывает файл конфигурации.
Посылает сигнал USR1, после которого Squid заменяет свои логи. Заметьте, что если директива logfile_rotate установлена в ноль, Squid просто закроет и откроет заново все свои файлы журналов.
Посылает сигнал TERM, после которого Squid ждет некоторое время, чтобы закрыть текущие соединения и завершить работу. Интервал времени ожидания задается директивой shutdown_lifetime.
Посылает сигнал INT, после которого Squid немедленно заканчивает работу, не ожидая завершения текущах соединений.
Посылает сигнал KILL, после которого процесс Squid завершается немедленно без закрытия любых соединений и файлов журналов. Применяется в крайних случаях.
Посылает сигнал USR2, после которого Squid генерирует полные отладочные сообщения до получения следующего сигнала USR2. Особенно это полезно при проблемах с отладкой.
Посылает сигнал ``ZERO'' процессу Squid. Это простая проверка запущен процесс или нет.
Посылает отладочные сообщения (только уровня 0) к syslog.
Указывает альтернативный порт для ICP-сообщений. Полезно для тестирования конфигурации на нестандартном порту.
Выводит версию Squid.
Создает swap-директории на диске. Вы должны использовать этот ключ, когда запускаете Squid первый раз или когда добавили/изменили настройки cache_dir.
Не делает теста работы DNS. Обычно Squid ищет несколько хорошо известных имен узлов по DNS, чтобы убедиться, что ваша служба DNS работает правильно.
Если журнал swap.state пуст, то кеш перестраивается в фоне прежде чем любой запрос будет обслужен. Это уменьшит время на перестройку кеша, но HTTP-запросы будут отрабатываться неудовлетворительно в течении этого интервала.
Не становится демоном автоматически.
Не устанавливать опцию SO_REUSEADDR на сокеты.
Включить поддержку для режима httpd-акселератора. Это идентично указанию httpd_accel_host virtual в файле конфигурации.
Включить полную отладку во время разбора файла конфигурации.
Возвращать ICP_OP_MISS_NOFETCH взамен ICP_OP_MISS пока будет читаться файл swap.state. Если ваш кеш в основном дочерние кеши, использующие ICP, это позволит вашему кешу перестраиваться быстрее.