Fork me on GitHub

Centos7 上安装 Jenkins 及常见问题解决方案

最近用到了持续化集成,然后用了 travis-ci,但是发现使用 travis 部署到国内机器的时候网速特别慢,非常容易超时,然后结束运行。所以想到了曾经用过的 jenkins,所以再次记录一下部署问题以及解决方案

安装 jenkins

安装方式

  1. 采用 tomcat 下面放 jekins 里面放 war

  2. 直接下载二进制版,

上次我采用的是第一种。所以打算这次采用第二种解决方案。另外目前官网提供两种安装包,分别为长期支持版本 (LTS) 和每周更新版本。本次我安装的为 LTS 版

1
2
3
4
5
6
7
8
9
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install -y jenkins

# 当出现下面的情况时代表已经安装成功了
Installed:
jenkins.noarch 0:2.150.3-1.1

Complete!

配置 jenkins

前言

直接启动 jenkins 会出现以下错误

1
2
3
4
5
6
7
[root@gclms nginx]# service jenkins status
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
[root@gclms nginx]# service jenkins start
Starting jenkins (via systemctl): Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.

官方对于这个异常说是没有安装 java 环境,也就是没有安装 jdk。但是我本身的机器的已经安装过 jdk了啊。所以我们需要修改一下 jenkins 文件。让他可以找到我们安装的 jdk

找到 本地 jdk 位置

​ 我的 jdk 位置为 /opt/java/jdk1.8.0_201/bin

修改 jenkins 启动脚本

1
vim /etc/rc.d/init.d/jenkins

启动 jenkins

1
2
[root@gclms jenkins]# systemctl daemon-reload
[root@gclms jenkins]# systemctl start jenkins

现在打开就浏览器 http://SERVER_IP:8080 ,如果出现如下图的情况,那说明 jenkins 已经成功启动了。

配置 Nginx

关于 nginx 的安装、nginx ssl 证书配置 我以前的文章 centos7 nginx 的 brotli 压缩 nginx 配置 SSL 证书

nginx 配置 文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
upstream jenkins {
server 127.0.0.1:8080 fail_timeout=0;
}

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

server {
listen 443 ssl;
server_name jenkins.XX.com;

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:// https://;
proxy_pass http://jenkins;
# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
# workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
add_header 'X-SSH-Endpoint' 'jenkins.XX.com:50022' always;
}
}

接下来使用自己配置的域名访问,如果还出现这张图,那说明 nginx 配置成功。

Jenkins 文件路径

  • /usr/lib/jenkins/jenkins.war # jenkins安装目录,WAR包会放在这里
  • /etc/sysconfig/jenkins # 配置文件
  • /var/lib/jenkins/ # 默认的JENKINS_HOME
  • /etc/rc.d/init.d/jenkins #启动脚本
  • /var/log/jenkins/jenkins.log #Jenkins 日志文件

常见问题

Jenkins忘记admin密码拯救方法

关于忘记密码有分为以下两种情况

admin密码未更改情况

1
2
3
# 使用下面的指令查看当前密码
[root@jenkins jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
796008f906d2453ca0d22e2f8fa46d33

admin密码更改忘记情况

1
2
3
4
# 默认的JENKINS_HOME 里面有个 users 文件夹,里面存储的一些用户信息
[root@gclms ~]# cd /var/lib/jenkins/
[root@gclms jenkins]# cd users/自己常用的用户名
[root@gclms jenkins]# vim config.xml

​ passwordHash 字段里面存储的就是 jenkins 的密码。替换成自己想换成的密码就可以,应为这次采用了加密,所以 我提供一个加密后的 密码

123456 加密后为 #jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq

​ 修改 /users/admin/comfig.xml 文件后,保存重新启动Jenkins程序。然后再以用户名admin 密码123456 成功登录。

参考文档

本文标题:Centos7 上安装 Jenkins 及常见问题解决方案

文章作者:孤城落寞

发布时间:2019年02月22日 - 17:32:00

最后更新:2019年02月24日 - 16:44:40

原始链接:https://blog.gclmit.club/archives/1e02c6c4.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。



-------------本文结束 感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!