国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
基于jenkins結(jié)合svn、ansible、shell和mysql版本遷移實(shí)現(xiàn)多服務(wù)器批量發(fā)布

hello,大家好! 由于工作原因,本篇博文遲遲沒(méi)有發(fā)布上來(lái),在此深表歉意!因宅鳥作為一個(gè)老鳥,還有很多東西需要和大家分享,所以宅鳥有意將本篇博文作為Jenkins持續(xù)集成自動(dòng)測(cè)試部署系列的收尾之篇,關(guān)于這方面的話題,有感興趣的同學(xué)可以線下交流分享。

廢話不在多說(shuō),本篇是在上篇 基于Jenkins 實(shí)現(xiàn)php項(xiàng)目的自動(dòng)化測(cè)試、自動(dòng)打包和自動(dòng)部署 基礎(chǔ)上,更深一層更具有實(shí)戰(zhàn)性質(zhì),完全是線上環(huán)境.本篇有一點(diǎn)難度,如果有看不懂的同學(xué)請(qǐng)從本系列第一篇讀起,如果有條件的同學(xué)可以自己搭建環(huán)境動(dòng)手試試。由于本篇需要包含的內(nèi)容比較多,所以某些細(xì)節(jié)不會(huì)再啰嗦。


由于生產(chǎn)環(huán)境下網(wǎng)絡(luò)拓?fù)浔容^復(fù)雜,下面宅鳥給出一個(gè)簡(jiǎn)化版的網(wǎng)路拓?fù)鋱D.


如果所示,我們目前有的資源是分別是:

公司內(nèi)網(wǎng):

1 svn server 代碼版本庫(kù)

2 jenkins 持續(xù)集成服務(wù)器

公司公網(wǎng)服務(wù)器資源:

webserver1 公網(wǎng)測(cè)試服務(wù)器

webserver2,webserver3公網(wǎng)正式服務(wù)器

db1,db2公網(wǎng)正式db


拿到這些資源我們?cè)撛趺匆?guī)劃部署我們的webapp到這些服務(wù)器呢?

我們以phpweb為例,假設(shè)所有webserver都已經(jīng)安裝好lnmp環(huán)境,dbserver已經(jīng)安裝好mysql環(huán)境


需要注意一點(diǎn),boss要求所有公網(wǎng)生產(chǎn)服務(wù)器必須通過(guò)跳板機(jī)登錄,并且所有部署到生產(chǎn)服務(wù)器的代碼都需要在svn源碼庫(kù)和線上服務(wù)器上都有歷史記錄,一旦程序發(fā)布后,有問(wèn)題,可以方便回滾到之前穩(wěn)定版本。


在這種清空下,我們?cè)撊绾我?guī)劃部署我們的程序呢?


下面宅鳥給出自己的解決方案:(本例以cms系統(tǒng)為例)

1、在Jenkins系統(tǒng)中創(chuàng)建一個(gè)deploy_cmsv4_to_dev的job,在該jobs配置中添加svn源代碼地址,通過(guò)自動(dòng)化單元集成測(cè)試后,打包,然后通過(guò)Jenkins發(fā)布到測(cè)試服務(wù)器webserver1上,然后再進(jìn)行人工測(cè)試,確定無(wú)誤后,再在jenkins上給本次構(gòu)建打tag,并在tag上注明版本日期等。

2、在Jenkins系統(tǒng)中再創(chuàng)建一個(gè)deploy_cmsv4_to_production的項(xiàng)目,該job發(fā)布時(shí),引用剛已在deploy_cmsv4_to_dev的job中已經(jīng)打好的tag,然后通過(guò)Jenkins把程序打包通過(guò)ssh上傳到指定目錄,然后通過(guò)跳板機(jī)把程序包發(fā)布到正式公網(wǎng)服務(wù)器(跳板機(jī)上需要安裝自動(dòng)化部署工具ansible,進(jìn)行實(shí)現(xiàn)批量部署功能)。


關(guān)于ansible的安裝在此不做詳解。有感興趣的同學(xué)可點(diǎn)擊這里,但需要注意的是需要配置好跳板機(jī)到公網(wǎng)上服務(wù)器上ssh免密碼登錄,以及在ansible的配置中添加公網(wǎng)webServerIp地址列表.

這里只做技術(shù)交流與分享,本篇涉及到公司公網(wǎng)ip地址以及涉及商業(yè)機(jī)密的地方均使用畫圖工具遮蓋,給各位同學(xué)帶來(lái)不閱讀不便,深表歉意!


下面開(kāi)始宅鳥的部署之旅:


