Rory's Blog
          Happy study,Happy work,Happy life
          posts - 22,  comments - 46,  trackbacks - 0
          我們的項(xiàng)目比較特殊,基本上每天都要發(fā)布一次。為了不影響系統(tǒng)的正常使用,我們的做法是在下班之前把打包好的war放到服務(wù)器的一個目錄下面(eg:d:\bak)。然后用windows的計(jì)劃任務(wù)在晚上12點(diǎn)自動部署系統(tǒng),也就是net stop tomcat,刪除xx.war,刪除xx,然后把d:\bak\xx.war拷貝到webapps下面。然后再net start tomcat。這樣在第二天來的上班的時候就可以使用升級過的系統(tǒng)了。也不會影響其他人的使用,不需要中斷操作。
          ??? 關(guān)于項(xiàng)目的一個配置我的前幾篇文章我也提到過,那個upload的問題就不會發(fā)生了。還有就是關(guān)于項(xiàng)目開發(fā)中的一些問題。比如數(shù)據(jù)庫的連接地址,upload directory的配置等,這些在團(tuán)隊(duì)中的每個人都是不一樣的,那么在發(fā)布的時候都要改成服務(wù)器上的正確配置,如果一個月部署一次這到?jīng)]有什么。但是像我們這樣每天部署就不是那么輕松了。而且如果一時不注意很容易造成配置的不正確。所以對于很多配置文件我們都有兩份。一份是用戶自己開發(fā)用的,一份是部署到服務(wù)器的配置,這樣在開發(fā)的時候團(tuán)隊(duì)中的每個人都不一樣,關(guān)于服務(wù)器的配置都是一樣的,在發(fā)布的時候是用的服務(wù)器的配置而不是用開發(fā)用的配置。eg:web.xml(個人的配置)web-dest.xml 而關(guān)鍵的配置也就是下面這段。
          web.xml
          ????<context-param>
          ????????
          <param-name>contextConfigLocation</param-name>
          ????????
          <param-value>
          ????????????classpath:spring/*_context.xml,
          ????????????classpath:spring/global.xml?

          ????????
          </param-value>
          ????
          </context-param>
          web-dest.xml
          ????<context-param>
          ????????
          <param-name>contextConfigLocation</param-name>
          ????????
          <param-value>
          ????????????classpath:spring/*_context.xml,
          ????????????classpath:spring/global-dest.xml,
          ????????????classpath:spring/scheduler.xml
          ????????
          </param-value>
          ????
          </context-param>
          注意到其中不一樣的。dest里少了scheduler.xml這個主要是定時執(zhí)行的一些任務(wù),一般在開發(fā)的時候都不需要,去掉也可以提升速度,也不會出現(xiàn)那么多的log。還有就是發(fā)布的web.xml用了global-dest.xml這個是關(guān)于spring的總的配置。
          global.xml
          ????<bean?id="dataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.240:1433/fivefortunes;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          ????
          ????
          <bean?id="dataSource2"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.240:1433/outmail;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          ????
          ????
          <bean?id="customDataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.240:1433/custom;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          global-dest.xml
          ????<bean?id="dataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.5:1433/fivefortunes;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          ????
          ????
          <bean?id="dataSource2"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.5:1433/outmail;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          ????
          ????
          <bean?id="customDataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">
          ????????
          <property?name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
          ????????
          <property?name="url">
          ????????????
          <value>jdbc:jtds:sqlserver://192.168.0.5:1433/custom;SelectMethod=cursor</value>
          ????????????
          </property>
          ????????
          <property?name="username"><value>sa</value></property>
          ????????
          <property?name="password"><value></value></property>
          ????
          </bean>
          還有關(guān)于一些properties文件我們采用了用ant部署的時候改名字來達(dá)到目的。
          build.xml
          ????????<move?file="${dist.dir}/mail.properties"?tofile="${dist.dir}/mail-dev.properties"?/>
          ????????
          <copy?file="${dist.dir}/mail-dest.properties"?tofile="${dist.dir}/mail.properties"?/>
          ????????
          <move?file="${dist.dir}/upload.properties"?tofile="${dist.dir}/upload-dev.properties"?/>
          ????????
          <copy?file="${dist.dir}/upload-dest.properties"?tofile="${dist.dir}/upload.properties"?/>

          這個是在war之前做的,大家眼看也就明白吧,就是把xx-dest.properties,改名成xx.propeties。在打完包之后
          ????????<move?file="${dist.dir}/mail-dev.properties"?tofile="${dist.dir}/mail.properties"?/>
          ????????
          <move?file="${dist.dir}/upload-dev.properties"?tofile="${dist.dir}/upload.properties"?/>
          這樣就達(dá)到了我們無憂的目的了。只要每天部署的時候保證程序能正常運(yùn)行,ant war一下就安心部署吧。
          以上就是全部內(nèi)容,如果有什么不正確歡迎砸板磚。
          posted on 2006-04-28 22:27 莫多 閱讀(2691) 評論(3)  編輯  收藏 所屬分類: Other

          FeedBack:
          # re: 用ant進(jìn)行項(xiàng)目無憂部署
          2006-04-29 11:39 | ttt
          也太笨了吧.tomcat本身有undeloy,deploy ,reload ant task的.  回復(fù)  更多評論
            
          # re: 用ant進(jìn)行項(xiàng)目無憂部署
          2006-04-29 11:59 | 莫多
          哦是么?沒有用過。原意賜教。  回復(fù)  更多評論
            
          # re: 用ant進(jìn)行項(xiàng)目無憂部署
          2006-05-13 17:10 | zouyan1218
          這樣做的好處是不依賴任何服務(wù)器。不需要在客戶的服務(wù)器上安裝任何東西,直接把war拷貝到任何目錄下,然后再命令提示符下面敲入build啟動應(yīng)用服務(wù)的命令就ok了,做到呢,“一次war,隨處應(yīng)用”。  回復(fù)  更多評論
            

          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(1)

          隨筆分類(27)

          隨筆檔案(22)

          Friends

          搜索

          •  

          積分與排名

          • 積分 - 62263
          • 排名 - 845

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桐城市| 石嘴山市| 绥棱县| 双辽市| 望谟县| 油尖旺区| 长岭县| 闸北区| 南汇区| 延边| 柳河县| 本溪市| 固阳县| 宜昌市| 拜泉县| 栾城县| 靖远县| 穆棱市| 克山县| 潼关县| 交口县| 宜宾县| 拜城县| 都安| 介休市| 建昌县| 磐安县| 辉县市| 胶南市| 黎平县| 屏山县| 江安县| 宜城市| 苍山县| 望城县| 政和县| 闻喜县| 凤冈县| 乌兰浩特市| 桦川县| 伊吾县|