linux下svn定時更新項目
方法一、用shell腳本定時更新項目
1、進入網站的根目錄,假設項目位置放在/var/www/test
cd /var/www/test
2、建立腳本文件update.sh,分兩步進行.首先利用touch命令創建,之後使用vim進行編輯.
touch update.sh
vim update.sh
輸入以下內容
#!/bin/sh
while true
do
svn update --username 你的svn用戶名 --password 你的svn密碼
sleep 60
done
這裏我設置的是sleep 60,即每隔60秒更新一次,數值大小可隨個人需求而定.不建議間隔時間太短.
在後臺執行這段腳本
nohup ./update.sh
會產生一個nohup.out記錄更新信息。或用
nohup ./update.sh > update.out
這種定時更新方法還不夠,因爲如果服務器重啓的話就沒了,我們可以把它寫到啓動項裏邊
vim /etc/rc.local
添加
nohup /var/www/shop/update.out > /var/www/shop/update.out
方法二、用linux計劃任務,這種方式很簡單。
crontab -e
或者vim /etc/crontab
或者vim /var/spool/cron/root
在新的一行中添加
*/1 * * * * /usr/bin/svn update /var/www/shop --username dxk --password 123465--no-auth-cache > /var/www/shop/update.log
這裏每隔1分鐘更新一次,並把記錄寫到update.log中
重啓服務
service crond restart
這裏主要是使用的定時方式來更新svn項目,用於本地局域網服務器還是可以接受的,但是用於萬維網服務器就有點得不償失了。另一種辦法就是利用post-commit鉤子的方法,在每一次用戶提交的時候,服務器上自動同步完成更新動作,減小了服務器壓力。`
來源: <http://blog.sina.com.cn/s/blog_920dea7a01014nm8.html>
具體操作詳見:[Linux下svn自動更新web]
svn 項目中的 hooks 文件中的 post-commit(該文件夾下有 tmp文件 去除後綴即可)
post-commit
#!/bin/sh
export LANG=zh_CN.GBK #svn 編碼是GBK
export LANG=en_US.UTF-8 #svn 編碼是UTF-8
svn up --username=test --password=test --no-auth-cache --non-interactive /var/www/test
(橙色部分根據自己的信息填寫)
設置過程中需要注意到的主要有兩點:
1.svn的編碼
2.post-commit 權限 設置成 777
來源: <http://blog.sina.com.cn/s/blog_920dea7a01015cip.html>