第一步開(kāi)始創(chuàng)建一個(gè)自由風(fēng)格的到測(cè)試服務(wù)器上的job:deploy-cmsv4-to-dev ,進(jìn)入配置界面 如圖:





在源碼管理下選擇Subversion:

添加上項(xiàng)目svn地址如圖:


然后在增加構(gòu)建步驟中選擇Invoke Phing targets:

添加自動(dòng)測(cè)試和打包的target,target名稱對(duì)應(yīng)項(xiàng)目根目錄下的build.xml文件


然后在 增加構(gòu)建步驟 中選擇 Send files or execute commands over SSh:



最后 在 增加構(gòu)建后操作步驟 中 選擇:Archive the artifacts  存檔打包文件:

配置完畢后,我們就可以構(gòu)建本job.

點(diǎn)擊左上側(cè)“立即構(gòu)建”:

我們就可以看到一個(gè)job開(kāi)始執(zhí)行,完畢后查看查看控制臺(tái)輸出結(jié)果如圖所示:



然后登錄測(cè)試服務(wù)器webserver1上到發(fā)布的目錄下查看是結(jié)果如圖:

注意:last本次發(fā)布上一個(gè)版本


該項(xiàng)目中所有的配置文件(包括db,webapp,crontab,nginx等)均使用軟連從程序目錄config下鏈接過(guò)來(lái)的.

如圖展示數(shù)據(jù)庫(kù)遷移的配置文件的鏈接,其它配置文件亦是如此,不在啰嗦.



下面來(lái)看一下程序發(fā)布的歷史版本列表:


到此,公網(wǎng)測(cè)試服務(wù)器web程序發(fā)布完畢,然后就進(jìn)入人工測(cè)試,測(cè)試通過(guò)后,就可以在jenkins服務(wù)器上給本次構(gòu)建打tag然后就可以發(fā)到公網(wǎng)服務(wù)器了。

在jenkins上給job打tag此處略去,給大家看一下宅鳥之前在發(fā)布程序時(shí)所打過(guò)的tag,如下圖所示,右邊顯示

標(biāo)記的表示已打tag。




下面我們開(kāi)始介紹公網(wǎng)服務(wù)器程序的發(fā)布過(guò)程:

第一步、建一個(gè)自由風(fēng)格的job名字為deploy-cmsv4-to-production

在job配置中選中"構(gòu)建化參數(shù)過(guò)程"復(fù)選框

選擇 List Subversion tags(and more),然后填寫svn地址等如下信息



然后再添加一個(gè)choice ,添加我們需要部署的服務(wù)器組,該地方的組名稱需要在 跳板機(jī)的ansible配置文件中指定,并且給部署組指定一組webserver ip列表



注:Choices可以添加多個(gè)服務(wù)器組(在ansible中指定,這里我們?cè)赾ms_app_servers名稱下指定了三臺(tái)linux服務(wù)器做為webserver).



在源代碼管理中填寫如下配置:


下面再增加打包targets:



再添加發(fā)布步驟: 選擇 "send file or execute commands over SSH"



最后存檔:


到此,生產(chǎn)服務(wù)器部署配置已經(jīng)完成,下面就可以發(fā)布了。

選擇Jenkins左上方的 "Build with Parameters"

如圖顯示,上面的下拉菜單是 我們已經(jīng)打好的tag列表,下面是部署服務(wù)器群組列表:


然后點(diǎn)擊"開(kāi)始構(gòu)建" jenkins就會(huì)按照我們事配置好的項(xiàng),開(kāi)始發(fā)布web程序了。

在控制臺(tái)輸出信息中最后一行出現(xiàn)“Finished: SUCCESS”,表示發(fā)布已經(jīng)成功。這樣我們可以登錄到生產(chǎn)服務(wù)器上查看我們已發(fā)布的程序。


數(shù)據(jù)庫(kù)升遷版本列表: 關(guān)于mysql遷移 不熟悉的同學(xué)可參看 宅鳥的另一篇博文:Mysql遷移工具在生產(chǎn)環(huán)境下的使用





我們通過(guò)跳板機(jī)到服務(wù)器下去:

先登錄到cms-app-1,然后到網(wǎng)站目錄下查看通過(guò)ls -l |grep cmsv4命令查看結(jié)果如圖:


登錄到cms-app-2,結(jié)果同cms-app-1如圖:


我們?cè)贆z查一下nginx的配置:

再登錄到cms-app-3 結(jié)果亦然,至此我們的程序已經(jīng)發(fā)布完畢。


仔細(xì)閱讀的同學(xué)可能已經(jīng)注意到在deploy-cmsv4-to-dev&deploy-cmsv4-to-production -> configure "Send files or execute commands over SSH"的"Exec command" 文本列表最后一條shell命令:

cmsv4.${BUILD_NUMBER}.${BUILD_ID}/config/install.sh  ${BUILD_NUMBER} ${BUILD_ID}

這個(gè)config文件夾下的install.sh腳本,是宅鳥根據(jù)自己公司的業(yè)務(wù)要求邏輯自己編寫的,有興趣的同學(xué)可以自己試著根據(jù)自己公司的業(yè)務(wù)需求自己編寫以實(shí)現(xiàn)需求。



在此宅鳥給出一個(gè)install的簡(jiǎn)單實(shí)例(假設(shè)我們的項(xiàng)目名為myweb):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
#created by lihuibin
#date 2014-01-15
#deploy web app to production install script
build_number=$1
build_id=$2
db_version="max_version"
myweb_path=/webdir/myweb/myweb.$build_number.$build_id
#項(xiàng)目配置文件
config_path=$myweb_path/config.php
ln -s $myweb_path/config/config.php  $config_path
#crontab
ln -s   $myweb_path/config/crontab.txt  /etc/cron.d/myweb
#初始化數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在則自動(dòng)創(chuàng)建
/usr/bin/php $myweb_path/mysqlMigrations/migrate.php init
if [ $? -ne 0 ];then
  echo "db version table init:"$?
  exit 1
fi
#列出線上數(shù)據(jù)庫(kù)版本
/usr/bin/php $myweb_path/mysqlMigrations/migrate.php list
if [ $? -ne 0 ];then
  echo "db version list:"$?
  exit 1
fi
#更新數(shù)據(jù)庫(kù)到最大版本
/usr/bin/php $myweb_path/mysqlMigrations/migrate.php  up $db_version
if [ $? -ne 0 ];then
  echo "db update:"$?
  exit 1
fi
#查看遷升后數(shù)據(jù)庫(kù)版本列表,及當(dāng)前數(shù)據(jù)庫(kù)版本
/usr/bin/php $myweb_path/mysqlMigrations/migrate.php list
#web切換,給老版本改名,并且新版本程序接手老版本程序開(kāi)始工作
web_path="/htdocs/myweb"
uploads='/webdir/myweb/uploaded'
if [ -L $web_path ];then
  ln -sfn $(readlink -f "/htdocs/myweb") "/htdocs/myweb_last"
  ln -sfn  $myweb_path $web_path
  echo "$myweb_path   $web_path  ln -s  :"$?
else
  if [ -d $web_path ];then
      mv -f $web_path"/uploaded" $uploads
      mv -f $web_path "/webdir/myweb/myweb_lagacy"
      ln -sfn  $myweb_path $web_path
      ln -sfn "/webdir/myweb/myweb_lagacy" "/htdocs/myweb_last"
  else
    ln -s  $myweb_path $web_path
    if [ ! -d "$uploads" ]; then
        mkdir -p $uploads
        chown -R www-data:www-data  $uploads
    fi
  fi
fi
ln -s  $uploads $myweb_path/uploaded
#賦權(quán)限
chown -R www-data:www-data  $myweb_path
#重新加載php5-fpm
/etc/init.d/php5-fpm reload
#nginx應(yīng)用新配置
nginx=/etc/nginx/sites-enabled/myweb.conf
if [ -f $nginx ];then
 rm $nginx
fi
ln -s $myweb_path/config/myweb.conf $nginx
#nginx加載新配置
/etc/init.d/nginx reload
#刪除臨時(shí)文件
rm -rf /tmp/myweb.*
echo "/tmp/myweb.* rm -rf:"$?

好了,關(guān)于宅鳥的部署系列博文到此告一段落。還有更多關(guān)于持續(xù)集成發(fā)布以及jenkins與git的集成等方面的話題,有機(jī)會(huì)再聊一聊。

對(duì)支持宅鳥的讀者,宅鳥在此表示感謝!歡迎關(guān)注宅鳥博客下一系列關(guān)于nginx方面的話題!



本文出自 “宅鳥樂(lè)園” 博客,請(qǐng)務(wù)必保留此出處http://birdinroom.blog.51cto.com/7740375/1351875

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Jenkins 的svn插件下載的代碼不是最新代碼的問(wèn)題
一種云計(jì)算技術(shù)在配網(wǎng)監(jiān)控系統(tǒng)持續(xù)集成方案中的運(yùn)用
Jenkins+Ansible+GitLab持續(xù)交付平臺(tái)搭建-第2篇
《jenkins2.x持續(xù)集成部署教程》(4)創(chuàng)建項(xiàng)目
Windows平臺(tái)下SVN版本控制系統(tǒng)的搭建
7個(gè)變革DevOps的工具
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服