Установка GreenSQL на FreeBSD 8

Пришлось немного научиться извращениям и эксгумации. Не буду сильно распространяться о том, что такое GreenSQL. Если кратко, то это прокси, которая обрабатывает запросы к MySQL и пытается определить, на сколько они похожи на вредоносные и отбрасывает их. Как это выглядит на практике и востребовано ли — не в курсе. Кстати, обратите внимание, что это ПО — платное. Бесплатно распространяется только немного урезанная версия и ограниченная одной прокси. Основная масса всех руководств описывают установку на Linux. Но нам интересна установка именно на FreeBSD

Приступим.

Для своей работы GreenSQL требует следующее программное обеспечение:

  • bison
  • libevent
  • pcre
  • mysql51-client

Для установки воспользуйтесь командой pkg_add -vr <ПО>.

Следующим шагом будет скачивание исходных текстов. Самое свежее находится на официальном svn.

svn co https://greensql.svn.sourceforge.net/svnroot/greensql greensql


Возможно, потребуется установка клиента для скачивания — pkg_add -vr subversion

После того, как исходный код скачался, приступим к внесению изменений в файлы. На момент написания статьи актуальная версия на svn — 688.

Все действия будут происходить из поддиректории greensql.new/trunk/greensql-fw/

 


1. В файле src/lib/Makefile заменяем:

CXXFLAGS:=-g -Wall -I/usr/local/include/

MYSQL_INC:=-I/usr/include/mysql/ -I/usr/local/include/mysql/

MYSQL_LIBS:=-L/usr/lib64/mysql -L/usr/local/lib/mysql -L/usr/lib/mysql -lmysqlclient

PGSQL_INC:=-I/usr/include/postgresql -I/usr/include/pgsql/

PGSQL_LIBS:=-lpq

