[Q] Как поставить/настроить squid?

Прежде чем разбираться со squid'ом, надо убедиться, что все остальное работает. А именно:

  1. машина, на которой будет работать Proxy, может соединится (по WWW, FTP, Telnet - не важно) с машинами в мире;
  2. машины из внутренней сети могут соединится с этой машиной, опять же - не важно каким клиентом;
Если что-то из этого отсутствует, пока за squid браться рано.

Если же связь изнутри к Proxy-машине есть, и эта Proxy-машина может общаться с внешним миром, переходим к настройке squid'а. Я проверял на squid-1.1.20. Но, в других версиях (если они не намного древнее) должно быть примерно так же.

Squid надо ставить из packages или ports, тогда есть уверенность, что все его компоненты разложаться по нужным директориям, как это принято именно во FreeBSD. Должно получиться примерно следующее:

  1. Бинарники лежат в /usr/locl/sbin;
  2. В /usr/local/etc появилась директория squid, в которой лежит squid.conf - это как раз его конфиг-файл, его надо будет подправлять.
  3. В /usr/local/etc/rc.d появился файлик squid.sh - это основная запускалка (дело в том, что система при старте просматривает этот каталог, и все, что найдет там типа *.sh запустит автоматом). Но можно его запустить и вручную просто ./squid.sh. Если такого файла нет, то при перезагрузке squid не будет запускаться.
  4. В /usr/local образовалась директория squid, в которой две поддиректории cache - там будет его кэш и logs - логи. Там же должен быть файлик (возможно, он появится после первого запуска) squid.out - это основной лог, в которм и будут сообщения об ошибках, если squid почему-либо не сможет стартовать нормально.
Если что-то из вышеописанного лежит не там, то надо будет найти.

Для начала squid.conf можно не сильно не копать. Там стоят значения "по умолчанию", они вполне приемлимы. Единственное, что я советую - определится, сколько мегабайт диска вы согласны выделить под кэш. По умолчанию 100 МB. Если у Вас напряженка с дисковым пространством, или наоборот, переизбыток, то найдите в squid.conf строчку:

	cache_swap 100
и поставьте подходящее значение (если строчка закоментарена знаком '#' в начале - раскоментарьте). Максимальный обьем можно оценочно определить как обьем, который можно прокачать по Вашей линии к провайдеру за сутки.

Еще одна правка, скорее всего понадобится. Я запустил squid'а, ничего не исправляя, и он тут же выдал мне в squid.out сообщение об ошибке. Смысл сообщения был такой, что "нельзя запускать от имени root, используйте cache_effective_user в конфиге". Поскольку, при старте машины squid.sh будет исполняться от имени root, то надо сделать, что он просит. То есть, найти в конфиге строчку:

	cache_effective_user nobody nogroup
и раскоментарить ее. Это будет означать, что в процессе работы, squid будет иметь права "псевдоюзера" nobody.

На самом деле, это не совсем правильно. Правильнее - завести нового "псевдоюзера" squid (или еще как-нибудь - www, cache ...) и в конфиге вписать именно его, а не nobody. но если это слишком сложная для Вас задача, то просто раскоментарьте строчку и все.

После этого надо будет поправить владельца для директории /usr/local/squid (ну, там где кэш и логи). Для этого выполните команду

	chown -R nobody /usr/local/squid
("-R означает, что меняется владелец не только директории, но и Rекурсивно обходится все содержимое поддиректорий). Если вы завели специального "псевдоюзера", то, естественно, в команде вместо nobody укажите его имя. Теперь осталось сформировать "внутреннюю структуру кэша". Кстати, если этого не сделать, то squid при запуске сам скажет вам: "запустите программу squid -z". Сделайте, как он говорит. Только учтите, что /usr/local/sbin, обычно, не прописана в PATH даже у root'а, поэтому лучше набрать полный путь
	/usr/local/sbin/squid -z.
Это сравнительно длительный процесс, но когда он закончится, все должно быть уже готово к запуску.

Теперь можно попытаться запустить squid. Зайдите в /usr/local/etc/rc.d и запустите ./squid.sh. У меня с этого момента все заработало. Кстати, на консоли должно появится сообщение от squid'а "Ready to serve requests" ("готов обслуживать запросы").


Автор - Иван Паскаль.
Литературная правка - Дмитрий Карпов.