Регулярное обновление серверного ПО необходимо для получения новых функций и устранения уязвимостей. В среде Linux этот процесс часто требует компиляции из исходных кодов. В статье рассматривается практический опыт обновления системы управления инфраструктурой Netbox.
Netbox – веб-приложение с открытым исходным кодом для управления IP-адресами (IPAM) и инфраструктурой ЦОД (DCIM). Система написана на Python с использованием Django и требует PostgreSQL и Redis.
При работе в корпоративной сети доступ к интернету часто осуществляется через прокси-сервер. Для загрузки файлов через терминал необходимо экспортировать переменную окружения https_proxy:
export https_proxy=http://адрес_прокси:порт
После выполнения этой команды все последующие запросы через HTTPS будут направляться через указанный прокси-сервер.
Система Netbox требует определенной версии Python. Если в репозиториях дистрибутива Linux отсутствует нужная версия, её можно загрузить и скомпилировать из исходных кодов. Для загрузки используется команда wget — это утилита командной строки для скачивания файлов из интернета. [2]:
wget https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tgz
Загруженный архив имеет расширение .tgz, что означает сжатый tar-архив. Для распаковки используется команда tar: tar -xvf Python-3.12.9.tgz
Важным инструментом является команда make, используемая для сборки больших программ, исходный текст которых состоит из множества файлов. Процесс включает три основных этапа:
Конфигурация: ./configure проверяет наличие необходимых библиотек и генерирует Makefile – файл, содержащий инструкции для сборки.
Сборка (компиляция): make -j$(nproc) выполняет компиляцию с использованием всех ядер процессора.
Установка:
- make install копирует файлы в системные директории.
- Загрузка новой версии Netbox выполняется непосредственно на сервер с помощью wget: wget https://github.com/netbox community/netbox/archive/refs/tags/vX.Y.Z.tar.gz
- После загрузки архив распаковывается с использованием tar.
- Обновление выполняется с помощью команды:
- Sudo LD_LIBRARY_PATH=/путь/к/библиотекам/бд PYTHON=/путь/к/python3.12 ./upgrade.sh
В этой команде использовались: sudo – выполняет команду с правами суперпользователя. Суперпользователь (superuser или root) может читать и писать все файлы в системе, что необходимо для изменения системных конфигураций, LD_LIBRARY_PATH – для указания библиотек базы данных Tantor, PYTHON – для указания пути к требуемой версии Python.
Одним из вариантов привязки файлов является символическая ссылка (symbolic link): ln -s /opt/netbox-X.Y.Z/ /opt/netbox
Она позволяет нескольким именам ссылаться на одни и те же данные. Это делает процесс обновления более безопасным и удобным.
После обновления необходимо перезапустить сервис: sudo systemctl restart netbox
Фоновые процессы называются демонами. Утилита systemctl позволяет управлять этими демонами. Для проверки состояния сервиса используется команда: sudo systemctl status netbox. В ответ отображается информация о сервисе.
Процесс обновления серверного ПО в среде Linux требует детального планирования и соблюдения технологической дисциплины. На примере Netbox показано, что грамотно организованная процедура позволяет минимизировать риски сбоев и обеспечить бесперебойную работу критически важных сервисов. Полученный опыт может быть полезен системным администраторам и специалистам, обслуживающим серверную инфраструктуру.
Список литературы
- Официальная документация Netbox. – URL: https://docs.netbox.dev/.
- Официальная документация GNU Wget. – URL: https://www.gnu.org/software/wget/manual/.
- Таненбаум Э., Бос Х. Современные операционные системы. – 4-е изд. – СПб.: Питер, 2024. – 1120 с.
