CentOS下安装Jenkins(Docker/war/tomcat/java -jar)

参考官方提供的安装教程:https://jenkins.io/doc/book/installing/,可以发现官方推荐使用Docker进行安装。虽然用Docker有很多好处,但也有缺点。

下面是各种安装方法:

无论怎么的安装方法,jenkins在启动时,都会在运行用户的目录下生成.jenkins文件夹,此文件夹用于存放配置和项目文件,因此,想要备份和迁移jenkins的可以在此文件夹入手。

一、Docker

Docker运行简单,无需关心Java环境,但弊端是不能使用Docker版的Jenkins来打包Docker,但可以使用子节点的形式来实现。还有就是Docker启东市参数的配置其实是比较少的,没那么灵活。其实研究到最后你会发现它的运行也就是java -var jenkins.war的形式,那么可以通过改写容器里面的进程启动参数来增加可配置参数的灵活性。

# 下载镜像
# 最新版
docker pull jenkinsci/blueocean
# 指定版
# docker pull jenkinsci/blueocean:1.3.6

# 运行
docker run \
  -u root \
  --rm \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

说明:

可选jenkinsci/blueocean关闭时自动删除Docker容器(下图中的实例化)。如果您需要退出Jenkins,这可以保持整洁。
2 可选jenkinsci/blueocean在后台运行容器(即“分离”模式)并输出容器ID。如果未指定此选项,则会在终端窗口中输出正在运行的此容器的Docker日志。
3 映射(即“发布”)jenkinsci/blueocean容器的端口8080到主机上的端口8080。第一个数字表示主机上的端口,而最后一个表示容器的端口。因此,如果您-p 49000:8080为此选项指定,则将通过端口49000访问主机上的Jenkins。
可选)将jenkinsci/blueocean容器的端口50000 映射到主机上的端口50000。只有在其他计算机上设置了一个或多个基于JNLP的Jenkins代理时才需要这样做,而这些代理又与jenkinsci/blueocean容器交互(充当“主”Jenkins服务器,或简称为“Jenkins master”)。基于JNLP的Jenkins代理默认通过TCP端口50000与Jenkins主机通信。您可以通过“配置全局安全性” 页面更改Jenkins主服务器上的此端口号。如果您要将JNSLP代理的 Jenkins主服务器TCP端口 值更改为51000(例如),那么您需要重新运行Jenkins(通过此 docker run …?命令)并指定此“发布”选项,例如 -p 52000:51000,其中最后一个值与Jenkins主服务器上的此更改值匹配,第一个值是Jenkins主服务器上的端口号,基于JNLP的Jenkins代理通过该端口号与Jenkins主服务器进行通信 - 即52000。
可选但强烈建议)使用名称 /var/jenkins_home将容器中的目录映射到Docker jenkins-data。如果此卷不存在,则此docker run命令将自动为您创建卷。如果您希望每次重新启动Jenkins时都保持Jenkins状态(通过此docker run …?命令),则需要此选项 。如果未指定此选项,则Jenkins将在每次重新启动后有效地重置为新实例。
注意: 所述的jenkins-data体积也可以独立地使用所创建的 docker volume create:命令
docker volume create jenkins-data
代替映射/var/jenkins_home在Docker卷的目录中,您还可以将此目录映射到计算机本地文件系统上的目录。例如,指定该选项
-v $HOME/jenkins:/var/jenkins_home会将容器的/var/jenkins_home目录映射 到 本地计算机上目录中的jenkins子目录,该子目录$HOME通常为 /Users/<your-username>/jenkins/home/<your-username>/jenkins
6 可选/var/run/docker.sock表示Docker守护程序通过其侦听的基于Unix的套接字。此映射允许jenkinsci/blueocean容器与Docker守护程序通信,如果jenkinsci/blueocean容器需要实例化其他Docker容器,则需要该守护程序。如果运行语法包含agentdocker参数的部分的声明性管道,则此选项是必需的 - 即
agent { docker { …? } }。在Pipeline Syntax页面上阅读更多相关信息 。
7 jenkinsci/blueocean Docker镜像。如果尚未下载此镜像,则此docker run命令将自动为您下载镜像。此外,如果自上次运行此命令后发布了对此映像的任何更新,则再次运行此命令将自动为您下载这些已发布的映像更新。
注意:也可以使用以下docker pull 命令单独下载(或更新)此Docker镜像 :
docker pull jenkinsci/blueocean

