Размер
Руководство по установке squid2mysql под FreeBSD 0
Play

Руководство по установке squid2mysql под FreeBSD 0

Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.

Данная статья описывает этапы и особенности установки исправленной версии squid2mysql под FreeBSD.

Что такое Squid2MySQL? Это авторизация и учет трафика пользователей в Интернете. Есть proxy-сервер Squid и база данных MySQL, Squid занимается кэшированием информации, а MySQL хранит информацию о пользователе (имя, пароль, скаченные URL и т.д).

Связующее звено — это Squid2MySQL 1.0.0 от Eugene V. Chernyshev для Linux. Для тех, кто использует Linux в качестве OS для серверов, лучше будет посетить сайт автора Squid2MySQL и использовать информацию с авторского сайта. Я лишь портировал squid2mysql под FreeBSD и исправил несколько ошибок, о них было сообщено автору в переписке по e-mail.

Данная статья описывает этапы и особенности установки исправленной версии squid2mysql под FreeBSD.

1) Должен быть установлен MySQL, Squid и Perl. Проверьте работоспособность данных программ: зайдите в MySQL, сделайте простой запрос к таблице mysql; проверьте Perl командой perl -v; не забудьте сделать для Squid базы командой squid -z. Проверьте DNS командой nslookup host, если с DNS будут проблемы, то не будет работать Squid.

600 Kb) и распакуйте:

3) Зайдите в появившийся каталог squid2mysql_v. Перейдите в подкаталог for_perl и установите модули для Perl: DBI-1.42.tar.gz и Msql-Mysql-modules-1.2219.tar.gz или скачайте более новые:

Аналогично установите модуль Msql-Mysql-modules-1.2219.tar.gz.

4) Прочтите файл squid2mysql_v/install_info/INSTALL. Скопируйте perl-скрипт squid2mysql и sh-скрипт sqauth в каталог с squid. Например:

Измените при копировании путь к squid, если он у вас в другом каталоге.

Perl-скрипт squid2mysql разбирает логи от Squid и заносит в базу MySQL. Sh-скрипт sqauth — авторизационный скрипт; проверяет имя, пароль и сравнивает скаченный объем с лимитом. Если все в порядке, то скрипт возвращает OK и пускает Squid в Интернет, иначе — ERR. Этот скрипт писал я (оригинальный скрипт больше и позволяет лимитировать по дням и неделям), так что по его работе претензии предъявляйте мне на e-mail.

5) Создайте командой mkfifo pipe-канал:

Рекомендую путь оставить таким, какой он есть. Автор применил красивый ход. Вместо текстового файла будет находится pipe-канал. Ничего не подозревающий Squid будет писать логи о пользователях в один конец трубы, а perl-скрипт squid2mysql считывать из другого конца трубы, разбирать и заносить в базу данных MySQL. Если MySQL будет не доступен, то информация временно будет записана в файл /var/log/squid/backup.log.

6) Скопируйте mysql.sh и squid.sh из каталога squid2mysql_v/install_info/ в каталог /usr/local/etc/rc.d/. Сделайте эти скрипты запускаемыми для автозапуска MySQL и Squid после перезагрузки FreeBSD:

Посмотрите содержимое squid.sh с комментариями:

7) Каталог site_php — это web-интерфейс для управления пользователями. Для их работы нужно установить Apache и PHP, нужно в php.ini прописать globalregister = on. Мне удобнее управляться с помощью SQL-запросов непосредственно к базе данных или с помощью графических программ, поэтому я отказался от их использования. С помощью данных скриптов вы можете дать возможность пользователям менять свой пароль и смотреть свою (и только свою) статистику. Отредактируйте include.php по своему усмотрению. Если у вас возникают вопросы по поводу работы web-интерфейса для squid2mysql, то обращайтесь на авторский сайт.

8) Скопируйте squid2mysql_v/var_arch/sqlogarch в /var/arch/squid/sqlogarch и squid2mysql_v/var_arch/sqlogupload в /var/arch/squid/sqlogupload. Данные скрипты используются в php-скриптах web-интерфейса для управления backup и restore логов.

9) Для того, чтобы Squid работал с squid2mysql, нужно в squid.conf прописать следующие параметры:

10) Запустите /usr/local/mysql/bin/mysql. Если вы достаточны сильны в MySQL, то подредактируйте файл squid2mysql.sql. Например, такая строка разрешает подсоединяться к базе под именем vasilisc и паролем 123456 c любого хоста сети:

Такая строка дает по умолчанию 30 Mb в месяц лимит:

Примените схему, которая создаст необходимые таблицы:

Могут появляться сообщения об ошибках, но это нормально, так как схема squid2mysql.sql содержит SQL-команды удаления таблицы (DROP TABLE) и создания новой (CREATE TABLE) с таким же именем. Но в первый раз таких таблиц НЕТ, поэтому появляются сообщения об ошибках.

11) Рекомендую сделать в squid.conf следущее:

То есть Squid будет работать от пользователя nobody и группы nogroup.

Не забудьте сделать nobody владельцем каталога Squid:

Обеспечьте доступ пользователю nobody в каталоги /var/log/squid/ и /var/arch/squid/.

12) Добавьте тестового пользователя в базу данных либо с помощью php-скриптов из каталога site_php, либо непосредственно с консоли MySQL:

Или подправьте файл insert_user.sql и вызовите его:

Проверьте работоспособность! Если не заработало, пройдите все этапы еще раз внимательно. Прочтите логи Squid, MySQL, FreeBSD. Просмотрите содержимое файлов, особенно include.php, sqauth, perl-скрипт squid2mysql, squid.conf. Загляните на официальные сайты продуктов, прочтите FAQ.

  • 1) Я изменил во всех скриптах имя пользователя для подключения к MySQL. Был пользователь squidroot с паролем sqroot, стал root (это не FreeBSD root, а root MySQL — это разные вещи) c пустым паролем. Это связано с тем, что портирование под FreeBSD происходило нелегко, прибавьте баги в оригинальных скриптах.
  • 2) sqauth — написанный мной авторизационный sh-скрипт. Его работоспособность на моей совести. Он пока упрощен до определения месячного лимита, хотя оригинальный скрипт проверял недельный и дневной лимиты.

3) perl-скрипт squid2mysql был мной изменен, так как там был баг с удвоением первой URL. Вы посетили сайт первый раз в этот день и размер скаченой html удваивался, потом проблема исчезала до следущего дня.

📎📎📎📎📎📎📎📎📎📎