на
CXXFLAGS:=-g -Wall -I/usr/local/include/
MYSQL_INC:=-I/usr/local/include/mysql/ -I/usr/local/include/mysql/
MYSQL_LIBS:=-L/usr/lib64/mysql -L/usr/local/lib/mysql -L/usr/local/lib/mysql -lmysqlclient
PGSQL_INC:=-I/usr/local/include/postgresql -I/usr/include/pgsql/
PGSQL_LIBS:=-L/usr/local/lib -lpq
2. В файле build.sh изменяем следующее:
build_bsd()
{
  make clean >/dev/null 2>&1
  make
  cd freebsd
  VIRTDIR=./usr/local
  CURDIR=`pwd`
  rm -rf $VIRTDIR
  mkdir -p $VIRTDIR/sbin
  cp ../greensql-fw                $VIRTDIR/sbin/
  cp ../scripts/greensql-create-db.sh $VIRTDIR/sbin/
  mkdir -p $VIRTDIR/etc/greensql
  cp ../conf/*.conf                $VIRTDIR/etc/greensql/
  mkdir -p $VIRTDIR/etc/rc.d
  cp greensql-fw.sh                $VIRTDIR/etc/rc.d/greensql-fw
  mkdir -p $VIRTDIR/share/doc/greensql-fw
  cp ../docs/greensql-mysql-db.txt $VIRTDIR/share/doc/greensql-fw/
  cp ../docs/tautology.txt         $VIRTDIR/share/doc/greensql-fw/
  cp ../install.txt                $VIRTDIR/share/doc/greensql-fw/
  cp ../license.txt                $VIRTDIR/share/doc/greensql-fw/
#  mkdir -p $VIRTDIR/www/greensql-fw/
#  cp -R ../../greensql-console/* $VIRTDIR/www/greensql-fw/
  pkg_create -v -d pkg-descr -f pkg-plist -i pkg-install -S $CURDIR -p /usr/local greensql-fw.tbz
  rm -rf ./usr
  mv greensql-fw.tbz ../../
  cd ../../
  echo
  echo «Package created in ../ directory !!!»
  echo «Package file name is ../greensql-fw.tbz»
  exit
}
на это:
build_bsd()
{
  gmake clean >/dev/null 2>&1
  gmake
  cd freebsd
  VIRTDIR=./usr/local
  CURDIR=`pwd`
  rm -rf $VIRTDIR
  mkdir -p $VIRTDIR/sbin
  mkdir -p $VIRTDIR/lib
  cp ../src/lib/libgsql-mysql.so.1 $VIRTDIR/lib/
  cp ../src/lib/libgsql-pgsql.so.1 $VIRTDIR/lib/
  cp ../greensql-fw                $VIRTDIR/sbin/
  cp ../scripts/greensql-create-db.sh $VIRTDIR/sbin/
  mkdir -p $VIRTDIR/etc/greensql
  cp ../conf/*.conf                $VIRTDIR/etc/greensql/
  mkdir -p $VIRTDIR/etc/rc.d
  cp greensql-fw.sh                $VIRTDIR/etc/rc.d/greensql-fw
  mkdir -p $VIRTDIR/share/doc/greensql-fw
  cp ../docs/greensql-mysql-db.txt $VIRTDIR/share/doc/greensql-fw/
  cp ../docs/tautology.txt         $VIRTDIR/share/doc/greensql-fw/
  cp ../install.txt                $VIRTDIR/share/doc/greensql-fw/
  cp ../license.txt                $VIRTDIR/share/doc/greensql-fw/
  mkdir -p $VIRTDIR/www/greensql-fw/
  cp -R ../../greensql-console/* $VIRTDIR/www/greensql-fw/
  pkg_create -v -c -comment -d pkg-descr -f pkg-plist -i pkg-install -S $CURDIR -p /usr/local greensql-fw.tbz
  rm -rf ./usr
  mv greensql-fw.tbz ../../
  cd ../../
  echo
  echo «Package created in ../ directory !!!»
  echo «Package file name is ../greensql-fw.tbz»
  exit
}
3. В файле src/Makefile в строке LIBS:=-L/usr/local/lib -L/usr/lib -L/usr/lib64 -lpcre -levent -ldl удаляем «-ldl«
4. Приводим файл scripts/greensql-create-db.sh к виду FreeBSD — сводится к замене путей «/usr/share/» и «/etc/» на «/usr/local/share/» и «/usr/local/etc/» соответственно.

5. Файл freebsd/pkg-plist редактируем следующим образом:

перед строкой

@dirrm etc/greensql

добавляем:

 

lib/libgsql-mysql.so.1

lib/libgsql-pgsql.so.1

После чего запускаем сборку пакета:
  • sh -x build.sh

 

Если все прошло успешно (иначе — пишите в комментарии, попробуем разобраться вместе. Где, что и как пропустил я, или вы =) то у вас появится файл greensql-fw.tbz в директории greensql/trunk.

Произведем установку: pkg_add greensql-fw.tbz

После окончания будет выведено сообщение:

 

Added group «greensql».

Added user «greensql».

Enabling log rotation for /var/log/greensql.log

 

GreenSQL database firewall is almost installed.

The last step is to configure database.

Just run the following script:

/usr/local/sbin/greensql-create-db.sh

 

 

Оно говорит о следующем: Создана группа и пользователь greensql, файлу /var/log/greensql.log требуется включить ротацию (на свое усмотрение). И самое интересное — для создания базы данных следует запустить скрипт /usr/local/sbin/greensql-create-db.sh

В скрипте все сводится к тому, что в интерактивном режиме выводятся вопросы, на которые следует адекватно ответить. После чего база будет создана.

В конфигурационном файле Apache добавляем:

 

Alias /greensql  /usr/local/www/greensql-fw/

<Directory /usr/local/www/greensq-fwl>

        AllowOverride All

        RemoveHandler .php

        AddType application/x-httpd-php .php

        php_admin_value open_basedir /usr/local/www/greensql-fw:/usr/local/etc/greensql:/tmp:.:..:./:../

        php_admin_value upload_tmp_dir /tmp

        php_admin_value include_path /usr/local/etc/greensql:.:..

        php_admin_value session.save_path /tmp

        php_admin_value safe_mode off

        DirectoryIndex index.php

        Order allow,deny

        Allow from all

</Directory>

И перезапускаем его:
  • /usr/local/etc/rc.d/apache22 restart

 

После чего выполняем команду chmod 0777 /usr/local/www/greensql-fw/templates_c и заходим по адресу http://IP/greensql/ с указанными при запуске скрипта /usr/local/sbin/greensql-create-db.sh авторизационными данными.

 

Вот и все.

Если возникнут вопросы или затруднения в процессе установки — всегда к вашим услугам в комментариях или электронной почте.

 

Благодарности за помощь уходят в сторону reonaydo.

Другие публикации по теме:

zabbix «вопросики» в админке... Я особо не смотрел систему мониторинга Zabbix, но периодически встречаюсь с ней. В админке после переключения на русский язык в поле "История:" (...
ISPmanager, автоподдомены, доступ по IP, 404 ошибк... Если настроить для домена автоподдомены и в ISPmanager -> Настройка сервера -> Список IP-адресов указать этот домен по умолчанию, то Apache выда...
Продлить жизнь любимому старому FreeBSD 6. Установ... Случилось страшное. Поддержка и разработка дистрибутива FreeBSD 6.x подошла к концу и на официальном сайте доступны пакеты только современных версий.Н...
Узнать пароль от root mysql в ISPmanager5... В новой ветке панели управления ISPmanager5 от компании ИСПсистем, все настройки хранятся в базе данных sqlite3.Для того, чтобы узнать root-пароль...

Поделиться информацией с друзьями!

Чтобы не пропустить обновления, подпишись на RSS или почтовую рассылку (свой выбор сделали уже 128 человек!)

Один комментарий к «Установка GreenSQL на FreeBSD 8»

  1. Зачем ты пропагандируешь неправоверный вэй pkg_add? юзать надо порты!

    И да — у тебя, по умолчанию капча не показывается, приходится тыкать отправить ,потом вводить капчу, потом — опять отправить

Оставить комментарий