文件主目录:

上面安装指定了-v jenkins-data:/var/jenkins_home,那么此时在Docker容器目录已经变了,不再是用户目录下的.jenkins文件夹,变成/var/jenkins_home文件夹;当这个选项没有填写时才是默认的.jenkins文件夹。如果想要变成宿主机也有这个文件夹映射,需要这样写-v /var/jenkins_home:/var/jenkins_home。

查看日志:

此时的日志没有在容器里没有指定的位置,所以只能通过docker logs <name>进行日志的查看。

二、Tomcat部署war包

这个方法最简单,直接交给tomcat容器,并且jvm参数这些也同样由tomcat进行配置;那么此时可以配置的选项已经有所折扣,主目录默认放在用户目录下的.jenkins文件夹;而进入系统设置后会提示“代理服务器设置错误”等信息,且无法修复。

# 在此地址下载war包http://mirrors.jenkins.io/war-stable/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war
# 移动到tomcat目录
mv jenkins.war $TOMAT_HOME/webapps/# 最后访问地址http://$TOMCAT_IP:$TOMCAT_PORT/jenkins

主目录:

可以修改,不过需要结合Tomcat的启动脚本,把这些参数加上去:

日志:

变成这个:/data/service/tomcat/logs/catalina.out

官方参考:

https://wiki.jenkins.io/display/JENKINS/Tomcat

三、yum源安装

这个应该是网上最多人用的方式,其运行原理也就是java -jar jenkins.war,同时你只能通过这种方式安装最新版本,某些指定版本不一定可以安装的到,当然这都是可以解决的,比如在这里https://pkg.jenkins.io/redhat-stable/下载特定的RPM包进行安装即可,同样RPM包没有那么多指定版本可以选择,但可以下载war包替换即可实现指定版本的安装;并且需要JDK的路径必须为如下所示:

/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java

安装好后的文件如下:

/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins

安装脚本:

# 安装依赖
yum install -y epel-release
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# 安装jenkins
yum install jenkins

主目录:

在配置文件/etc/sysconfig/jenkins下进行配置,默认为:/var/lib/jenkins,同时这个文件也是可以配置jenkins的启动参数等。

日志:

在目录/var/log/jenkins下

官方参考:

https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions

四、war包的java -jar运行

目前这种方式应该是最好的,采用java -jar的运行,参数可以随意指定,此运行时基于jetty的容器。

# 下载war包
# 在此地址下载war包http://mirrors.jenkins.io/war-stable/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war

使用nohup进行运行,此方法可以指定控制台的日志输出位置,其实上面几种方式都是这样的方式输出日志的:

nohup java -jar jenkins.war > /tmp/jenkins.log 2>&1

命令参数如下:

命令行参数

Jenkins通常使用端口8080启动。但是,如果启动了其他Web服务,您可能会发现此端口已被占用。您可以使用希望Jenkins运行的端口--httpPort=$HTTP_PORT在哪里指定其他端口$HTTP_PORT。其他命令行参数包括:

命令行参数

描述

-help 显示所有可用选项及其用法

--httpPort=$HTTP_PORT


