Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Jenkins на Ubuntu Server.

Jenkins — это программная система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 18.04 LTS.

Подробно о том, как установить Ubuntu Server 18.04 LTS, вы можете прочитать в моем руководстве «Установка Ubuntu Server 18.04 LTS».

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt-get install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY — свободно распространяемым клиентом для различных протоколов удаленного доступа, включая SSH, Telnet, rlogin.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:

  • 80 — для получения бесплатного криптографического сертификата через центр сертификации Let’s Encrypt.
  • 443 — для доступа к веб-интерфейсу Jenkins.
  • 8080 — для доступа к веб-интерфейсу Jenkins.

Подключаемся к серверу, на который планируется установить Jenkins.

В данном руководстве рассматривается получение бесплатного криптографического сертификата через центр сертификации Let’s Encrypt. Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.

Добавим репозиторий Certbot с помощью команды:

sudo add-apt-repository ppa:certbot/certbot

Нажимаем на кнопку «Enter», чтобы подтвердить добавление нового репозитория.

Теперь установим пакеты, необходимые для работы Jenkins, с помощью команды:

sudo apt-get install -y apache2 openjdk-11-jdk certbot python-certbot-apache

Обратите внимание, в данном руководстве в качестве веб-сервера будет использоваться Apache.

Обратите внимание, проверить поддерживаемые версии Java вы можете перейдя по ссылке: https://jenkins.io/doc/administration/requirements/java/

Многие программы, написанные с использованием Java, используют переменную среды «JAVA_HOME» для определения места установки Java. Поэтому необходимо определить эту переменную и присвоить ей значение, содержащее путь к месту установки Java.

Определим путь к месту установки Java с помощью команды:

sudo update-alternatives --config java

В данном примере путь к месту установки Java выглядит так:

/usr/lib/jvm/java-11-openjdk-amd64/bin/

Для того чтобы определить переменную среды и присвоить ей значение, нужно внести изменения в файл «environment», открыв его в текстовом редакторе с помощью команды:

sudo vim /etc/environment

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, затем в конце файла определяем новую переменную «JAVA_HOME» и присваиваем ей значение, содержащее путь к месту установки Java, полученное ранее.

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/"

Обратите внимание, путь к месту установки Java нужно указать до папки «bin» включительно.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

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

source /etc/environment

Теперь убедимся, что переменная среды имеет корректное значение, с помощью команды:

echo $JAVA_HOME

Судя по полученному сообщению, переменная среды имеет корректное значение.

Настроим Apache для последующей работы с панелью управления Jenkins.

Включаем модуль веб-сервера Apache под названием «headers» с помощью команды:

sudo a2enmod headers

Обратите внимание, модуль «headers» можно использовать для добавления более специфических параметров «Cache-Control».

Включаем модуль веб-сервера Apache под названием «proxy_http» с помощью команды:

sudo a2enmod proxy_http

Обратите внимание, модуль «proxy_http» выполняет функции прокси-сервера для протоколов HTTP и HTTPS.

Включаем модуль веб-сервера Apache под названием «rewrite» с помощью команды:

sudo a2enmod rewrite

Обратите внимание, модуль «rewrite» является одним из самых часто используемых модулей веб-сервера Apache и предоставляет гибкий и мощный способ манипулирования URL-адресами.

Теперь нужно создать два файла виртуальных хостов (в Nginx называется блок), с которыми в дальнейшем будет работать Jenkins.

Два файла виртуальных хостов потребуются для обеспечения доступа к Jenkins по HTTPS, а также для реализации возможности использования Jenkins по адресу https://jenkins.heyvaldemar.net, без указания порта 8080 в адресной строке браузера.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Создадим первый файл виртуального хоста, воспользовавшись текстовым редактором, с помощью команды:

sudo vim /etc/apache2/sites-available/jenkins.heyvaldemar.net.conf

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию для работы веб-сервера:

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Создадим второй файл виртуального хоста, воспользовавшись текстовым редактором, с помощью команды:

sudo vim /etc/apache2/sites-available/jenkins.heyvaldemar.net-ssl.conf

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию для работы веб-сервера:

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Активируем первый виртуальный хост с помощью команды:

sudo a2ensite jenkins.heyvaldemar.net.conf

Активируем второй виртуальный хост с помощью команды:

sudo a2ensite jenkins.heyvaldemar.net-ssl.conf

