zoukankan      html  css  js  c++  java
  • Jenkins安装

     一, Jenkins简介


     1.开源自动化持续集成与部署平台

    • CI, 持续集成
    • CD, 持续部署

    2.Jenkins支持的任务类型

    • 自由风格任务
    • 流水线(Pipeline)
    • Maven 项目
    • 多配置项目
    • 多分支流水线任务

    3.Jenkins常见的任务功能

    • 定时任务
    • Pull SCM -- 定时检查代码库中的代码有没有更新, 指定的分支或者targe有没有更新, 有更新将继续执行里面的步骤, 没有更新就不会执行;
    • Trigger(by Gitlab, JIRA...) -- 可以被其它的一些服务或插件触发的, 比如 gitlab, jira 有变更就会自动触发其中的任务;
    • 主动/被动触发其它任务
    • 被其它任务触发
    • WEB UI, 命令行, API

    4.Jenkins应用场景

    • 将项目的代码拉到本地编译后发布到指定的环境
      • 过程包括
        • 拉代码
        • 预处理(如修改, 替换或删除文件) -- <有的公司可能不需要开发看到数据库的密码等, 在这一步可以替换掉>
        • 编译(如果需要)
        • 通过 Sonar 进行代码审查 -- 第三方开源的代码质量审查软件, 自动扫描代码中的语法, 分析漏洞等, 并且提供一些优化的建议;
        • 构建 Docker 镜像
        • 推送到 Harbor 仓库
        • 控制 K8s 应用更新
        • 自动化测试
    • 执行简单的命令 -- 一般在服务器中运用到的命令, 在 Jenkins 中都可以使用;

    二,Jenkins运行环境


    • 系统:Centos 7
    • 域名(自定义):https://jenkins.zxjr.com
    • 防火墙: 开放 443 端口
    • Java: openjdk-1.8
    • Nginx:1.18.0, 启用 SSL 支持
    • Jenkins: 2.120 (非稳定版) <后面实现升级>
    • User:jenkins, uid=1212, gid=1212
    • 目录设置定义  /data/app/jenkins
      • home          JENKINS_HOME--运行的家目录, 主要是一些任务的配置;
      • log                   Jenkins 日志目录
      • run                  Jenkins.jar & 节点启动脚本
      • scripts             Shell, Broovy 脚本目录
      • dockerfiles      Dockerfile & k8s yaml

    三,Nginx安装并启用SSL支持


    1.首先访问nginx官网,下载稳定版本

              

    2.复制nginx的链接地址, 并在Centos中相应的目录进行下载, 并下载相应的依赖包(pcre/openssl)

    // 进入源码包放置目录
    cd /usr/local/src
    // 下载nginx源码包保存本地
    curl -O http://nginx.org/download/nginx-1.18.0.tar.gz
    // 下载 openssl 源码包
    wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
    // 下载 pcre 源码包
    curl -O ftp://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
    
    // 解压源码包
    for i in `ls /usr/local/src`;do tar xf $i; done
    
    // 编译安装 nginx
    yum -y install gcc gcc-c++ make
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-openssl=../openssl-1.1.1g --with-pcre=/usr/local/src/pcre-8.44
    
        // 报错
        # ./configure: error: the HTTP gzip module requires the zlib library.
        You can either disable the module by using --without-http_gzip_module
        option, or install the zlib library into the system, or build the zlib library
        statically from the source with nginx by using --with-zlib=<path> option.
        // gzip需要依赖zlib库, 需要安装, 
        // 方法一: 使用yum进行安装 --- yum -y install zlib-devel
        // 方法二: 源码安装, zlib-1.2.11.tar.gz 从17年就一直没有再更新了.
        wget http://www.zlib.net/zlib-1.2.11.tar.gz
        tar xf zlib-1.2.11.tar.gz && cd zlib-1.2.11 && ./configure && make && make install
    
    // 安装完成后再执行nginx的与配置        启用ssl模块                用于显示nginx状态(连接数,处理进程的数量, 等待的数量. 一般用于nginx 监控
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-openssl=../openssl-1.1.1g --with-pcre=/usr/local/src/pcre-8.44
    make && make install
    
    // 查看nginx 安装目录, 确定安装完毕, 并查看 nginx 命令的大小
    ls /usr/local/nginx/
      conf  html  logs  sbin
    ll -h /usr/local/nginx/sbin/nginx
      -rwxr-xr-x 1 root root 7.5M May 21 21:53 /usr/local/nginx/sbin/nginx

    3.Nginx 配置

    // 创建nginx用户,不创建家目录,不能登录系统
    useradd -M -s /sbin/nologin nginx
    
    // nginx配置文件放置目录,default结尾的为默认的配置文件(备份)
    // 编辑 nginx 配置文件, 重新编写
    vim /usr/local/nginx/conf/nginx.conf
    user    nginx nginx;
    worker_processes    1;
    error_log    logs/error.log    info;
    pid        logs/nginx.pid;
    
    events {
        use epoll;
        worker_connections    65535;
    }
    
    http {
        include            mime.types;
        default_type    application/octet-stream;
        log_format    default '$remote_addr $remote_port $remote_user $time_iso8601 $status $body_bytes_sent '
                            '"$request" "$request_body" "$http_referer" "$http_user_agent" "$http_x_forwarded for"'
    
        fastcgi_send_timeout            300;
        fastcgi_read_timeout            300;
        fastcgi_buffer_size                64k;
        fastcgi_buffers                8    32k;
        fastcgi_busy_buffers_size        128k;
        fastcgi_temp_file_write_size    128k;
    
        sendfile            on;
        keepalive_timeout    65;
        gzip                on;
        gzip_min_length        1k;
        gzip_buffers      4 16k;
        gzip_http_version    1.0;
        gzip_comp_level        2;
        gzip_types            text/plain application/x-javascript text/css application/xml text/vnd.wap.wml;
        gzip_vary            on;
        open_file_cache        max=3276 inactive=20s;
        open_file_cache_min_uses    1;
        open_file_cache_valid        30s;
    
        proxy_ignore_client_abort    on;
        
        client_max_body_size        1G;
        client_body_buffer_size        256k;
        proxy_connect_timeout        30;
        proxy_send_timeout            30;
        proxy_read_timeout            60;
        proxy_buffer_size            256k;
        proxy_buffers             4    256k;
        proxy_busy_buffers_size        256k;
        proxy_temp_file_write_size    256k;
        proxy_http_version            1.1;
    
        include vhosts/*.conf;
    }
    // 检查配置文件的正确性
    /usr/local/nginx/sbin/nginx -t
        nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
        nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    // 在放置配置文件的conf目录下创建 ssl 及 vhosts 目录
    cd /usr/local/nginx/conf
    mkdir ssl vhosts
    
    // 进入ssl目录, 生成证书
    cd ssl
    openssl genrsa -aes256 -passout pass:111111 -out jenkins.key 2048
    openssl rsa -passin pass:111111 -in jenkins.key -out jenkins.com.key
    openssl genrsa -aes256 -passout pass:111111 -out jenkins.key 2048
    openssl x509 -req -sha256 -days 3655 -in jenkins.com.csr -signkey jenkins.com.key -out jenkins.com.pem
    
    // 进入vhosts目录,创建zxjr.jenkins.com.conf
    cd ../vhosts
    vim zxjr.jenkins.com.conf
    server {
        listen            80;
        server_name        zxjr.jenkins.com;
    
        rewrite ^(.*)$    https://$host$1 permanent;
    }
    
    server {
        listen            443 ssl;
        server_name        zxjr.jenkins.com;
        
        ssl_certificate        /usr/local/nginx/conf/ssl/jenkins.com.pem;
        ssl_certificate_key    /usr/local/nginx/conf/ssl/jenkins.com.key;
        
        access_log            /data/logs/nginx/jenkins_access.log default;
    
        location / {
            proxy_pass            http://127.0.0.1:8080;
            proxy_http_version    1.1;
            proxy_set_header    Host $host;
            proxy_redirect        off;
            proxy_set_header    X-Forwarded-Proto $scheme;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout    10s;
            proxy_read_timeout        60s;
            proxy_send_timeout        60s;
        }
    }
    
    # 创建日志目录
    mkdir -p /data/logs/nginx

    四,Jenkins 安装


     1.基于tomcat部署

    Ⅰ.下载jenkins的war包及tomcat源码包

    // 清华大学开源软件镜像源
    https://mirrors.tuna.tsinghua.edu.cn/
    
    // 下载 jenkins.war
    wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war
    // 下载 tomcat 源码包
    wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz

    Ⅱ.部署 java

    // 使用 yum 部署java环境
    yum search openjdk
    yum -y install java-1.8.0-openjdk

    Ⅲ.部署tomcat环境

    // 创建 jenkins 用户,指定 uid
    useradd -u 1212 jenkins
    
    // 创建Jenkins相应目录
    mkdir /usr/local/jenkins/{dockerfile,home,log,run,scripts} -pv
    
    // 解压tomcat到指定目录
    tar xf /usr/local/src/apache-tomcat-9.0.36.tar.gz -C /usr/local/jenkins/run/
    cd /usr/local/jenkins/run/
    mv apache-tomcat-9.0.36/ tomcat
    
    // 修改jenkins目录的属主
    chown -R jenkins /usr/local/jenkins/*
    
    // 删除tomcat中无用的文件
    cd tomcat
    rm -f *.txt *.md LICENSE NOTICE RELEASE-NOTES
    rm -f bin/*.bat
    
    // 将jenkins的war包放到tomcat的应用程序目录中
    mv /usr/local/src/jenkins.war webapps/
    
    // 添加 JENKINS_HOME 环境变量
    echo -e "
    export JENKINS_HOME=/usr/local/jenkins/home" >> /etc/profile
    
    // 切换到 jenkins 用户, 启动 tomcat
    su - jenkins
    /usr/local/jenkins/run/tomcat/bin/startup.sh

    2.直接运行 jenkins.war 包 (常用)

    Ⅰ.下载 jenkins.war 包

    // 从清华大学开源软件镜像源下载 jenkins.war 包
    wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war

    Ⅱ.部署 java

    // 使用 yum 部署java环境
    yum search openjdk
    yum -y install java-1.8.0-openjdk

    Ⅲ.直接启动 jenkins.war 包

    // 创建指定 uid 的 jenkins 目录
    useradd -u 1212 jenkins
    
    // 创建Jenkins相应目录
    mkdir /usr/local/jenkins/{dockerfile,home,log,run,scripts} -pv
    
    // 将 jenkins.war 移动到 jenkins 下的 run 目录
    mv /usr/local/src/jenkins.war /usr/local/jenkins/run
    
    // 修改jenkins目录的属主
    chown -R jenkins /usr/local/jenkins/*
    
    // 切换到 jenkins 用户, 并启动 jenkins.war
    su - jenkins
    cd /usr/local/jenkins/run
    java -jar -Xmx1g -Xms1g /usr/local/jenkins/run/jenkins.war >/usr/local/jenkins/log/jenkins.log 2>&1 &

    五,Jenkins初次访问及密码


    1.初次访问 zxjr.jenkins.com

    2.管理员密码

    Ⅰ.方法一: 启动日志中查看

    cat /usr/local/jenkins/log/jenkins.log
        ... ...
        29b9239ef5d4453688468640ec14fca5
        ...

    Ⅱ.方法二: 根据web指定的目录查看

    cat /usr/local/jenkins/home/secrets/initialAdminPassword 
        29b9239ef5d4453688468640ec14fca5
  • 相关阅读:
    装饰器及其应用
    信息系统项目管理师高频考点(第九章)
    信息系统项目管理师高频考点(第八章)
    信息系统项目管理师高频考点(第七章)
    系统集成项目管理工程师高频考点(第九章)
    系统集成项目管理工程师高频考点(第八章)
    信息系统项目管理师高频考点(第六章)
    信息系统项目管理师高频考点(第五章)
    信息系统项目管理师高频考点(第四章)
    信息系统项目管理师高频考点(第三章)
  • 原文地址:https://www.cnblogs.com/haorong/p/12930447.html
Copyright © 2011-2022 走看看