相關背景
之前在Ubuntu平臺上搭建了Jenkins(在Ubuntu機器上使用war包安裝Jenkins),現在由於一些需求,需要將系統遷移到AlmaLinux平臺。由於AlmaLinux屬於CentOS系列,與Ubuntu所屬的Debian系列不同,在此記錄一下遷移中遇到的問題。
問題1:賬號沒有sudo許可權
現象:根據Linux機器自建賬號並賦予sudo許可權,同時修改遠端埠建立CentOS的賬號並加入wheel組後,發現新賬號無法sudo
解決:/etc/sudoers檔案中,wheel組的sudo許可權被預設註釋,需取消註釋使其生效
檔案預設為只讀,可透過chmod u+w /etc/sudoers
增加寫許可權,編輯完成後透過chmod u-w /etc/sudoers
撤銷寫許可權,也可以編輯後使用:wq!
來強制儲存
%wheel ALL=(ALL) ALL
或者可以選擇將使用者加入sudoers組,不過使用者在sudo時會不需要輸入密碼
gpasswd -a <username> sudoers
問題2:ssh無法透過密碼登入
現象:/etc/ssh/sshd_config中PasswordAuthentication設為yes,但ssh遠端時,依舊提示公鑰驗證失敗,只能透過在authorized_keys中新增公鑰來登入
解決:sshd_config中include了sshd_config.d資料夾中的配置,該配置優先順序高於sshd_config檔案(sshd_config.d資料夾中同名配置,檔名靠前的覆蓋靠後的),其中將PasswordAuthentication設為了no,修改對應配置後可以透過密碼遠端
問題3:中文顯示亂碼,且執行yum命令時提示“Failed to set locale, defaulting to C.UTF-8”
現象:複製到系統中的檔案中,中文顯示亂碼,本地執行yum命令,第一行會提示“Failed to set locale, defaulting to C.UTF-8”
解決:調整系統語言環境
首先切換至root賬號,並安裝語言包
yum install glibc-langpack-zh
yum install glibc-langpack-en
然後設定語言環境
echo "export LC_ALL=en_US.UTF-8" >> /etc/profile
source /etc/profile
之後再執行yum命令就不會有該提示了,中文也能正常顯示
問題4:啟動jenkins提示許可權不夠
現象:根據在Ubuntu機器上使用war包安裝Jenkins新增jenkins.sh後,執行./jenkins.sh start提示許可權不夠
解決:檔案沒有執行許可權,先執行一次chmod +x jenkins.sh
後,即可執行
問題5:maven執行時,未使用系統指定的jdk
現象:系統執行java -version
和javac -version
返回的是jdk 8,但執行mvn -v
返回使用的是jdk 11
解決:透過檢視/usr/bin/mvn的內容可以發現,當系統環境變數未指定JAVA_HOME時,會使用/etc/java/maven.conf中的配置,而yum安裝maven時,會預設附帶安裝jdk 11,並在其中將配置指向jdk 11,註釋掉該配置後,會使用系統預設jdk
問題6:jenkins無法透過ssh私鑰連線node機器
現象:之前未解決問題2時,無法透過密碼連線節點機,因此改用金鑰形式,在節點機authorized_keys新增公鑰,jenkins新增私鑰憑據,但是連線節點機失敗
解決:舊版本jenkins(我的是2.356)不支援較新的ssh金鑰,之前是透過ssh-keygen -t rsa -C "almallinux jenkins"
來生成金鑰,現改用舊版本的金鑰生成方式
ssh-keygen -m PEM -t rsa -C "almalinux jenkins"
問題7:Jenkins Start Job(Jenkins中HTML報告無法正常顯示問題解決)執行失敗
現象:執行job時,報錯“org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException: script not yet approved for use”
解決:在Manage Jenkins → In-process Script Approval中審批透過該指令碼
問題8:Jenkins控制檯輸出中文顯示亂碼,且程式碼中中文無法正常展示,中文名任務無法在節點機建立目錄
現象:Jenkins控制檯輸出無法正常顯示中文,指令碼中有中文無法執行,傳送郵件中文亂碼,執行中文名稱任務會直接失敗
解決:修改環境變數和啟動配置
- 節點機配置中,JVM選項設定
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
- 啟動Jenkins的指令碼中,增加JVM引數
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
(原文章中的指令碼已修改) - Jenkins系統設定的全域性屬性中,增加環境變數,鍵為JAVA_TOOL_OPTIONS,值為
-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
- 設定系統環境變數
echo "export JAVA_TOOL_OPTIONS=\"-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8\"" >> /etc/profile source /etc/profile