使用 Tomcat部署 war包,不同的環境需要不同的配置,war包是同一個。那么如何動態修改這個properties屬性文件?
這里有很多種做法,最直接的就是拉取war后,先修改war包里值,然后再啟動(這種方法我沒有嘗試)。
我要說的是另一種,不修改war包,只修改war包解壓后的屬性文件。如果直接修改對應路徑的文件,往往會報錯 No such file or directory。我這邊利用的是 Tomcat 啟動兩次不會再次解壓war 包 的特性來實現。
以下是腳本的精簡版,目的是往demo.war 里的application.properties 文件里追加一行配置 csrf.white.referer=localhost
修改前的代碼
#!/bin/bash set -x #查找進程號,直接殺進程 pidNum=`ps -ef |grep tomcat_bing |grep -v "grep"|awk '{print $2}'` kill -9 $pidNum sleep 5 cd /home/tomcat_bing/webapps rm -rf demo #備份 mv demo.war ../ rm -rf demo.war #wget命令從ftp服務器拉取war包 wget http://172.xx.xx.123/bing/demo.war #啟動tomcat包 nohup /home/tomcat_bing/bin/startup.sh &
修改后的代碼,在修改前的代碼后面增加以下內容
sleep 10s #再次殺進程 pidNum=`ps -ef |grep tomcat_8092 |grep -v "grep"|awk '{print $2}'` kill -9 $pidNum sleep 5 #properties里追加內容,先追加一句空白,否則可能不會換行 echo "" >> /home/tomcat_bing/webapps/demo/WEB-INF/classes/application.properties echo "csrf.white.referer=localhost" >> /home/tomcat_bing/webapps/demo/WEB-INF/classes/application.properties #不使用追加的方法,用cp命令復制,也是極好的 #重新啟動 nohup /home/tomcat_bing/bin/startup.sh &
原創文章,歡迎轉載,轉載請注明出處!