そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

CentOS7にJenkinsをインストールする手順【ポート番号変更とファイアーウォール設定も】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

・CentOS7にJenkinsをインストールしたい。
・具体的な手順を教えてほしい。

こういった疑問に答えます。

本記事の内容

  1. CentOS7にJenkinsをインストールする手順
  2. Jenkinsのインストール後の初期設定

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。

こういった私が、解説していきます。

私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。

CentOS7にJenkinsをインストールする手順

前提

今回の環境は以下です。

項目 バージョン
OS CentOS 7.8 (2003)
Java OpenJDK 1.8.0

CentOSのバージョン

[root@SV-SATURN ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

Javaのバージョン

[root@SV-SATURN ~]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

Jenkinsのインストールのコマンド

基本的に、公式サイトのドキュメントにあるコマンドを順番に実行していくだけです。

www.jenkins.io

https://www.jenkins.io/doc/book/installing/#red-hat-centos

yumリポジトリにJenkins設定を追加

 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@SV-SATURN ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2020-10-18 16:32:12--  https://pkg.jenkins.io/redhat-stable/jenkins.repo
pkg.jenkins.io (pkg.jenkins.io) をDNSに問いあわせています... 2a04:4e42::645, 2a04:4e42:200::645, 2a04:4e42:400::645, ...
pkg.jenkins.io (pkg.jenkins.io)|2a04:4e42::645|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 85
`/etc/yum.repos.d/jenkins.repo' に保存中

100%[==============================================================================>] 85          --.-K/s 時間 0s

2020-10-18 16:32:12 (7.37 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [85/85]

公開鍵を追加

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@SV-SATURN ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Jenkinsインストール

 yum install jenkins
[root@SV-SATURN ~]# yum install jenkins
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
base                                                                                             | 3.6 kB  00:00:00
extras                                                                                           | 2.9 kB  00:00:00
jenkins                                                                                          | 2.9 kB  00:00:00
updates                                                                                          | 2.9 kB  00:00:00
(1/3): extras/7/x86_64/primary_db                                                                | 206 kB  00:00:00
(2/3): updates/7/x86_64/primary_db                                                               | 4.5 MB  00:00:00
(3/3): jenkins/primary_db                                                                        |  35 kB  00:00:02
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ jenkins.noarch 0:2.249.2-1.1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================================================
 Package                    アーキテクチャー          バージョン                       リポジトリー                容量
========================================================================================================================
インストール中:
 jenkins                    noarch                    2.249.2-1.1                      jenkins                     64 M

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 64 M
インストール容量: 64 M
Is this ok [y/d/N]: y
Downloading packages:
jenkins-2.249.2-1.1.noarch.rpm                                                                   |  64 MB  00:00:08
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : jenkins-2.249.2-1.1.noarch                                                              1/1
  検証中                  : jenkins-2.249.2-1.1.noarch                                                              1/1

インストール:
  jenkins.noarch 0:2.249.2-1.1

完了しました!

Jenkinsサービスの自動起動の設定

systemctl enable jenkins
[root@SV-SATURN ~]# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on

Jenkinsの起動

systemctl start jenkins
systemctl status jenkins
[root@SV-SATURN ~]# systemctl start jenkins
[root@SV-SATURN ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (exited) since 日 2020-10-18 16:39:11 JST; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4830 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)

1018 16:39:09 SV-SATURN systemd[1]: Starting LSB: Jenkins Automation Server...
1018 16:39:10 SV-SATURN runuser[4835]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
1018 16:39:11 SV-SATURN runuser[4835]: pam_unix(runuser:session): session closed for user jenkins
1018 16:39:11 SV-SATURN jenkins[4830]: Starting Jenkins [  OK  ]
1018 16:39:11 SV-SATURN systemd[1]: Started LSB: Jenkins Automation Server.

ポート8080にアクセス

http://サーバ名:8080

Jenkinsのデフォルトのポート番号は「8080」ですが、

今回の環境では、ポート番号「8080」が別のサービスで使用中だったので、
404 Not Found」エラーになってしまいました。

ポート番号の変更

vi /etc/sysconfig/jenkins

JENKINS_PORT="8080" のところを、JENKINS_PORT="8888" に変更しました。

## Path:        Development/Jenkins
## Description: Jenkins Automation Server
## Type:        string
## Default:     "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"

## Type:        string
## Default: "false"
## ServiceRestart: jenkins
#
# Whether to skip potentially long-running chown at the
# $JENKINS_HOME location. Do not enable this, "true", unless
# you know what you're doing. See JENKINS-23273.
#
#JENKINS_INSTALL_SKIP_CHOWN="false"

## Type: string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

## Type:        integer(0:65535)
## Default:     8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
# JENKINS_PORT="8080"
JENKINS_PORT="8888"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_LISTEN_ADDRESS=""

## Type:        integer(0:65535)
## Default:     ""
## ServiceRestart: jenkins
#
# HTTPS port Jenkins is listening on.
# Default is disabled.
#
JENKINS_HTTPS_PORT=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Path to the keystore in JKS format (as created by the JDK 'keytool').
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE_PASSWORD=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTPS requests.
# Default is disabled.
#
JENKINS_HTTPS_LISTEN_ADDRESS=""

## Type:        integer(0:65535)
## Default:     ""
## ServiceRestart: jenkins
#
# HTTP2 port Jenkins is listening on.
# Default is disabled.
#
# Notice: HTTP2 support may require additional configuration, see Winstone
# documentation for more information.
#
JENKINS_HTTP2_PORT=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP2 requests.
# Default is disabled.
#
# Notice: HTTP2 support may require additional configuration, see Winstone
# documentation for more information.
#
JENKINS_HTTP2_LISTEN_ADDRESS=""

## Type:        integer(1:9)
## Default:     5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"

## Type:        yesno
## Default:     no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"

## Type:        integer
## Default:     100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"

## Type:        integer
## Default:     20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Folder for additional jar files to add to the Jetty class loader.
# See Winstone documentation for more information.
# Default is disabled.
#
JENKINS_EXTRA_LIB_FOLDER=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""

ポート番号変更後、一度Jenkinsを再起動

systemctl restart jenkins

ポート番号の状況の確認

lsof -i:8888
[root@SV-SATURN sysconfig]# lsof -i:8888
COMMAND  PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    6267 jenkins   23u  IPv6 6924657      0t0  TCP *:ddi-tcp-1 (LISTEN)

ファイアーウォールにJenkinsのサービスを追加

/etc/firewalld/services/jenkins.xml

上記のファイルを作成して、Jenkins用のサービス定義を書いたXMLファイルを用意します。

[root@SV-SATURN ~]# cd /etc/firewalld/services/
[root@SV-SATURN services]# vi jenkins.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Jenkins</short>
  <description>Jenkins</description>
  <port protocol="tcp" port="8888"/>
</service>

ファイアーウォールにサービス追加

firewall-cmd --zone=managerzone --add-service=jenkins --permanent
firewall-cmd --reload
[root@SV-SATURN services]# firewall-cmd --zone=managerzone --add-service=jenkins --permanent
success
[root@SV-SATURN services]# firewall-cmd --reload
success

設定変更後の確認

firewall-cmd --list-all --zone=managerzone
[root@SV-SATURN services]# firewall-cmd --list-all --zone=managerzone
managerzone (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.1.101/24
  services: jenkins ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

変更後のポート番号8888にアクセス

http://サーバ名:8888

準備中の画面が表示されました。

Jenkinsのインストール後の初期設定

「Administrator password」を入力してUnlock

最初に、「Administrator password」を入力する画面が表示されます。

パスワードは下記ファイルの中に記述されています。

cat /var/lib/jenkins/secrets/initialAdminPassword
[root@SV-SATURN jenkins]# cd /var/lib/jenkins/secrets/
[root@SV-SATURN secrets]# ls -l
合計 20
drwxr-xr-x 2 jenkins jenkins  29 1018 17:01 filepath-filters.d
-rw-r----- 1 jenkins jenkins  33 1018 17:01 initialAdminPassword
-rw-r--r-- 1 jenkins jenkins  32 1018 17:01 jenkins.model.Jenkins.crumbSalt
-rw-r--r-- 1 jenkins jenkins 256 1018 17:01 master.key
-rw-r--r-- 1 jenkins jenkins 272 1018 17:01 org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
-rw-r--r-- 1 jenkins jenkins   5 1018 17:01 slave-to-master-security-kill-switch
drwxr-xr-x 2 jenkins jenkins  26 1018 17:01 whitelisted-callables.d
[root@SV-SATURN secrets]# cat initialAdminPassword
3b8d37d7e04241b185edcbf760020df9

「Install suggested plugins」を実行

「Create First Admin User」で管理者ユーザーの情報を登録

「Instance Configuration」は何も変更せず

「Jenkins is ready!」が表示されたら完了

そのまま、管理者ユーザーで自動でログインして画面が開きます。

一旦ログオフして、管理者ユーザーで再ログインできるか確認

まとめ

今回は、CentOS7にJenkinsをインストールして初期設定を済ませるまでの手順を紹介しました。

[改訂第3版]Jenkins実践入門
ビルド・テスト・デプロイを自動化する技術
WEB+DB PRESS plus

インフラエンジニアの勉強ができるオンライン学習サイト

Udemy (オンライン動画学習サイト)

Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。

≫Udemy 世界最大級のオンライン学習サイト

Udemyの特徴
  • ユーザー登録すれば、第1回の講座は無料で視聴できる
  • 無料のコンテンツもある
  • 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい

≫Udemy 世界最大級のオンライン学習サイト

開発の人気オンラインコース