標籤:vn部署大中小型企業上線解決方案
一、svn目錄組織圖說明
--branch 分支,為測試時使用,幾天以上的項目必須開分支,測試需要本分支通過,主線合并到分支通過,才能合并到主線進行測試
--tags 版本記錄使用
--trunk 主線,與正式線相對應,當天不上線檔案不允許提交
二、中型企業上線解決方案
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/A1/wKioL1WBQ2_iRX0zAAWtWmNWWTc740.jpg" title="21.png" alt="wKioL1WBQ2_iRX0zAAWtWmNWWTc740.jpg" />
規範營運人員操作步聚,制這統一操作指令碼,備份檔案名稱,備份檔案路徑。使操作人性化,統一化.
三、大型公司解決上線方案
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/A1/wKioL1WBRCXAIlgxAANkXbYy5dk779.jpg" title="20.png" alt="wKioL1WBRCXAIlgxAANkXbYy5dk779.jpg" />
1、特別是JAVA代碼環境,上線時,有數台機器同時需要更新:
1).本地開發人員取svn代碼。當天上線提交到trunk,否則,長期項目單開分支開發,然後在合并主線(trunk)
2).辦公內網開發測試時,由開發人員或配置人員通過部署平台jenkins實現統一部署,(即在部署平台上控制開發機器從svn取代碼,編譯,打包,發布到開發機包如id_dep.war).
3).開發人員通知測試人員或一起測試,沒有問題後,打上tag標記。
4).配置管管理員,根據上步的tag標記,checkout出代碼,並配置好IDC測試環境的所有配置,執行編譯,打包(mvn,ant)(php不需要),然後發布到IDC內統一散發者。
5).組態管理員或SA上線人員,把分發的內容推送到相關測試伺服器(報名如id_test.war),然後通知開發及測試人員進行測試。如果有問題向上回退。
6).如果沒有問題,繼續打好tag,此時,配置上步tag標記,checkout出代碼,並配置好IDC環境所有的配置,執行編譯,打包(mvn,ant)(php不需要),然後發布到IDC內統一散發者。
7).組態管理員或SA上線人員,把分發的內容推送到相關正式伺服器(報名idc_product.war),然後通知開發及測試人員進行測試。如果沒有問題直接發布復原指令。
IDC正式上線的過程對於JAVA程式,可以是AB組分組上線的思路,即平滑下線一半的伺服器,然後發布更新代碼測試,無問題後,掛上伺服器,同時在平滑下線另一半的伺服器,然後發布更新代碼測試(或者直接發布後就掛上線)
對於PHP上線方法:發布時可以用發布到正式線臨時目錄 ,然後mv或更改link的方式發布到正式上線目錄 ,不需要重啟
對於java上線方法:需要分組平滑下上線(如從負載平衡上摘掉部分伺服器),發布代碼後,重啟伺服器測試
2、上線解決方案注意事項
1).辦公室測試環境--IDC測試環境---正式生產環境,所有軟體均應版本統一(如:作業系統,web伺服器,jdk,php,tomcat,resin等版本)
2).Team Dev小組測試環境測試(該測試環境屬於開發小組),有問題返回給某開發人員重新開發。
3).有專門的測試工程師,程式有問題直接返回給開發人員(此時返回的一般為程式的BUG,稱為BUG庫),無問題進行IDCi測試
4).IDC測試由測試人員和營運人員參與,叫IDCtest,進行程式的壓力測試,有問題直接返回給開發人員,無問題進行線上環境上線
5).數台伺服器代碼分發上線方案舉例(JAVA程式)
A:假設同商務服務器有6台,將伺服器分為A,B兩組,A組三台,B組三台,先對A組進行從負載平衡器上平滑下線,B組正常提供服務,避免伺服器因上線影響業務。
B:下線過程是通過指令碼將A組伺服器從RS池(LVS,NGINX,HAPROXY,F5等均有平滑方案)中踢出,避免負裁均衡器將請求發送給A組伺服器(此時的時間應該為網站流量少時,一般為晚上)
C:將代碼分發到A組伺服器的網站目錄下,對A組伺服器上線並重啟服務,並由專業的測試人員進行訪問測試,測試成功後,掛上A組的伺服器,同時下線B組伺服器,B組代碼上線操作測試等和A組相同
6).特別說明:如果PHP程式,則上線可以簡單化,直接將上線代碼(最好全量)發布到所有上線伺服器的特定目錄後,分發完成後,一次性mv或ln到網站目錄,當然測試是少不了的。
7).大多數門戶的前端頁面都已經靜態或者cache了,因上經動態部分訪問平時就不會特別多
9、SVN上包含代碼和配置
(1)、SVN上存放程式碼(不含資源,大公司基本資源和程式都是分離的)
(2)、存放所有服務的設定檔(LAMP環境,如:apache的httpd.conf設定檔)
(3)、開發小組測試環境使用的設定檔
(4)、辦公測試環使用設定檔
(5)、IDC測試使用的設定檔
(6)、線上應用使用的設定檔
什麼時組態管理員?
就是在開發和營運中間起一個串連紐帶的一個職位,這個職位一般在大公司會設定,負責SVN的管理,上線管理,申請,協調等工作
四、平滑代碼上線是什麼
就是在網站代碼更新時,不影響正在瀏覽使用者的正常瀏覽網頁或其正使用的其他相關應用
五、一些軟體平滑重啟的方式
1)apache的平滑重啟
./bin/apachectl gracefull
2)nginx的平滑重啟(php-fpm的reload)
./sbin/nginx-s reload
3)nfs網路服務
/etc/init.d/nfs reload
4)lvs/haproxy的服務下載RS的操作
5)F5和Netscaler等也有相應的下線的RS方式
svn部署大中小型企業上線解決方案(四)