云计算百科
云计算领域专业知识百科平台

Jenkins 整体打包迁移服务器并升级最新版本

基本情况说明 目前旧服务器CentOs需要弃用,上面部署有jenkins 新服务器为UOS操作系统。打算部署最新版本jenkins。 迁移思路:先整体打包迁移再升级到最新版

1查看旧服务信息,打包传输到新服务器

scp命令,实现两台服务器数据传输 10.54 服务器执行scp。(我这里端口号不是默认的22 需要加-p。如果服务器默认端口号22则不用加-p)

#ssh-keygen -t rsa

#ssh-copy-id -p 22 root@xx.xx.1.116

如果报错再手动执行,一般不会报错,我这里可能两个服务器版本相差大 报错:

ssh-copy-id -p 22 root@xx.xx.1.116 Bad port ‘umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)’

手动执行

#cat ~/.ssh/id_rsa.pub | ssh -p 22 root@xx.xx.1.116 "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)"

输入116服务器密码成功

2 查看10.54服务器jenkins 在tomcat下的配置文件catalina.sh

可以看到jenkins工作目录和jdk。如果没有单独配置,默认是/root/.jenkins

export JENKINS_HOME=“/home/jenkins/.jenkins” export JAVA_HOME=/usr/local/java/jdk1.8.0_191 export JRE_HOME=/usr/local/java/jdk1.8.0_191/jre

停止tomcat,发送tomcat整个文件到116服务器(我这里端口号不是默认的22 需要加-P。如果服务器默认端口号22则不用加-P)

#scp -r -P 22 /usr/local/apache-tomcat-8.5.28 root@xx.xx.1.116:/usr/local/

等待传输 发送jenkins工作空间到116服务器 #scp -r -P 22 /home/jenkins/.jenkins root@xx.xx.1.116:/data/app/jenkins/ 发送maven、jdk工作空间到116服务器。(我这里是项目有多个版本JDK,根据实际情况复制传输。)

#scp -r -P 22 /usr/local/java/apache* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/jdk1.7* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/jdk1.6* root@xx.xx.1.116:/usr/local/java/
#scp -r -P 22 /usr/local/java/git* root@xx.xx.1.116:/usr/local/java/

3 修改 116 服务器 tomcat catalina.sh jenkins_home 地址

(传输过来的配置还是旧服务的,如果新服务器和旧服务器同一个目录,则不用配置) /data/app/jenkins/.jenkins

#vi catalina.sh

export JENKINS_HOME=“/data/app/jenkins/.jenkins” export JAVA_HOME=/usr/local/java/jdk1.8.0_191 export JRE_HOME=/usr/local/java/jdk1.8.0_191/jre #!/bin/sh

#vi /etc/profile

export JENKINS_HOME=/data/app/jenkins/.jenkins #set git export GIT_HOME=/usr/local/java/git-2.9.5

启动测试

#./startup.sh

访问tomcat端口,成功访问!

