вторник, 5 июля 2016 г.

Установка Jenkins на CentOS 7 с nginx


Задался целью установить Jenkins на поддомен, желательно с https.

В общем случае задача простая и описана в официальном wiki. У меня сервер ещё голый, потому начнём с нуля.

Подклчение remi

# yum install epel-release
# rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# subscription-manager repos --enable=rhel-7-server-optional-rpms

Подключение репозитория с Jenkins

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

Установка

# yum install java-1.7.0-openjdk nginx jenkins

Настройка фаервола

# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --reload

Настройка SELinux (если включен)

# setsebool -P httpd_can_network_connect 1
Без этой опции nginx не сможет подключиться к jenkins и будет ошибка (13: Permission denied) while connecting to upstream

Настройка nginx на reverse proxy (wiki)

cat > /etc/nginx/conf.d/jenkins.conf
upstream jenkins {
  server 127.0.0.1:8080 fail_timeout=0;
}

server {
  listen 80;
  server_name jenkins.domain.tld;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name jenkins.domain.tld;

  ssl_certificate     /etc/nginx/ssl/server.crt;
  ssl_certificate_key /etc/nginx/ssl/server.key;

  location / {
    proxy_set_header        Host $host:$server_port;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_redirect          http://127.0.0.1:8080 https://jenkins.domain.tld;
    proxy_pass              http://jenkins;
  }
}
^D # Нажмите CTRL + D чтобы закончить запись файла

Нужно заменить jenkins.domain.tld на свой хост и исправить пути к сертификатам (у меня они остались со старого сервера).

Запуск

# systemctl enable nginx
# systemctl enable jenkins
# systemctl restart nginx
# systemctl restart jenkins

Проверка

Если всё сделано правильно, то по ссылке https://jenkins.domain.tld будет доступен Jenkins. Обычно ему нужно некоторое время, чтобы полностью запуститься.

Заключение

Рекомендуется сразу включить режим безопасности (Enable security) в Jenkins. По дальнейшей настройке хорошо написано в  wiki.

Комментариев нет:

Отправить комментарий