Деактивируем виртуальный хост, созданный по умолчанию, с помощью команды:

sudo a2dissite 000-default.conf

Убедимся, что в синтаксисе нового конфигурационного файла Apache нет ошибок, с помощью команды:

sudo apache2ctl configtest

Перезапустим Apache, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart apache2

Проверим, что Apache успешно запустился, с помощью команды:

sudo systemctl status apache2

Теперь, чтобы повысить уровень безопасности веб-сервера, необходимо получить криптографический сертификат для домена или субдомена, по которому панель управления Jenkins будет доступна из сети Интернет.

Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать центр сертификации Let’s Encrypt, а также программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Запросим криптографический сертификат с помощью команды:

sudo certbot --apache -d jenkins.heyvaldemar.net

Далее указываем адрес электронной почты, на который Let’s Encrypt будет присылать уведомления об истечении срока криптографического сертификата, и нажимаем на кнопку «Enter».

На следующем этапе необходимо прочитать и принять условия использования предоставляемых сервисов.

Нажимаем на кнопку «a», затем «Enter», если вы согласны с условиями использования предоставляемых сервисов.

На следующем этапе необходимо выбрать: хотите ли вы поделиться указанным ранее адресом электронной почты с Electronic Frontier Foundation для получения информационных рассылок.

Нажимаем на кнопку «n», затем «Enter».

На следующем этапе необходимо выбрать: хотите ли вы, чтобы в конфигурационный файл Apache были автоматически добавлены параметры для автоматического перенаправления HTTP-трафика на HTTPS.

Нажимаем на кнопку «2», затем «Enter».

Обратите внимание, криптографические сертификаты, полученные через центр сертификации Let’s Encrypt, действительны в течение девяноста дней. Certbot автоматически добавляет скрипт для обновления сертификата в планировщик задач, и скрипт запускается два раза в день, автоматически обновляя любой криптографический сертификат, срок действия которого истекает в течение тридцати дней.

Проверить работоспособность процесса обновления криптографического сертификата можно с помощью команды:

sudo certbot renew --dry-run

Теперь добавим официальный ключ Jenkins с помощью команды:

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

Далее подключаем репозиторий Jenkins с помощью команды:

sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Теперь установим Jenkins с помощью команды:

sudo apt install -y jenkins

Теперь необходимо внести изменения в конфигурационный файл Jenkins, открыв его в текстовом редакторе с помощью команды:

sudo vim /etc/default/jenkins

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, находим строку JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT" и добавляем параметр --httpListenAddress=127.0.0.1.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Перезапустим Jenkins, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart jenkins

Проверим, что Jenkins успешно запустился, с помощью команды:

sudo systemctl status jenkins

Теперь необходимо получить пароль, который потребуется для разблокировки Jenkins. Получить пароль можно с помощью команды:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Сохраните полученный пароль, так как он понадобится на следующем шаге.

Для продолжения процесса установки Jenkins необходимо с рабочей станции перейти по ссылке https://jenkins.heyvaldemar.net, где jenkins.heyvaldemar.net — имя моего сервера. Соответственно, вам необходимо указать имя или IP-адрес вашего сервера Jenkins.

Далее необходимо указать пароль для разблокировки Jenkins.

В поле «Administrator password» указываем ранее полученный пароль для разблокировки Jenkins и нажимаем на кнопку «Continue».

Теперь можно выбрать, какие плагины установить для Jenkins.

В данном руководстве, мы будем рассматривать установку предлагаемых плагинов для Jenkins.

Нажимаем на кнопку «Install suggested plugins».

Начался процесс установки плагинов.

На следующем шаге необходимо указать: логин, пароль имя и адрес электронной почты для создания учетной записи администратора Jenkins.

Нажимаем на кнопку «Save and Continue».

В поле «Jenkins URL» указываем домен или субдомен, по которому ваш Jenkins доступен из сети Интернет.

В данном руководстве для доступа к Jenkins из сети Интернет будет использоваться субдомен jenkins.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Jenkins будет доступен из сети Интернет.

Нажимаем на кнопку «Save and Finish».

Установка Jenkins успешно завершена.

Нажимаем на кнопку «Start using Jenkins».

Все готово для использования Jenkins.

Author

Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем. На моем веб-сайте ты найдешь подробные и понятные руководства по настройке ИТ-решений. Окунись в океан, полный позитива и технологий! По вопросам сотрудничества: callvaldemar@gmail.com

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.