4 启动成功,没有开启密码登录,需要设置一下密码。

  • 重置管理员密码 登录到您的 Jenkins 控制器。 停止Jenkins进程。
  • 编辑您的或目录内的Jenkins 配置文件(config.xml) 。jenkins/$JENKINS_HOME 查找useSecurity并手动将其从true更改为false 。 保存文件并关闭它。(没有采用此方法)
  • 重启 Jenkins 服务以应用您的更改。重启 Jenkins 后,导航到您的控制器并登录。
  • 在仪表板上,选择页面左侧导航窗格中的“管理 Jenkins” 。(选择了此方法)
  • 在“管理 Jenkins”页面的“安全”部分下,选择“配置全局安全”。
  • 在“安全领域”下,从下拉菜单中选择Jenkins 自己的用户数据库。确保未选中“允许用户注册”选项并保存更改。这会将您重定向到“管理 Jenkins”页面。
  • 在“管理 Jenkins”页面上,选择“用户”。
  • 您将看到一个显示用户 ID 的列表。选择您要更改密码的用户 ID。 使用齿轮图标或用户 ID的下拉菜单选择配置。找到密码部分以更改您的密码。 更改密码后,您将能够使用相同的用户名和刚刚设置的新密码再次登录到 Jenkins控制器。
  • 参考链接 https://www.jenkins.io/doc/book/system-administration/admin-password-reset-instructions/

    5 开始升级jenkins

    下载最新版 https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.492.2/jenkins.war 创建2.492文件夹

    #cd /usr/local/jenkins2.492

    上传下载的war到此目录

    6 配置启动和停止脚本 不使用tomcat启动,使用 java -jar启动 启动脚本

    #vi start_jenkins.sh

    #!/bin/bash
    # 定义 JDK 17 的路径,需根据实际情况修改
    JDK17_PATH="/usr/local/java/jdk-17.0.14"
    # 定义 Jenkins WAR 包的路径,需根据实际情况修改
    JENKINS_WAR="/usr/local/jenkins2.492/jenkins.war"
    # 定义 Jenkins 工作目录
    JENKINS_HOME="/data/app/jenkins/.jenkins"
    # 启动 Jenkins
    nohup $JDK17_PATH/bin/java -DJENKINS_HOME=$JENKINS_HOME -jar
    $JENKINS_WAR –httpPort=8083 > jenkins.log 2>&1 &

    #chmod 777 start_jenkins.sh

    停止脚本

    #vi stop_jenkins.sh

    #!/bin/bash
    # 定义 JDK 路径
    JDK17_PATH="/usr/local/java/jdk-17.0.14"
    # 定义要匹配的 Jenkins 进程字符串
    JENKINS_PROCESS_STR="${JDK17_PATH}/bin/java
    -DJENKINS_HOME=/data/app/jenkins/.jenkins -jar /usr/local/jenkins2.492/jenkins.war"

    # 使用 pkill 命令停止 Jenkins 进程
    /usr/bin/pkill -f "$JENKINS_PROCESS_STR"

    #chmod 777 stop_jenkins.sh

    7 配置启动命令和开机自动启动

    #vim /etc/systemd/system/jenkins.service

    [Unit]
    Description=Jenkins Service
    After=network.target

    [Service]
    Type=forking
    ExecStart=/usr/local/jenkins2.492/start_jenkins.sh
    WorkingDirectory=/usr/local/jenkins2.492
    ExecStop=/usr/local/jenkins2.492/stop_jenkins.sh
    Restart=always
    RestartSec=3
    User=root
    Group=root

    [Install]
    WantedBy=multi-user.target

    重新加载 systemd 配置

    sudo systemctl daemon-reload

    启动 Jenkins 服务

    sudo systemctl start jenkins

    停止 Jenkins 服务

    sudo systemctl stop jenkins

    升级成功!浏览器访问升级成功。

    测试jenkins项目发布流程 全局管理配置保存时报错:直接升级全部插件

    jenkins 报错java.lang.IllegalArgumentException: The frontend sent an unexpected list of classes ([“hudson.maven.local_repo.DefaultLocalRepositoryLocator”,“hudson.maven.local_repo.PerExecutorLocalRepositoryLocator”,“hudson.maven.local_repo.PerJobLocalRepositoryLocator”]) rather than an expected single class. See https://www.jenkins.io/doc/developer/views/table-to-div-migration/ for more information. at org.kohsuke.stapler.RequestImplKaTeX parse error: Expected '}', got 'EOF' at end of input: …toryLocator"],"class":[“hudson.maven.local_repo.DefaultLocalRepositoryLocator”,“hudson.maven.local_repo.PerExecutorLocalRepositoryLocator”,“hudson.maven.local_repo.PerJobLocalRepositoryLocator”]} Logging ID=4fd9ffd3-7c36-4bf6-8cd8-0df64019af6e

    构建项目报错

    /usr/local/java/apache-maven-3.2.5/bin/mvn -s /usr/local/java/apache-maven-3.2.5/conf/settings.xml -gs /usr/local/java/apache-maven-3.2.5/conf/settings.xml clean install -Dmaven.test.skip=true

    Error occurred during initialization of VM Unable to load native library: libnsl.so.1: cannot open shared object file: No such file or directory Build step ‘Invoke top-level Maven targets’ marked build as failure

    错误分析

    当 JVM 启动时,它需要加载一些本地库文件。在这个错误里,JVM 试图加载 libnsl.so.1,但系统找不到这个文件。libnsl.so.1 是一个用于网络服务的共享库,在较新的 Linux 发行版中可能默认没有安装或者链接已被移除。 需要安装libnsl

    #yum install libnsl

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Jenkins 整体打包迁移服务器并升级最新版本
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!