Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Вперед Назад Содержание

3. Установка и запуск Squid

3.1 Насколько мощная система мне необходима, чтобы запускать Squid?

Нет четких указаний на этот счет. Самый важный для Squid ресурс - наличие физической памяти. Ваш процессор может быть и не ультра-быстрым. Your disk system will be the major bottleneck, so fast disks are important for high-volume caches. Не используйте IDE-диски, если у вас есть такая возможность.

В 1998 году, если вы покупаете новую машину для кеша, я бы порекомендовал такую конфигурацию:

  • 300 MHz Pentium II CPU
  • 512 MB ОЗУ
  • Пять 9 GB UW-SCSI дисков
Ваш системный диск и диск с лог-файлами могут иметь интерфейс IDE без потери качества работы кеша.

Также см. Squid Sizing for Intel Platforms by Martin Hamilton This is a very nice page summarizing system configurations people are using for large Squid caches.

3.2 Как мне установить Squid?

После компиляции Squid вы можете установить его такой простой командой:

        % make install
Если вы включили поддержку ICMP, то вам также необходимо ввести
        % su
        # make install-pinger

После инсталяции вам нужно отредактировать файл squid.conf под свои нужды. По умолчанию этот файл расположен в /usr/local/squid/etc/squid.conf.

В дистрибутив также включен гид QUICKSTART. Посмотрите в директории, куда вы распаковали исходные тексты.

3.3 Что делает файл squid.conf?

Файл squid.conf описывает настройки дляr squid. Конфигурация включает в себя (но это не есть ограничение) описание номера HTTP-порта, номер порта для запросов ICP, входящих и исходящих запросов, информацию о контроле доступа и различных таймаутах.

3.4 А у вас есть пример squid.conf?

Да, после того, как вы сделаете make install, вы можете найти пример файла squid.conf в поддиректории ``etc" директории, куда установле ваш Squid.

Пример файла squid.conf содержит поясняющие комментарии для каждой из опций.

3.5 Как мне запустить Squid?

После того, как вы закончили редактирование конфигурационного файла, вы можете первый раз запустить Squid. Эта имеет небольшие отличия в зависимости от используемой вами версии.

Squid версии 2.X

Прежде всего вы должны создать 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.

Squid версии 1.1.X

Для версии 1.1.16 и более поздних вы должны сначала запустить Squid с ключем -z, чтобы создать директории кеша.

        % /usr/local/squid/bin/squid -z
Squid завершит работу, когда закончит создание всех директорий. Далее можете запускать RunCache:
        % /usr/local/squid/bin/RunCache &

Для версий до 1.1.6 вы должны сразу запускать RunCache, взамен того, чтобы сначала запускать squid -z.

3.6 Как мне запускать Squid автоматически во время загрузки системы?

Squid версии 2.X

Squid-2 встроенную поддержку рестарта. This greatly simplifies starting 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). The child process is the one that does all of the work. Родительский процесс просто ждет завершения дочернего процесса. Если дочерний процесс внезапно завершается, то родительский процесс автоматически запускает новый дочерний процесс. В этом случае 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)
Первый - это родительский процессs, а дочерний процесс называется ``(squid)''. Note that if you accidentally kill the parent process, the child process will not notice.

Если вы хотите запустить Squid с терминала, чтобы он не уходил в фоновый режим и не порождал дочерний процесс, используйте ключ -N командной строки.

        /usr/local/squid/bin/squid -N

Squid версии 1.1.X

Из inittab

На системах, поддерживающих файл /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

Из rc.local

На 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

Некоторые желают использовать систему автозапуска ``init.d''. Если вы запускаете Squid (или RunCache) из скрипта ``init.d'', то вам возможно понадобится использовать nohup:

        nohup squid -sY $conf >> $logdir/squid.out 2>&1
Также вы можете добавить строку для перехвата определенных сигналов воизбежании их передачи процессу Squid. Добавьте в начало вашего скрипта такую строку:
        trap '' 1 2 3 18