使用标准http协议在端口$HTTP_PORT上运行Jenkins侦听器。默认端口为8080.要禁用(因为您使用的是https),请使用端口-1。此选项不会影响在Jenkins逻辑(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定义。


--httpListenAddress=$HTTP_HOST


将Jenkins绑定到$HTTP_HOST表示的IP地址。默认值为0.0.0.0 - 即侦听所有可用接口。
例如,要仅侦听来自localhost的请求,您可以使用: - httpListenAddress=127.0.0.1


--httpsPort=$HTTP_PORT


在端口$HTTP_PORT上使用HTTPS协议。此选项不会影响在Jenkins逻辑(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定义。


--httpsListenAddress=$HTTPS_HOST


绑定Jenkins以侦听$HTTPS_HOST表示的IP地址上的HTTPS请求。

--http2Port=$HTTP_PORT 在端口$HTTP_PORT上使用HTTP/2协议。此选项不会影响在Jenkins逻辑(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定义。
--http2ListenAddress=$HTTPS_HOST 绑定Jenkins以侦听$HTTPS_HOST表示的IP地址上的HTTP/2请求。

--prefix=$PREFIX


运行Jenkins以在URL末尾包含$PREFIX。
例如,要使Jenkins可以访问,请设置--prefix=/jenkins

http://myServer:8080/jenkins


--ajp13Port=$AJP_PORT


使用标准AJP13协议在端口$AJP_PORT上运行Jenkins监听器。默认值为端口8009.要禁用(因为您使用的是https),请使用端口-1


--ajp13ListenAddress=$AJP_HOST


将Jenkins绑定到$AJP_HOST表示的IP地址。默认值为0.0.0.0 - 即侦听所有可用接口。


--argumentsRealm.passwd.$ADMIN_USER


设置用户$ADMIN_USER的密码。如果启用了Jenkins安全性,则必须以$ADMIN_USER身份登录才能配置Jenkins或Jenkins项目。注意:您还必须指定此用户具有管理员角色。(见下面的下一个论点)。


--argumentsRealm.roles.$ADMIN_USER=admin


设置$ADMIN_USER是管理用户,如果启用了Jenkins的安全性,则可以配置Jenkins。有关更多信息,请参阅保护Jenkins

--sessionTimeout=$SESSION_TIMEOUT
将http会话超时值设置为$SESSION_TIMEOUT分钟。默认为webapp指定的内容,然后是60分钟

--useJmx 启用Jetty JMX(参见文档

-Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n


设置调试开启,您可以访问$DEBUG_PORT上的调试。


-logfile=$LOG_PATH/winstone_`date +“%Y%m-%d_%H-%M”`.log


记录到所需的文件


-XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M


参考Oracle Java的这些选项

官方参考:

https://wiki.jenkins.io/display/JENKINS/Starting+and+Accessing+Jenkins

五、反向代理设置

其实无需在Jenkins的jetty容器配置SSL,只需在Nginx配置即可。

# 普通方向代理
server {
    listen 80;
    server_name  www.jenkins.com;

    client_max_body_size    200m;

    location / {
      sendfile off;
      proxy_pass         http://127.0.0.1:8080;
      proxy_redirect     default;
      proxy_http_version 1.1;

      proxy_set_header   Host              $host;
      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_max_temp_file_size 0;

      #this is the maximum upload size
      client_max_body_size       10m;
      client_body_buffer_size    128k;

      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;
      proxy_buffering            off;
      proxy_request_buffering    off; # Required for HTTP CLI commands in Jenkins > 2.54
      proxy_set_header Connection ""; # Clear for keepalive
    }
}
SSL反向代理
server {
    listen 443;
    server_name www.jenkins.com;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   /data/service/nginx_vhost/cert/215082065120461.pem;
    ssl_certificate_key  /data/service/nginx_vhost/cert/215082065120461.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        sendfile off;
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect default;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        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_max_temp_file_size 0;

        #this is the maximum upload size
        client_max_body_size 10m;
        client_body_buffer_size 128k;

        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffering off;
        proxy_request_buffering off; # Required for HTTP CLI commands in Jenkins > 2.54
        proxy_set_header Connection ""; # Clear for keepalive
    }
}

官方参考:

https://wiki.jenkins.io/display/JENKINS/Jenkins+behind+an+NGinX+reverse+proxy

六、总结

1、war包使用java -jar运行其实是个趋势,Docker虽然快,但也有弊端。

2、yum其实配置最好,什么项都非常清晰,只是目录规划不能自定义,需要后期维护。

3、war包直接运行最灵活,要什么参数都可以自行配置。

4、tomcat部署最弱,依托于tomcat容器后续配置可能要兼顾考虑。

5、每个版本的安装各有千秋,适合自己的才是最好的。我个人觉得yum安装还是不错的,至少配置是标准的。

七、一键安装脚本

https://github.com/easonjim/centos-shell/tree/master/jenkins

参考:

https://www.blazemeter.com/blog/how-to-install-jenkins-on-the-apache-tomcat-server(tomcat)

https://www.vultr.com/docs/how-to-install-jenkins-on-centos-7(yum)

https://jenkins.io/doc/book/installing/(官方教程)

https://blog.whsir.com/post-2505.html

https://ken.io/note/centos7-jenkins-install-tutorial

https://www.cnblogs.com/stulzq/p/9291237.html

原文地址:https://www.cnblogs.com/EasonJim/p/10026416.html

时间: 2024-11-05 09:57:42

CentOS下安装Jenkins(Docker/war/tomcat/java -jar)的相关文章

centos下安装jenkins

1.去jenkins官网下载最新版本的rpm安装包,https://jenkins.io/index.html jenkins-2.7.4-1.1.noarch.rpm 2.安装JDK yum install java-1.8.0-openjdk.x86_64 3.安装jenkins rpm -ivh jenkins-2.7.4-1.1.noarch.rpm 4.启动jenkins service jenkins start 5.查看jenkins日志 tail -f /var/log/jenk

centos下安装Jenkins轻松搞定

jenkins安装步骤如下: 命令:yum -y list java* yum -y install java-1.7.0-openjdk.x86_64                                                                                       -------- 搭建jdk的环境 java wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel

centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法

centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在centos下安装了jdk和tomcat,并调试通,之前从Ubuntu下装过,还没有从centos弄过,记录一下安装过程与出现的问题. 首先准备好安装文件,jdk-6u45-linux-i586-rpm.bin  apache-tomcat-6.0.41.tar.gz 进入目录 [html] view

在CentOS下安装Ngix服务及集群PHP、Tomcat

资源下载地址:http://download.csdn.net/detail/attagain/7570597 一. Ngix依赖模块安装 Ngix依赖模块有:pcre.zlib.openssl.md5 /sha1(如果系统中没有安装相应模块,需要按照下列方式安装) 1. 安装pcre模块(8.35) 官方网站:http://www.pcre.org/ 安装命令: # unzip pcre-8.35.zip # cd pcre-8.35 # ./configure # make && ma

centOS下安装tomcat详解

本人是用的vmware上安装的centOS系统. 先去apache的tomcat官网上下载下来所需要的文件,网址为http://tomcat.apache.org/download-70.cgi 点击tar.gz下载就可以. 接着把下载下来的tomcat拖到虚拟机中的centOS的目录下,我拖到的是/home/449261417/下载 这个目录中. 接着打开终端开始敲命令 tar -zxvf apache-tomcat-7.0.54.tar.gz(解压下载下来的tar包) mv tomcat-7

Linux(centos6.5)下安装jenkins

Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, 对于我来说,也是应用在系统部署上. 废话不多说,直接进入我们的安装步骤吧 1.安装JDK,maven环境搭建 因为考虑到jenkins的实际应用场景,我们需要把这些基础环境先安装完成. jdk安装比较简单不做赘述,maven环境借用了osc其他大侠的博客内容, 试了下安装成功. maven官网下载安装包:http://maven.apache.org/downl

contos下安装JDK1.7 ,tomcat,nginx

CentOS下的jdk安装 1.先在网上下载好JDK的安装包,然后把安装包放在usr/local/Java目录下(放在哪里就看个人习惯了) 2.打开终端 1>cd /usr/local/java (定位到文件夹/usr/local/Java) 2>tar zxvf jdk-7u51-linux-x64.tar.gz (解压到当前目录) 3>在 /etc/profile 文件末尾添加 环境变量(配置jdk的环境变量) export JAVA_HOME=/usr/java/jdk1.7.0_

Centos下安装memcached+memcached教程

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将

Linux CentOS下安装、配置mysql数据库

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数