sudo apt update
sudo apt install git build-essential libsystemd-dev
sudo su
chmod +x ./build.sh
./build.sh https://github.com/haproxy/haproxy.git-v2.6-dev12 TARGET=generic CPU=generic ARCH=
первая часть команды (далее аргумент) после имени файла отвечает за ссылку на репозиторий
в данном примере
- https://github.com/haproxy/haproxy.git - это ссылка на репозиторий
- v2.6-dev12 - это тег\бранч\ветка на которую нужно будет переключится во время клонирования репозитория с git сервера
для корректного чтения репозитория и ветки\тега\бранча части разделяются символом -
, то есть если мы хотим собрать версию 3.3.4 (она под тегом v3.3-dev4), то url будет выглядить как https://github.com/haproxy/haproxy.git-v3.3-dev4
Аргумент TARGET
отвечает под какую ОС мы собираем пакет
поддерживаемые параметры
- linux-glibc - стандартные Linux дистрибутивы Ubuntu, Debian, RHEL, CentOS, SUSE
- linux-glibc-legacy - Older kernels (< 2.6.28)
- linux-musl - Alpine Linux, embedded
- solaris - Oracle Solaris, OpenIndiana
- freebsd - FreeBSD
- freebsd-glibc - редкое используется FreeBSD при установленом glibc
- dragonfly - нишевые BSD системы
- openbsd - Сфокусированные на безопастности BSD
- netbsd - портативные BSD
- cygwin - Windows с POSIX эмуляцией
- haiku - эксперементальные ОС
- aix51 - Legacy IBM Power systems
- aix52 - Legacy IBM Power systems
- aix72-gcc - современные AIX с GCC
- osx - macOS (Intel or Apple Silicon)
- generic - (значение по умолчанию если не переданно иное)
- custom
Аргумент CPU
задает под какой ЦП мы собираем пакет
поддерживаемые параметры
generic (значение по умолчанию если не переданно иное) - максимальная совместимость интрукций процессора, медленная в сборке
native - максимальная совместимость инструкций установленного процессора в сервер
i586 - Legacy x86 (Pentium, K6)
i686 - Older x86 servers (Pentium II–IV)
ultrasparc - Legacy SPARC servers
power8 - High-end Power Systems (IBM)
power9 - High-end Power Systems (IBM)
custom - пользовательский тюнинг сборки
a53 - ARM SoCs (Raspberry Pi, servers)
a72 - ARM SoCs (Raspberry Pi, servers)
armv81 - ARMv8.1-A
armv8-auto - Auto-detect ARMv8 features, безопасен для современных ARM64
Аргумент ARCH
здает архитектуру под которую собирается пакет. Используется только если инструкции CPU не совпадают с native
параметром. По умолчанию не задается.
Поддерживаемые параметры
32, 64, x86_64, i386, i486, i586, i686
Больше информации о параметрах сборки можно почитать в зеркале на github
- проверка существования сервиса
haproxy
в системе (то есть, если процес в системе существут сборка прерывается) - проверка зависимостей (на существование пакетов
git
,make
,gcc
) - сбор переданных параметров сборки
- клонирование репозитория
- сборка самого пакета
- конфигурация сервиса для systemd
После того как прошли все шаги у нас в системе будет сконфигурированны сервис haproxy
Проверить его статус можно через команду systemctl status haproxy
.
Данный сервис имеет конфигурацию прокси, который слушает 80
порт и перенаправляет запросы на локальный 8080
порт.
Проверить работу можно локально запустив web версию документации python командой python3 -m pydoc -p 8080
Далее открыть браузер с адресом хоста или именем хоста (например http://client01.example.com/)
Узнать адрес хоста\сервера
ip a | grep inet
Узнать имя хоста\сервера
hostname -f
Пример отобраемой страницы
- базовый конфиг haproxy (файл haproxy.cfg) доступен по пути
/etc/haproxy/haproxy.cfg
- конфигурация самого сервиса для systemd находится по пути
/lib/systemd/system/haproxy.service
- исполняемый файл находится в дирректории
/usr/sbin/haproxy
sudo /usr/sbin/haproxy -c -f /etc/haproxy/haproxy.cfg
/bin/ Essential command binaries that need to be available in single user mode;
for all users, e.g., cat, ls, cp
/sbin/ Essential system binaries, e.g., init, ip, mount.
/usr/bin/ Non-essential command binaries (not needed in single user mode);
for all users
/usr/sbin/ Non-essential system binaries, e.g. daemons for various network-services.
/usr/local/ Tertiary hierarchy for local data, specific to this host.
Typically has further subdirectories, e.g., bin/, lib/, share/