Скрипты для создания баз sams в mysql
На сервере под управлением FreeBSD 8.2-RELEASE архитектуры amd64, с работающей СУБД mysql-server-5.5.15, возникла необходимость установить и заставить работать sams – SQUID Account Management System. На момент написания статьи его версия sams-1.0.5. Однако версия mysql, уже установленная на сервере, отличается от указанной в требованиях к установке для sams. Это повлекло за собой некоторые трудности. О них – далее… |
Сама установка sams во FreeBSD вызвать вопросов не должна.
# cd /usr/ports/www/sams # make config
Включаете (или нет) поддержку NTLM авторизации (поддержку пользователей из AD) и указываете, нужны ли вам графические отчеты по использованию интернета вашими сотрудниками.
Далее производите сборку и установку порта. Но не делайте make clean – очистку после установки!
# make install
Нам осталось внести в rc.conf строку sams_enable=“YES”
# nano -w /etc/rc.conf ... sams_enable="YES" ...
Так же, если вы хотите использовать DELAY_POOLS, сам необходимо включить их поддержку в squid, пересобрав его порт со следующей опцией:
Вам будет так же необходимо внести в ваш конфигурационный файл httpd.conf web сервера apache22 (в моем случае) примерно вот такие строки:
#nano -w /usr/local/etc/apache22/httpd.conf ... Alias /sams/ "/usr/local/share/sams/" <Directory "/usr/local/share/sams/"> AllowOverride AuthConfig Options Indexes MultiViews Order allow,deny Allow from all </Directory>
Чтобы получить доступ к web странице sams по пути: http://web-server/sams/
, где web-server – это адрес вашего web сервера. Не забудьте про косую черту при наборе адреса в конце!
Вернемся к окончанию установки sams. Мы должны находится в каталоге его порта /usr/ports/www/sams
. Теперь, если вы хотите установить mysql базу данных для sams с названием squidctrl, вам необходимо скопировать дистрибутивный конфигурационный файл sams в ваш собственный и внести в него настройки командой make setup. Т.е. выполните следующее:
# cp /usr/local/etc/sams.conf.sample /usr/local/etc/sams.conf # make setup
Следуйте указаниям мастера по настройке sams. Вы должны будете указать расположение работающей mysql, пароль root на mysql, подтвердить желание создать пользователя sams в mysql, задать ему пароль, подтвердить желание создать базу данных squidctrl в mysql и подтвердить желание занести эти настройки в ваш конфигурационный файл sams.conf.
This master will help you to setup SAMS database and configuration Enter mysql-server hostname: [localhost]: Hostname is localhost Print MySQL root password. []: Create SAMS user for MySQL database (yes/no)? [yes]: Create MySQL SAMS user Enter NEW password for SAMS MySQL user. []: Retype password. []: Create SAMS database (yes/no)? [yes]: Insert parameters into /usr/local/etc/sams.conf? [yes]:
Вот тут-то, на этапе создания базы sams – squidctrl в вашей mysql выскочила ошибка:
ERROR 1064 (42000) at line 7: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 1 ERROR 1064 (42000) at line 13: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 12 Basic setup done. Don't forget to edit /usr/local/etc/sams.conf manually for detailed configuration
Несмотря на ошибку, в файле sams.conf появились записи с вашими установками, указанными на этапе конфигурирования. В нем вы обнаружите примерно это:
# less /usr/local/etc/sams.conf [client] SQUID_DB=squidlog #имя базы данных для записи логов squid SAMS_DB=squidctrl #имя базы данных для sams MYSQLHOSTNAME=localhost #где расположена mysql MYSQLUSER=sams #пользователь sams MYSQLPASSWORD=123456 #пароль для пользователя sams MYSQLVERSION=5.5 #версия mysql #настройки squid, укажите собственные SQUIDROOTDIR=/usr/local/etc/squid SQUIDLOGDIR=/usr/local/squid/logs SQUIDCACHEDIR=/usr/local/squid/cache SQUIDCACHEFILE=access.log SQUIDPATH=/usr/local/sbin SAMSPATH=/usr/local #я не использую squidguard #SQUIDGUARDLOGPATH=/var/log #SQUIDGUARDDBPATH=/var/db/squidGuard RECODECOMMAND=/usr/local/bin/iconv -f KOI8-R -t 866 %finp > %fout #настройки, необходимые для использования пользователей из AD LDAPSERVER=192.168.2.1 #домен-контроллер LDAPBASEDN=domain.ru #имя домена LDAPUSER=superuser #админ домена (уполномоченный пользователь) LDAPUSERPASSWD=sword #пароль superuser в домене domain.ru LDAPUSERSGROUP=Users #группа пользователей AD по-умолчанию #я не использую rejik #REJIKPATH=/usr/local/rejik SHUTDOWNCOMMAND=/sbin/shutdown -h now CACHENUM=0
Но базы данных squidctrl и squidlog в mysql не создались. Я попытался вручную запустить скрипт sams для создания этих баз, но получил ту же ошибку.
# cd /usr/local/share/sams/data # ls -Al total 26 -rw-r--r-- 1 root wheel 5652 6 сен 14:28 sams_db.sql -rw-r--r-- 1 root wheel 1330 6 сен 14:28 squid_db.sql -rwxr-xr-x 1 root wheel 17571 6 сен 14:28 upgrade_mysql_table.php # ./sams_db.sql ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 12
Как видно из ошибки (она идентична той, что получена при выполнении make setup), неправилен синтаксис команд, указанных в скриптах для работы с mysql этой версии (mysql-server-5.5.15).
Для того, чтобы эти скрипты выполнились, необходимо в них вручную поменять TYPE=MyISAM на ENGINE=MyISAM. После этого заново запустить эти скрипты и они уже отработают без ошибок. Для тех, кому лень менять, предлагаю скачать уже исправленные рабочие скрипты для создания баз в mysql, необходимых для работы sams.
После этого проверьте создание этих баз:
# mysql -u root -h localhost -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 18594 Server version: 5.5.15 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +------------------------------------------------+ | Database | +------------------------------------------------+ | information_schema | | mysql | | performance_schema | | phpmyadmin | | squidctrl | | squidlog | | test | +------------------------------------------------+ 7 rows in set (0.02 sec) mysql> quit Bye
Если все нормально, то можно запускать sams командой: /usr/local/etc/rc.d/sams start
. И проверить его работу:
# ps aux | grep sams root 24040 0,0 0,1 21260 5056 0- S пт08 1:15,75 /usr/local/bin/samsdaemon root 70235 0,0 0,0 9124 1396 1 S+ 16:34 0:00,00 grep sams
Напоминаю, чтобы при доступе к web панели sams вы не увидели ошибки вида:
Fatal error: Cannot redeclare GetHostName() in /usr/local/share/sams/src/configtray.php on line 20
выполните действия, описанные в этой статье.
Так же исправьте скрипты php в файлах, как это указано в этой статье, заменив несуществующие команды freebsd на более подходящую – top.
Да, с существующей версией sams теперь приходится много возиться. Но инструмент довольно полезный и удобный, альтернативы для себя пока еще не нашел. Разработчики что-то слишком долго работают над новой версией этого продукта. Им пришлось переписать весь код на C++. На официальном сайте выложен пока только первый релиз-кандидат второй версии SAMS 2 RC1 аж 10 ноября 2010 года… Подождем!