互聯網創業的准備——版本控制與上線


注意:此文章寫於2012-10-30,內容可能已過時,而且可能包含錯誤。

 

目前使用svn,尚未詳細學習git的分支與主干,只會git基本語法是無法實現腳本上線的,待學習。

svn目錄結構demo:

tags/
       movie_0.0.1
       movie_0.0.2
       www_0.0.1
       www_0.0.2
       pt_0.0.1

trunk/
         movie/
                   src/
                        model/
                   test/
                        model/
         www/
                   src/
                   test/
         pt/
                   src/
                   test/
branches/
              movie_0.0.2.1
              www_0.0.1.1

讀寫限制:tags是只讀的,trunk和branches是讀寫的。

一個web項目會如果規模大,會分成多個模塊開發,所以trunk下有多個模塊目錄,比如movie、www、pt。

如果人少,在trunk上開發簡單方便。如果人多,則在branches上分多個版本開發。

如果多版本並行,則只能在branches上開發,比如chrome有stable、beta、dev並行開發和發布。

服務器環境划分——簡單版:

example.com、movie.example.com、www.example.com 為internet外網線上生產環境,面向用戶。

本地和線上使用相同軟件環境,比如都安裝到/usr/local/nginx/ 端口80,nginx.conf里寫上include sites-enabled/*.conf

nginx/conf/sites-enabled/movie.example.com.conf放在svn里,如下:

server {
    listen       80;
    server_name  movie.example.com;
    root   html/movie.example.com/enabled/src/webroot/;

    location = /robots.txt {
    }
    location = /favicon.ico {
    }
    location / {
        rewrite .* /index.php last;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/usr/local/php/var/run/php-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

本地開發時,配hosts:

127.0.0.1 movie.example.com
127.0.0.1 account.example.com

內部測試時,配hosts,比如:

192.168.1.3 movie.example.com
192.168.1.3 account.example.com

線上預覽時,配hosts,比如:

 

74.125.31.161 movie.example.com
74.125.31.161 account.example.com

 

 

優點:簡單

缺點:

1、如圖所示

2、movie.example.com如何內網調用 0-0-2.account.example.com的API呢?

因為沒有0-0-2.account.example.com的外網域名,所以無法調用。

如果添加0-0-2.account.example.com這個外網域名,會導致用戶也可以訪問,造成誤解和搜索引擎收錄。

如果配hosts或限制IP,會導致一旦更換IP,就需要重新審核錄入(產品多了,更改IP的事情常有發生)。

 

服務器環境划分——完善版:

example.com、movie.example.com、www.example.com 為internet外網線上生產環境,面向用戶。

*.intra.example.com 為intranet內部網(intranet不一定是lan局域網,可能也有外網ip,比如遠程辦公使用或者ipv6全是外網ip沒有lan了),面向內部員工。

*.user.intra.example.com 個人開發調試環境,比如*.jim.user.intra.example.com解析到工程師jim的機器,開發movie項目時,域名是movie.jim.user.intra.example.com。注意:域名最大長度是253字節。

*.dev.intra.example.com 內部開發調試環境,比如trunk.movie.dev.intra.exmple.com或者0-0-3.movie.dev.intra.exmple.com。

*.prod.intra.example.com 內部線上生產環境,比如SOA業務之間api調用。比如0-0-3.movie.prod.intra.exmple.com需要調用0-0-2.account.prod.intra.exmple.com。預覽時使用0-0-3.movie.prod.intra.exmple.com,測試完成,切換生效,對外是movie.example.com。

因為安全和集中管理,雲主機或者自購服務器托管 和辦公網不在同一個內網,所以需要VPN。參考:http://ariejan.net/2010/10/11/setup-a-ubuntu-vpn-server

每個人都設置VPN pptp比較麻煩,如果路由器支持Site to Site VPN會更方便,企業級路由器大都支持(比如TP-LINK TL-WVR300 ¥299)。參考:http://zhengweiit.blog.51cto.com/1109863/519821

家用級路由器如果支持DD-WRT開源系統,就能支持Site to Site VPN。參考http://www.dd-wrt.com/wiki/index.php/OpenVPN_-_Site-to-Site_routed_VPN_between_two_routers

如果購買了開源路由器可以配置dnsmasq,很方便,待驗證企業級路由器是否支持。參考:http://www.cnblogs.com/sink_cup/archive/2012/08/17/router_dnsmasq_android_hosts.html

如果沒有買開源路由器,則需要在內網自行搭建DNS,稍微麻煩點,但性能強。dnspod免費賬戶不支持子域名泛解析,比如用外網DNS解析*.jim.user.intra.example.com。

這里以trunk開發movie項目為例:

幾個開發工程師從trunk上checkout,然后本地開發調試(movie.jim.user.intra.example.com、movie.tom.user.intra.example.com),自測完畢提交svn。

然后部署trunk到內部網的開發環境trunk.movie.dev.intra.example.com,進行開發工程師自測,如果是web,則界面測試;如果是api,則用代碼測試。

開發工程師自測通過,打tag:

svn copy trunk/movie tags/movie_0.0.2

部署tag到線上內部環境0-0-2.movie.prod.intra.example.com,進行預覽。

預覽通過,把預覽代碼切換到線上movie.example.com。

然后大家繼續在trunk上開發,線上的movie_0.0.2如果有bug,需要緊急修復,不能等到trunk下一版本再修復了,

那就建立branch:

svn copy tags/movie_0.0.2 branches/movie_0.0.2.1,

在branches上開發提交,然后打tag:

svn copy branches/movie_0.0.2.1 tags/movie_0.0.3

因為0.0.3作為一個緊急版本發布了,下一個trunk版本就會打0.0.4的tag然后發布。

 

版本號用幾位?

常用的是3位發布(tags),4位開發(branches)。

也有4位發布的,比如chrome 22.0.1229.79。

使用自增還是日期?

采用自增比較多,采用日期的少,比如:

MIUI,每周五發布,比如2.10.12版就表示 2012年10月12日。

Ubuntu,每半年發布,比如12.04版表示2012年4月,12.10版表示2012年10月,但12.04.1版是8月發布的,表示基於12.04的第1個升級版。

每位的范圍是多少?

自行參考現有的app store、google play。

如果使用3位自增 [0-99].[0-9].[0-9],第1版是0.0.1。

web每天或兩天發布一次,1年以后版本號會增長到1.8.0,5年以后會增長到9.0.0……這時候創業也該成功或失敗了吧……

小米手機的MIUI是每周發布一次,盛大bambook手機rom是每月發布一次……所以盛大不要搞了,歇着吧,項目管理能力和效率不行。

 

部署腳本:

主要功能:svn up、svn export、根據環境選擇配置文件、打包上傳、解包、重啟web server、線上生效某一版本(生效舊版本即是回滾)

多種解決方案:make、shell、phing(ant)。

make和shell都不用安裝額外的軟件,linux已經支持了,所以很方便。

phing(ant)缺點是要安裝軟件,好處是以后可以用持續集成……(算了吧,國內公司很少達到這種境界的,有點繁瑣)

這里介紹make,簡單方便。按照完善版的環境划分進行部署。

todo

 

參考資料:

http://zh.wikipedia.org/wiki/Google_Chrome

 

廣告:

創業需要PHP技術的,聯系我:http://www.cnblogs.com/sink_cup/archive/2012/10/25/chuangye.html#me


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM