系統(tǒng)運(yùn)維
本次實(shí)驗(yàn)介紹:
nginx:web網(wǎng)站
svn:代碼存儲(chǔ)倉(cāng)庫(kù)
jenkins:自動(dòng)化運(yùn)維工具
開(kāi)發(fā)人員通過(guò)將代碼提交到svn上,運(yùn)維人員通過(guò)配置jenkins自動(dòng)發(fā)布到nginx目錄上。
實(shí)驗(yàn)環(huán)境:
192.168.0.188 Jenkins
192.168.0.189 nginx
192.168.0.19 svn
Jenkins、nginx、svn環(huán)境都已經(jīng)準(zhǔn)備完成,這里不進(jìn)行再次搭建
步驟:
1.Jenkins安裝ssh插件,并配置遠(yuǎn)程服務(wù)器
2.建立項(xiàng)目(job)配置Jenkins
3.將代碼上傳svn
4.用Jenkins發(fā)布文件
5.查看測(cè)試結(jié)果
1.Jenkins安裝ssh插件,并配置遠(yuǎn)程服務(wù)器
在Jenkins系統(tǒng)管理——插件管理
選擇插件publish over ssh插件并安裝,已安裝則忽略
安裝完成后開(kāi)始配置系統(tǒng)管理——系統(tǒng)配置
翻到最后面,找到SSH Servers 選項(xiàng)然后新增
測(cè)試是可以連接保存即可
釋義:
SSH Server配置為Publish Over SSH中運(yùn)程機(jī)的配置,分“基本設(shè)置”和“高級(jí)設(shè)置”兩部分?!盎驹O(shè)置”主要是運(yùn)程機(jī)IP、SSHusername、SSHport、連接超時(shí)時(shí)間等。“高級(jí)設(shè)置”和大部分“全局設(shè)置”中的選項(xiàng)相同。
Name:建立這臺(tái)機(jī)器的名稱(chēng)
Hostname:遠(yuǎn)程機(jī)器的地址,最好是ip地址
Username:用戶(hù)名
Remote Directory:遠(yuǎn)程目錄
Use password authentication, or use a different key:使用密碼連接
高級(jí)設(shè)置
高級(jí)設(shè)置里能夠設(shè)置SSHport、重試時(shí)間以及又一次設(shè)置“全局設(shè)置”中的選項(xiàng)
全局配置:
每一項(xiàng)都能夠被SSH Server的設(shè)置所覆蓋,這種設(shè)計(jì)有一個(gè)優(yōu)點(diǎn)。在server環(huán)境比較規(guī)范的情況下,能夠省去每個(gè)SSH Server分別配置的繁瑣步驟。
參數(shù)說(shuō)明
Passphrase:SSH的password
使用username/password登錄時(shí)為username的password。使用私鑰登錄時(shí)為私鑰的password。
Path to key:SSH私鑰的文件路徑
私鑰文件的路徑,能夠是絕對(duì)路徑。也能夠是相對(duì)$JENKINS_HOME的相對(duì)路徑
Key:私鑰
私鑰導(dǎo)出后的文本內(nèi)容
擴(kuò)展例子:如果不使用密碼而使用秘鑰遠(yuǎn)程連接該怎么做呢1.jenkins所在服務(wù)器生成公私鑰對(duì)2.將公鑰(idrsa.pub)傳到要遠(yuǎn)程的機(jī)器上或者將公鑰內(nèi)容輸入到遠(yuǎn)程機(jī)器authorizedkeys文件中(/root/.ssh/authorizedkeys)chmod 600 /root/.ssh/authorizedkeys3.jenkins設(shè)置私鑰所在路徑文件,在輸入生成公私鑰的密碼即可(Passphrase/Password字段需要輸入公私鑰密碼)(Path to key字段輸入jenkins所在服務(wù)器的私鑰文件所在路徑)
假設(shè)“Key”和“Path to key”都設(shè)置,則“Key”的優(yōu)先級(jí)較高,私鑰的password是“Passphrase”中設(shè)置的內(nèi)容。
Disable exec:禁止在目標(biāo)機(jī)上運(yùn)行命令
勾選后將會(huì)忽略在Job配置中“Exec command”選項(xiàng)中設(shè)置的命令。Jenkins的說(shuō)明文檔中的“The Disable exec in the advanced settings for individual configurations will be ignored.”沒(méi)有全然理解。從實(shí)際效果來(lái)看,僅僅要“Disable exec”被勾選后,無(wú)論SSH Server中是否勾選“Disable exec”。Job中設(shè)置的命令都將補(bǔ)忽略。
2.建立job任務(wù)
點(diǎn)擊新建任務(wù)
輸入名稱(chēng),并選擇自由風(fēng)格項(xiàng)目然后確定
源碼管理選擇svn
其中
Repository URL:項(xiàng)目的svn地址
Credentials:憑證
點(diǎn)擊添加,添加相應(yīng)用戶(hù)名即可
選擇構(gòu)建后操作,選擇send build artifacts over SSH
參數(shù)說(shuō)明:
Name
“系統(tǒng)管理>系統(tǒng)設(shè)置”設(shè)置的SSH Sverver的名字列表。
Source files
拷貝到運(yùn)程機(jī)上的文件。相對(duì)workspace的路徑,也支持表達(dá)式,如上圖中的“*/.war”。
Remove prefix
文件復(fù)制時(shí)要過(guò)濾的文件夾,如上圖中的target文件夾。
Remote directory
文件得到到遠(yuǎn)程機(jī)上的文件夾,此文件夾是相對(duì)于“SSH Server”中的“Remote directory”的。假設(shè)不存在將會(huì)自己主動(dòng)創(chuàng)建。
Exec command
在這里能夠填寫(xiě)在運(yùn)程機(jī)器上運(yùn)行的腳本,如:應(yīng)用部署腳本
這里是直接將svn發(fā)布文件拷到nginx發(fā)布目錄上,也可以將遠(yuǎn)程目錄修改其他的,然后運(yùn)行命令拷貝到nginx上也可,這種方法比較安全
這是nginx發(fā)布前
修改文件將文件傳到svn
點(diǎn)擊構(gòu)建
查看日志
刷新頁(yè)面,發(fā)布成功