基本情况说明 目前旧服务器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 启动成功,没有开启密码登录,需要设置一下密码。
参考链接 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
评论前必须登录!
注册