前面是在windows上搭建jenkins环境,最近有同事要我帮忙在linux上搭建一套,因此在此记录下过程。
因为jenkins.msi只能在windows上运行安装,因此在linux上安装jenkins有所不同。
下载地址:https://jenkins.io/download/
1.安装java环境,jdk7或者jdk8
2.安装jenkins:
官网上一种方法是直接命令行下载安装见: https://pkg.jenkins.io/redhat-stable/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins
但是我尝试之后到第三步就报错下载失败,
Error downloading packages: jenkins-2.121.3-1.1.noarch: [Errno 256] No more mirrors to try.
因此放弃这种方式,直接下载rpm包:jenkins-2.121.3-1.1.noarch.rpm
- 执行命令安装:
sudo rpm -ih jenkins-2.121.3-1.1.noarch.rpm
[root@localhost soft]# ls jenkins-2.121.3-1.1.noarch.rpm project [root@localhost soft]# sudo rpm -ih jenkins-2.121.3-1.1.noarch.rpm ################################# [100%] 正在升级/安装... ################################# [100%] [root@localhost soft]#
- 查看jenkins被安装路径的2种方法:
whereis jenkins
rpm -ql jenkins
[root@localhost soft]# whereis jenkins
jenkins: /usr/lib/jenkins
[root@localhost soft]#
- 启动jenkins:
sudo service jenkins start
#重启
service jenkins restart
[root@localhost jenkins]# sudo service jenkins start Starting jenkins (via systemctl): [ 确定 ] [root@localhost jenkins]# netstat -nlp | grep 6666 tcp6 0 0 :::6666 :::* LISTEN 15623/java [root@localhost jenkins]#
这里需要注意的是,jenkins默认端口为8080,我之前安装的tomocat也是,如果8080已经被占用,执行这个命令不会报错,但是服务其实没有启动成功,需要先更改端口
这里我将端口改为了6666
这时发现服务启动了,但是在windows上无法访问jenkins,查阅资料发现有可能是防火墙造成的,telnet xx.xx.xx.xx 6666发现失败
这个时候再linux上查看防火墙是否开启状态:参考 https://www.cnblogs.com/CUI-S/p/9191402.html
systemctl status firewalld.service
[root@localhost ~]# service iptables status Redirecting to /bin/systemctl status iptables.service Unit iptables.service could not be found. [root@localhost ~]# cat /proc/version Linux version 3.10.0-514.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016 [root@localhost ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 四 2018-07-26 09:35:15 CST; 3 weeks 0 days ago Docs: man:firewalld(1) Main PID: 667 (firewalld) CGroup: /system.slice/firewalld.service └─667 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 7月 26 09:35:12 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon... 7月 26 09:35:15 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon. [root@localhost ~]#
发现防火墙开启着,这时查看防火墙规则,发现除了3306,其他都没有配置
vi /etc/sysconfig/iptables
[root@localhost ~]# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ~ ~
可以参考链接中的方法二新增入站规则,我这边因为对环境没要求,选择直接关闭防火墙
systemctl stop firewalld.service
此时发现部署在linux上的其他服务比如tomcat可以访问了,但是jenkins还是不可以!
#如果系统没安装tcpdump则需要先安装:https://www.cnblogs.com/cipc/articles/2428282.html
yum list tcpdump yum install tcpdump tcpdump -nni eth0 port 6666
使用这个命令抓包,发现用谷歌浏览器访问jenkins,抓取不到任何东西,因此怀疑是浏览器的问题,试了下ie果然可以,又试了下火狐,原来是端口的问题。换了个端口,所有浏览器都可以正常访问了
3.第一次访问jenkins:
- 安装插件:
第一次访问,界面出现【 该jenkins实例似乎已经离线 】查阅资料,发现有两种解决方案:
(我个人两种都尝试过。第一种成功了,但是之后安装推荐的插件还是全部失败。找运维帮忙看过,可能是网络的问题,因此我选择了继续下一步。插件后面在按需安装)
#下面2种页面操作最终修改的其实是这个文件下的url,该url就是下载插件的镜像
/var/lib/jenkins/hudson.model.UpdateCenter.xml
#可供选择的插件镜像源:http://mirrors.jenkins-ci.org/status.html
方案一:
#浏览器输入这个链接ip port为jenkins的
http://ip:port/pluginManager/advanced
#页面最底下有个【升级站点】,把链接改为如下之后提交,重启jenkins
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
方案二:
#浏览器输入这个链接ip port为jenkins的
http://ip:port/pluginManager/advanced
#页面最底下有个【升级站点】,把链接中的https改成http的就好http://updates.jenkins.io/update-center.json。 重启jenkins
- 新建第一个用户
windows上exe和msi 异同
1)点击Setup.exe文件来实现安装:
Setup.exe是一个安装引导程序。它是安装工程通过MSBuild创建的,其中包含了一个XML文件,定义了应用程序所需要的系统必备安装包信息。Setup.exe程序会检查这些系统必备安装包是否需要被下载和安装,如果需要,它就会先安装那些系统必备程序。当我们运行它的时候,它会读取setup.ini来确定安装所需要的配置并开始安装流程。
如果这个setup.exe是在Visual Studio 2005中生成的,那么用户就必须有管理员权限才能运行它。我们可以看见在setup.exe的图标上有一个防护盾,这就意味着这个程序只有管理员才能运行它。如果这个setup.exe是在Visual Studio 2008中生成的,那么用户不一定需要有管理员的权限就能执行它,当有一些特定操作需要管理员的权限时,系统会显示UAC对话框要求提升权限。这类Setup.exe的图标上不会显示防护盾。
2)点击setup.msi来进行安装。
Setup.msi是一个Windows Installer包。和setup.exe不一样,直接运行MSI安装包就不会自动安装自定义系统必备。它只会安装主应用程序。在安装项目的属性对话框中修改输出文件的名字,我们可以自定义MSI包的文件名。当我们“运行”它的时候,其实是Windows Installer在执行MSI包定义的各项操作。因此我们需要安装Windows Installer的正确版本才能运行setup.msi。我们也可以使用msiexec命令去安装setup.msi文件。