Установка и настройка SAMS2 на Ubuntu
В данной статье будет рассмотрен вопрос развертывания только системы SAMS для управления прокси-сервером SQUID. Для установки последнего читайте Установка и настройка Squid на Ubuntu.
К сожалению, SAMS2 слабо поддерживается и мне не удалось установить его на свежие версии дистрибутивов Linux. В данном примере используется Ubuntu 16.04.
Также, нас ждет проблема из-за версии PHP — SAMS2 разработан с использованием версии до 7, а поддержки php5.6 для Ubuntu 16 уже нет. Мы внесем небольшое изменение в код SAMS2, чтобы он работал с PHP 7.
Установка веб-сервера
Apache
PHP
MariaDB
Установка SAMS
Сборка из исходников
Настройка веб-сервера
Веб-установка
Настройка Ubuntu
Настройка сервиса sams2
Настройка Squid
Решение возможных проблем
Установка веб-сервера
SAMS является веб-приложением и для своей работы требует сам веб-сервер, интерпретатор PHP и СУБД. Мы установим связку Apache + PHP + MariaDB.
Apache
Для установки apache в Ubuntu вводим команду:
apt install apache2
Необходимо убедиться, что в системе не запущены другие веб-серверы, слушающие на портах 80 и 443. Проверить это можно командой
ss -tunlp | grep -e ":80\|:443"
После установки веб-сервера, разрешаем порты в брандмауэре:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Для сохранения правил используем iptables-persistent:
apt-get install iptables-persistent
netfilter-persistent save
И разрешаем автозапуск веб-сервера:
systemctl enable apache2
Открываем веб-браузер и переходим по адресу http://<IP-адрес сервера>/ — должна открыться тестовая страница Apache:
PHP
Устанавливаем php и необходимые для работы sams компоненты:
apt install php php-mysql php-mbstring php-dev php-xml php-gd libapache2-mod-php
Открываем конфигурационный файл apache:
vi /etc/apache2/mods-available/dir.conf
Находим модуль mod_dir.c и приводим его к виду:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
* мы добавляем index.php перед index.html
Разрешаем модуль rewrite:
a2enmod rewrite
Создаем php-скрипт:
vi /var/www/html/index.php
<?php phpinfo(); ?>
И перезагружаем apache:
systemctl restart apache2
Открываем веб-браузер и переходим по адресу http://<IP-адрес сервера>/ — должна открыться страница с подробной информацией о PHP:
MariaDB
Установку сервера mariadb выполняем командой:
apt install mariadb-server
Разрешаем автозапуск СУБД:
systemctl enable mysql
Задаем пароль пользователя root mysql:
mysqladmin -u root password
Установка SAMS
Установку панели управления выполняем в два этапа — сборка из исходников и веб-установка.
Сборка из исходников
Устанавливаем пакеты, которые нужны для сборки sams:
apt install unzip libpcre3 libpcre3-dev libmysqlclient-dev
Скачиваем исходник sams:
wget --no-check-certificate https://github.com/PavelVinogradov/sams2/archive/master.zip
Распаковываем архив:
unzip master.zip
Переходим в распакованный каталог:
cd sams2-master
Компилируем исходник:
make -f Makefile.cvs
Конфигурируем его:
sh ./configure
Мы получим что-то на подобие:
Use MySQL API: yes
Use PostgreSQL API: no
Use unixODBC API: no
Use LDAP API: no
Using pcre: pcre
Use dynamic plugin: yes
* где для нас важна строка Use MySQL API, обозначающая поддержку MySQL — она должна иметь значение yes.
Создаем каталог для копирования данных:
mkdir -p /usr/local/share/sams2/data
Собираем исходник и инсталлируем sams:
make
В процессе сборки у меня возникла ошибка ../libtool: line 7486: cd: no: No such file or directory. Решение описано ниже.
make install
Настройка веб-сервера
Создаем конфигурационный файл в apache:
vi /etc/apache2/sites-enabled/sams.conf
Alias /sams /usr/local/share/sams2
<Directory /usr/local/share/sams2/>
AddDefaultCharset UTF-8
<RequireAny>
Require ip 192.168.0.0/16
</RequireAny>
</Directory>
* в данном примере мы создаем алиас — при обращении к странице /sams веб-сервер будет искать скрипты в каталоге /usr/local/share/sams2. Доступ к порталу будет разрешен из подсети 192.168.0.0/16.
Перезагружаем apache:
systemctl restart apache2
Входим в оболочку mysql:
mysql -uroot -p
Создаем базу данных и предоставляем к ней доступ новому пользователю:
> CREATE DATABASE sams2db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON sams2db.* TO sams2user@localhost IDENTIFIED BY 'sams2password';
> \q
Веб-установка
Открываем конфигурационный файл sams:
vi /usr/local/etc/sams2.conf
Редактируем следующие строки:
...
DB_ENGINE=MySQLi
...
DB_USER=sams2user
...
DB_PASSWORD=sams2password
...
* где
- DB_USER — имя mysql-пользователя;
- DB_PASSWORD — пароль mysql-пользователя.
- DB_ENGINE — драйвер для подключения к базе данных. Его нужно временно изменить, чтобы программа дала себя установить.
Открываем веб-браузер и переходим по адресу http://<IP-адрес сервера>/sams/setup.php — откроется страница установки SAMS2:
... кликаем по Run setup program >>.
В следующем окне выбираем язык и кодировку:
... нажимаем Next >>.
Система проведет начальную проверку:
Директиву safe_mode можно проигнорировать — кликаем по Далее >>.
Заполняем поля пользователя mysql, снимаем галочку Создать пользователя SAMS для доступа к базе данных:
* пользователь и пароль — те, которые мы создали в оболочке mysql (sams2user, sams2password).
На последней странице завершаем установку:
После завершения установки авторизовываемся в системе. Логин и пароль по умолчанию — admin / qwerty.
Настройка Ubuntu
Установка на этом не завершена. Для корректной работы консоли управления необходимо внести настройки в систему и Squid.
Настройка демона
Для работы службы sams2 копируем файл ее запуска:
cp debian/init.d /etc/init.d/sams2
* подразумевается, что мы все еще находимся в каталоге sams2-master, распакованного исходника.
Открываем на редактирование данный файл:
vi /etc/init.d/sams2
Меняем:
[ -f __CONFDIR/sams2.conf ] || exit 0
...
DAEMON=__PREFIX/sams2daemon
... на:
[ -f /usr/local/etc/sams2.conf ] || exit 0
...
DAEMON=/usr/local/bin/sams2daemon
* в данном случае мы заменили __CONFDIR на /usr/local/etc и __PREFIX на /usr/local/bin.
Разрешаем автозапуск демона sams2 и запускаем его:
systemctl enable sams2
systemctl start sams2
Настройка Squid
При попытке внести какие либо изменения в консоли управления SAMS мы не увидим никаких изменений в конфигурационном файле SQUID. Проблема в том, что sams ориентируется по специальным комментариям, которых нет в конфиге последнего под Ubuntu.
Открываем конфигурационный файл squid.conf:
vi /etc/squid/squid.conf
... и в самый верх добавим:
# TAG: acl
# TAG: url_rewrite_access
# TAG: url_rewrite_program
# TAG: url_rewrite_children
# TAG: delay_pools
# TAG: delay_class
# TAG: delay_access
# TAG: delay_parameters
# TAG: http_access
# TAG: http_access2
# TAG: icp_access
* важно, чтобы между метками были разделяющие пустые строки.
Теперь можно заходить на sams и настраивать SQUID.
Возможные проблемы
При выполнении команды make при сборке sams2, мы получаем ошибку:
../libtool: line 7486: cd: no: No such file or directory
* номер линии 7486 может отличаться.
Причина: неверная интерпретация переменной absdir в скрипте сборки.
Решение: для решения можно жестко указать значение для переменной absdir.
Открываем файл:
vi libtool +7486
* где 7486 — номер строки, которая показана в тексте ошибки.
Строку:
absdir=`cd "$dir" && pwd`
... меняем на:
absdir="/usr/lib"
Снова запускаем make.