3.7 Как узнать запущен ли Squid?

Вы можете использовать программу client:

        % client http://www.netscape.com/ > test

Есть также другие HTTP-клиенты для командной строки. Эти два могут показаться вам достаточно полезными: wget и echoping.

Другая возможность - использовать собственно сам Squid, чтобы посмотреть может ли он послать сиглна запущенному процессу Squid:

        % squid -k check
После чего проверьте значение статуса завершения.

Также проверье файлы журналов, наиболее важные из которых access.log и cache.log.

3.8 Опции командной строки squid.

Опции командной строки для Squid-2:

-a

Указывает альтернативный номер порта для входищих HTTP-запросов. Полезно для тестирования файла конфигурации на нестандартном порту.

-d

Уровень отладки для сообщений ``stderr''. Если вы используете эту опцию, то отладочные сообщения будут соответствующиеь указанному уровню также будут записаны на stderr.

-f

Указывает альтернативный файл squid.conf взамен пути, указанного при компиляции.

-h

Выводит сообщение с описанем опций комадной строки.

-k reconfigure

Посылает сигнал HUP, после которого Squid перечитывает файл конфигурации.

-k rotate

Посылает сигнал USR1, после которого Squid заменяет свои логи. Заметьте, что если директива logfile_rotate установлена в ноль, Squid просто закроет и откроет заново все свои файлы журналов.

-k shutdown

Посылает сигнал TERM, после которого Squid ждет некоторое toвремя, чтобы закрыть текущие соединения и завершить работу. Интервал времени ожидания задается директивой shutdown_lifetime.

-k interrupt

Посылает сигнал INT, после которого Squid немедленно заканчивает работу, не ожидая завершения текущах соединений.

-k kill

Посылает сигнал KILL, после которого процесс Squid завершается немедленно без закрытия любых соединений и файлов журналов. Применяется в крайних случаях.

-k debug

Посылает сигнал USR2, после которого Squid генерирует полные отладочные сообщения до получения следующего сигнала USR2. Особенно это полезно при проблемах с отладкой.

-k check

Посылает сигнал ``ZERO'' процессу Squid. Это простая проверка запущен процесс или нет.

-s

Посылает отладочные сообщения (только уровня 0) к syslog.

-u

Указывает альтернативный порт для ICP-сообщений. Полезно для тестирования конфигурации на нестандартном порту.

-v

Выводит версию Squid.

-z

Создает swap-директории на диске. Вы должны использовать этот ключ, когда запускаете Squid первый раз или когда добавили/изменили настройки cache_dir.

-D

Не деатет теста работы DNS. Обычно Squid ищет несколько хорошо известных имен узлов по DNS, чтобы убедиться, что ваша служба DNS работает правильно.

-F

Если журнал swap.state пуст, то кеш перестраивается в фоне прежде чем любой запрос будет обслужен. Это уменьшит время на перестройку кеша, но HTTP-запросы будут отрабатываться неудовлетворительно в течении этого интервала.

-N

Не становится демоном автоматически.

-R

Не устанавливать опцию SO_REUSEADDR на сокеты.

-V

Включить поддержку для режима httpd-акселератора. Это идентично указанию httpd_accel_host virtual в файле конфигурации.

-X

Включить полную отладку во время разбора файла конфигурации.

-Y

Возвращать ICP_OP_MISS_NOFETCH взамен ICP_OP_MISS пока будет читаться файл swap.state. Если ваш кеш в основном дочерние кеши, использующие ICP, это позволит вашему кешу перестраиваться быстрее.

3.9 Как мне посмотреть как работает Squid ?

  • Загляние в ваш cache.log, коорый расположен в директории с файлами журанлов. Логи - вешь достаточно интересная (и скучная), это часть нормального фукционирования процесса.
  • Установите и используйте Cache Manager.


Вперед Назад Содержание