Обзор развертывания Jenkins на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения на сервере необходимо наличие следующих компонентов и условий:
- Операционная система на базе Ubuntu с доступом к репозиторию
apt. - Права суперпользователя (
root) для установки пакетов и управления службами. - Доступ в интернет для загрузки пакетов, ключей GPG и образов контейнеров.
- Свободные порты для работы веб-сервера и прокси-сервера.
- Наличие доменного имени для настройки SSL-сертификатов через
certbot.
Структура файлов и каталогов¶
Конфигурация и данные приложения распределены по следующим директориям:
/root/nginx— каталог для запуска контейнеров прокси-сервера и управления сертификатами./root/nginx/compose.yml— файл конфигурацииdocker composeдля запускаnginxиcertbot./data/nginx/nginx-certbot.env— файл переменных окружения для настройкиnginx-certbot./data/nginx/user_conf.d— директория с пользовательскими конфигурациями виртуальных хостов./etc/letsencrypt— точка монтирования для хранения SSL-сертификатов (через томnginx_secrets)./usr/share/keyrings/jenkins-keyring.asc— файл с ключом подписи репозиторияJenkins.
Процесс установки приложения¶
Установка основного приложения Jenkins выполняется через пакетный менеджер системы:
- Обновление индекса пакетов системы.
- Загрузка и установка GPG-ключа репозитория
Jenkinsпо адресуhttps://pkg.jenkins.io/debian-stable/jenkins.io-2026.keyв директорию/usr/share/keyrings/jenkins-keyring.asc. - Добавление репозитория
deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/в конфигурациюapt. - Установка пакета
jenkinsчерезapt. - Установка зависимостей:
fontconfigиopenjdk-21-jre.
Для развертывания прокси-сервера используется контейнеризация:
- Установка и настройка
Docker. - Создание каталога
/root/nginxс правами доступа0755для пользователяroot. - Генерация файла
compose.ymlв директории/root/nginx. - Запуск контейнеров через команду
docker compose up -dв директории/root/nginx.
Контейнеры Docker и их запуск¶
Прокси-сервер развернут в виде контейнера с использованием образа jonasal/nginx-certbot:latest. Конфигурация контейнера задана в файле /root/nginx/compose.yml.
Основные параметры контейнера nginx:
- Образ:
jonasal/nginx-certbot:latest. - Политика перезапуска:
unless-stopped. - Сеть: режим
host. - Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com.- Файл переменных:
/data/nginx/nginx-certbot.env. - Томы (Volumes):
nginx_secretsмонтируется в/etc/letsencryptдля хранения сертификатов./data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.dдля пользовательских конфигов.
Запуск контейнеров осуществляется командой:
Команда выполняется из директории /root/nginx.
Прокси серверы¶
В системе развернут прокси-сервер Nginx в контейнере, который также выполняет функции получения и обновления SSL-сертификатов через Certbot.
Настройка проксирования трафика на приложение Jenkins производится путем редактирования конфигурационного файла в директории /data/nginx/user_conf.d. В блок location / добавляется директива:
Это перенаправляет входящий трафик на локальный порт 8080, где работает служба Jenkins.
Настройки прав¶
Права доступа к файлам и директориям настроены следующим образом:
- Директория
/root/nginxимеет права0755, владелец и группа —root. - Файл
/root/nginx/compose.ymlимеет права0644, владелец и группа —root. - Файл ключа репозитория
/usr/share/keyrings/jenkins-keyring.ascимеет права0644.
Запуск, остановка и обновление¶
Управление службой Jenkins осуществляется через системный менеджер systemd:
- Включение службы в автозагрузку:
- Запуск службы:
- Проверка статуса службы:
Управление контейнерами прокси-сервера выполняется через docker compose в директории /root/nginx:
- Запуск контейнеров:
- Остановка контейнеров:
- Обновление конфигурации и перезапуск: