Компиляция и установка PgBouncer
Сборка
PgBouncer можно собрать как средствами системы сборки на основе Autoconf, так и более новой, пока экспериментальной системой сборки Meson . Для рабочих сборок и пакетирования сейчас рекомендуется Autoconf. Ожидается, что в одном из будущих выпусков сборка Meson станет стандартной, а сборка Autoconf будет удалена, поэтому очень приветствуются её тестирование и сообщения о любых проблемах. Для компиляции требуется несколько компонентов:
- Libevent 2.0+
- pkg-config
- OpenSSL 1.0.1+ для поддержки TLS
- компилятор C с поддержкой C11
- (необязательно) c-ares как альтернатива evdns из Libevent
- (необязательно) библиотеки LDAP
- (необязательно) библиотеки PAM
Для сборки Meson дополнительно требуются Meson 0.58+ и Ninja ; для сборки Autoconf — GNU Make 3.81+.
Когда зависимости установлены, выполните сборку средствами Autoconf:
$ ./configure --prefix=/usr/local
$ make
$ make install
или средствами Meson (экспериментально):
$ meson setup build --prefix=/usr/local
$ meson compile -C build
$ meson install -C build
Если сборка выполняется из Git или под Windows, см. отдельные инструкции по сборке ниже.
Поддержка поиска DNS
PgBouncer разрешает имена узлов при установке соединения, а не только один раз при загрузке конфигурации. Для этого нужна асинхронная реализация DNS. В таблице перечислены поддерживаемые бэкенды в порядке их проверки:
| Бэкенд | Параллельно | EDNS0 (1) | /etc/hosts | Поиск SOA (2) | Примечание |
|---|---|---|---|---|---|
| c-ares | да | да | да | да | ошибки IPv6+CNAME в <=1.10 |
| evdns, libevent 2.x | да | нет | да | нет | не проверяет обновления /etc/hosts |
| getaddrinfo_a, glibc 2.9+ | да | да (3) | да | нет | недоступен вне glibc |
| getaddrinfo, libc | нет | да (3) | да | нет | требует pthreads |
- EDNS0 необходим, если с одним именем узла связано более 8 адресов.
- Поиск SOA необходим для повторной проверки имён узлов при изменении серийного номера зоны.
- Чтобы включить EDNS0, добавьте
options edns0в/etc/resolv.conf.
c-ares — наиболее функциональная реализация, рекомендуемая для большинства вариантов использования и сборки двоичных пакетов при наличии достаточно новой версии. Встроенный в Libevent evdns также подходит во многих случаях с учётом указанных ограничений. Остальные бэкенды в основном устарели и теперь почти не тестируются.
По умолчанию при обнаружении c-ares используется именно он. Его использование
можно принудительно включить с помощью -Dcares=enabled (configure:
--with-cares) или отключить с помощью -Dcares=disabled (configure:
--without-cares). Если c-ares не используется — не найден или отключён, —
используется Libevent. Укажите -Devdns=false (configure: --disable-evdns),
чтобы отключить использование evdns из Libevent и перейти к реализации на
основе libc.
Необязательные функции
Возможности PAM, LDAP и systemd определяются системой meson автоматически: их
параметры -Dpam, -Dldap и -Dsystemd по умолчанию имеют значение auto,
поэтому каждая из них включается в сборку при наличии соответствующих библиотек.
Принудительно включить возможность можно с помощью -D<feature>=enabled, а
отключить — с помощью -D<feature>=disabled. Сборка Autoconf не определяет эти
возможности автоматически; включайте их явно с помощью --with-pam,
--with-ldap или --with-systemd.
Аутентификация PAM
После компиляции с поддержкой PAM становится доступен новый глобальный тип
аутентификации pam для проверки пользователей через PAM.
Аутентификация LDAP
После компиляции с поддержкой LDAP становится доступен новый глобальный тип
аутентификации ldap для проверки пользователей через LDAP.
Интеграция с systemd
Поддержка systemd позволяет использовать Type=notify (или
Type=notify-reload, если применяется systemd 253 или новее), а также
активацию через сокеты. Примеры приведены в etc/pgbouncer.service и
etc/pgbouncer.socket.
Сборка из Git
При сборке Autoconf перед запуском configure необходимо создать файлы
заголовков и конфигурации:
$ git clone --branch pgbouncer_1_26_0 https://github.com/pgbouncer/pgbouncer.git
$ cd pgbouncer
$ ./autogen.sh
$ ./configure
$ make
$ make install
По умолчанию все файлы устанавливаются в /usr/local. Команде configure
можно передать один или несколько параметров командной строки. Выполните
./configure --help, чтобы получить список доступных параметров и переменных
окружения, позволяющих настроить конфигурацию.
Дополнительно для сборки Autoconf из Git требуются пакеты: autoconf, automake, libtool, pandoc
Сборка Meson позволяет собирать прямо из копии репозитория; для сборки страниц руководства требуется pandoc:
$ meson setup build
$ meson compile -C build
$ meson install -C build
Выполните meson configure build, чтобы получить список доступных параметров
-D.
Тестирование
Порядок запуска тестов приведён в файле README.md каталога тестов
.
Сборка под Windows
Единственная поддерживаемая среда сборки в Windows — MinGW. Cygwin и Visual $ANYTHING не поддерживаются.
Для сборки в MinGW выполните обычную сборку Autoconf:
$ ./configure
$ make
или экспериментальную сборку Meson:
$ meson setup build
$ meson compile -C build
При кросс-компиляции из Unix с Autoconf:
$ ./configure --host=i586-mingw32msvc
Параметр сборки с LDAP в настоящее время не поддерживается в Windows.
Запуск в Windows
Запуск из командной строки выполняется обычным образом, но ключи -d
(демонизация) и -u (смена пользователя) не работают.
Чтобы запустить PgBouncer как службу Windows, задайте имя службы параметром
service_name, затем выполните:
$ pgbouncer -regservice config.ini
Чтобы удалить службу:
$ pgbouncer -unregservice config.ini
Чтобы использовать журнал событий Windows, задайте в файле конфигурации
syslog = 1. Перед этим необходимо зарегистрировать pgbevent.dll:
$ regsvr32 pgbevent.dll
Чтобы отменить регистрацию:
$ regsvr32 /u pgbevent.dll