・CentOS7にJenkinsをインストールしたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
- CentOS7にJenkinsをインストールする手順
- 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のインストールのコマンド
基本的に、公式サイトのドキュメントにあるコマンドを順番に実行していくだけです。
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) 10月 18 16:39:09 SV-SATURN systemd[1]: Starting LSB: Jenkins Automation Server... 10月 18 16:39:10 SV-SATURN runuser[4835]: pam_unix(runuser:session): session opened for user jenkins by (uid=0) 10月 18 16:39:11 SV-SATURN runuser[4835]: pam_unix(runuser:session): session closed for user jenkins 10月 18 16:39:11 SV-SATURN jenkins[4830]: Starting Jenkins [ OK ] 10月 18 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 10月 18 17:01 filepath-filters.d -rw-r----- 1 jenkins jenkins 33 10月 18 17:01 initialAdminPassword -rw-r--r-- 1 jenkins jenkins 32 10月 18 17:01 jenkins.model.Jenkins.crumbSalt -rw-r--r-- 1 jenkins jenkins 256 10月 18 17:01 master.key -rw-r--r-- 1 jenkins jenkins 272 10月 18 17:01 org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY -rw-r--r-- 1 jenkins jenkins 5 10月 18 17:01 slave-to-master-security-kill-switch drwxr-xr-x 2 jenkins jenkins 26 10月 18 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の特徴
- ユーザー登録すれば、第1回の講座は無料で視聴できる
- 無料のコンテンツもある
- 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい