一、svn目錄組織結構說明
--branch 分支,為測試時使用,幾天以上的項目必須開分支,測試需要本分支通過,主線合并到分支通過,才能合并到主線進行測試
--tags 版本記錄使用
--trunk 主線,與正式線相對應,當天不上線檔案不允許送出
二、中型企業上線解決方案
<a href="http://s3.51cto.com/wyfs02/M01/6E/A1/wKioL1WBQ2_iRX0zAAWtWmNWWTc740.jpg" target="_blank"></a>
規範運維人員操作步聚,制這統一操作腳本,備份檔案名稱,備份檔案路徑。使操作人性化,統一化.
三、大型公司解決上線方案
<a href="http://s3.51cto.com/wyfs02/M00/6E/A1/wKioL1WBRCXAIlgxAANkXbYy5dk779.jpg" target="_blank"></a>
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).開發團隊小組測試環境測試(該測試環境屬于開發小組),有問題傳回給某開發人員重新開發。
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方式
本文轉自 zouqingyun 51CTO部落格,原文連結:http://blog.51cto.com/zouqingyun/1662869,如需轉載請自行聯系原作者