Перейти к содержанию

Обзор развертывания 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 выполняется через пакетный менеджер системы:

  1. Обновление индекса пакетов системы.
  2. Загрузка и установка GPG-ключа репозитория Jenkins по адресу https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key в директорию /usr/share/keyrings/jenkins-keyring.asc.
  3. Добавление репозитория deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ в конфигурацию apt.
  4. Установка пакета jenkins через apt.
  5. Установка зависимостей: fontconfig и openjdk-21-jre.

Для развертывания прокси-сервера используется контейнеризация:

  1. Установка и настройка Docker.
  2. Создание каталога /root/nginx с правами доступа 0755 для пользователя root.
  3. Генерация файла compose.yml в директории /root/nginx.
  4. Запуск контейнеров через команду 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 для пользовательских конфигов.

Запуск контейнеров осуществляется командой:

docker compose up -d

Команда выполняется из директории /root/nginx.

Прокси серверы

В системе развернут прокси-сервер Nginx в контейнере, который также выполняет функции получения и обновления SSL-сертификатов через Certbot.

Настройка проксирования трафика на приложение Jenkins производится путем редактирования конфигурационного файла в директории /data/nginx/user_conf.d. В блок location / добавляется директива:

proxy_pass http://127.0.0.1:8080;

Это перенаправляет входящий трафик на локальный порт 8080, где работает служба Jenkins.

Настройки прав

Права доступа к файлам и директориям настроены следующим образом:

  • Директория /root/nginx имеет права 0755, владелец и группа — root.
  • Файл /root/nginx/compose.yml имеет права 0644, владелец и группа — root.
  • Файл ключа репозитория /usr/share/keyrings/jenkins-keyring.asc имеет права 0644.

Запуск, остановка и обновление

Управление службой Jenkins осуществляется через системный менеджер systemd:

  • Включение службы в автозагрузку:
    systemctl enable jenkins
    
  • Запуск службы:
    systemctl start jenkins
    
  • Проверка статуса службы:
    systemctl status jenkins
    

Управление контейнерами прокси-сервера выполняется через docker compose в директории /root/nginx:

  • Запуск контейнеров:
    docker compose up -d
    
  • Остановка контейнеров:
    docker compose down
    
  • Обновление конфигурации и перезапуск:
    docker compose up -d
    
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×