Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Видео Unix Интернет Разное Squid2MySQL для FreeBSD 5.2 для учета трафика через squid RSS

Squid2MySQL для FreeBSD 5.2 для учета трафика через squid

Текущий рейтинг: 5 (проголосовало 3)
 Посетителей: 3940 | Просмотров: 5324 (сегодня 0)  Шрифт: - +
Squid2MySQL для FreeBSD 5.2 (08.07.2004 г)

   Что такое Squid2MySQL? Это авторизация и учет траффика пользователей в
   Интернет. Есть proxy-сервер Squid (http://www.squid-cache.org/) 
   и база данных MySQL, (http://dev.mysql.com/) 
   Squid занимается кэшированием информации, а MySQL хранит информацию о
   пользователе (имя, пароль, скаченные URL и т.д).
   Связующее звено - это Squid2MySQL (http://evc.fromru.com/squid2mysql/download.html) 1.0.0 
   от Eugene V. Chernyshev для  Linux.
   
   Для тех, кто использует Linux в качестве OS для серверов - лучше будет
   посетить сайт автора Squid2MySQL и использовать информацию с
   авторского (http://evc.fromru.com/squid2mysql/download.html) сайта. 
   Я лишь портировал squid2mysql под FreeBSD и исправил несколько ошибок, 
   о них было сообщено автору в переписке по  e-mail.
   
   Данная статья описывает этапы и особенности установки исправленной
   версии squid2mysql под FreeBSD.
   Поехали ...
   
   1) Должен быть установлен MySQL, Squid  и Perl.  Проверьте
   работоспособность данных программ: зайдите в MySQL, сделайте простой
   запрос к таблице mysql; проверьте Perl командой perl -v; не забудьте
   сделать для Squid базы командой squid -z. Проверьте DNS командой
   nslookup host, если с DNS будут проблемы, то не будет работать Squid.


   2) Скачайте архив squid2mysql (http://www.uvsw.narod.ru/project/squid2mysql_v.tar.gz) 
      под FreeBSD (~600 Kb) и распакуйте

       # tar -zxvf squid2mysql_v.tar.gz


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

       # tar -zxvf DBI-1.42.tar.gz
       # cd DBI-1.42
       # perl Makefile.PL
       # make
       # make test
       # make install

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


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

   Например,

       # cp squid2mysql /usr/local/squid/sbin/squid2mysql
       # cp sqauth /usr/local/squid/sbin/sqauth

   Измените при копировании путь к squid, если он у вас в другом каталоге.
   Perl-скрипт squid2mysql - разбирает логи от Squid и заносит в базу MySQL.
   Sh-скрипт sqauth - авторизационный скрипт проверяет имя, пароль и
   сравнивает скаченный объем с лимитом. Если все OK - то скрипт
   возвращает OK и Squid пускает в Интернет, иначе ERR. Этот скрипт писал
   я (оригинальный скрипт больше и позволяет лимитировать по дням и
   неделям), так что по его работе претензии предъявляйте мне на
   e-mail. (mailto:vasilisc@rambler.ru?Subject=squid2mysql)


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

       # mkfifo /var/log/squid/access.log

   Рекомендую путь оставить таким какой он есть.
   Автор применил красивый ход. Вместо текстового файла будет находится
   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.

       # chmod +x mysql.sh
       # chmod +x squid.sh
   Посмотрите содержимое squid.sh с комментариями

#!/bin/sh
case "$1" in  # разбираем параметр
start)
      /usr/local/squid/sbin/squid2mysql < /var/log/squid/access.log & 
                # Читаем логи Squid через pipe-канал
      /usr/local/squid/sbin/squid                # запускаем Squid
      echo "Squid starting"                      # информируем
      ;;
stop)
      /usr/local/squid/sbin/squid -k shutdown    # останавливаем Squid
      echo "Squid stoping"                       # информируем
      ;;
*)
      /usr/local/squid/sbin/squid -k reconfigure # рестартуем Squid
      echo "Squid restarting"                    # информируем
      ;;
esac
exit 0



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

   Отредактируйте include.php по своему усмотрению. Если у вас возникают
   вопросы по поводу работы web-интерфейса для squid2mysql, то
   обращайтесь на авторский (http://evc.fromru.com/squid2mysql/download.html) сайт.


   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
   прописать следующие параметры:

        # параметры авторизации
        auth_param basic program /usr/local/squid/sbin/sqauth  # путь с скрипту, 
                                                               # который возвращает OK или ERR
        auth_param basic children 5
        auth_param basic realm Squid proxy-caching web server
        auth_param basic credentialsttl 2 hours

        # ВСЕХ загоняем под proxy
        acl all src 0.0.0.0/0.0.0.0
        acl users proxy_auth REQUIRED
        http_access allow users
        http_access deny all

        # Заставляем Squid проверять не перекачал ли кто ?
        authenticate_ttl 60 seconds

   10) Запустите /usr/local/mysql/bin/mysql. Если вы достаточны сильны в
   MySQL, то подредактируйте файл squid2mysql.sql

   Например, такая строка разрешает подсоединяться к базе под именем
   vasilisc и паролем 123456 c любого хоста сети.

        GRANT ALL PRIVILEGES ON *.* TO vasilisc@"%" IDENTIFIED BY `123456`;

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

        maxmonthly bigint(15) NOT NULL default `31457280`

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

   mysql>\. /path_to/squid2mysql_v/install_info/squid2mysql.sql

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


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

   То есть Squid будет работать от пользователя nobody и группа nogroup.
   Не забудьте сделать nobody владельцем каталога Squid.
        # chown -R nobody:nogroup /usr/local/squid/

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


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

       mysql>\u squidlog
       mysql>INSERT INTO auth
             VALUES(`vasilisc`,PASSWORD(`123456`),`N`,0,0,31457280);
       mysql>INSERT INTO usernames VALUES(`vasilisc`,`Alekseenko V N`,`simple
                         user`,`OVIT`,`11-22-33`,`s@s.ru`,`2004-08-01`);
   Или подправьте файл insert_user.sql и вызовите его.
       mysql>\. /path_to/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 удваивался, потом проблема исчезала до следущего дня.

   Вот и все, надеюсь все установилось и работает вам на благо!

   Cкажите спасибо Eugene V. Chernyshev за Squid2MySQL (http://evc.fromru.com/squid2mysql/).

Автор: Алексеенко Василий aka vasilisc  •  Иcточник: http://uvsw.narod.ru/project/squid2mysql.html  •  Опубликована: 05.03.2005
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.