最近我在centos 6的系統中安裝了subversion 的 svn 服務器。同時也安裝了 nginx WEB服務器。如今我想讓 svn 提交的文件自動更新到nginx所指定的web目錄中。這樣一來,我就不須要提交以後,再經過FTP將文件上傳到nginx的web目錄,再經過瀏覽器去訪問這個web目錄裏面的腳本。因此,就有了本篇文章紀實。nginx
環境介紹:
1)系統centos 6.3 64位。
2)服務器端SVN版本 1.6.11。
3)WEB服務器nginx版本 0.8.46。
4)nginx的WEB目錄:/data0/htdocs/wwwroot
5)svn倉庫中心目錄:/opt/svn/web
配置步驟以下:
一、在svn倉庫中心下建立一個建立wwwroot,shell命令以下:shell
svnadmin create /opt/svn/wwwroot/
二、配置wwwroot建立,shell命令以下:vim
cd /opt/svn/wwwroot/conf/ vim svnserve.conf
找到如下的內容,並在行首註釋符號#刪掉。centos
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz
爲 svntest 項目增長svn用戶,而且賦予權限值:瀏覽器
vi authz
在文件中添加以下代碼:服務器
[wwwroot:/] wwwroot = rw
代碼的意思是:爲 wwwroot 項目添加一個wwwroot 的用戶,而且,這個用戶對於 wwwroot 項目擁有讀寫權限。svn
給用戶分配密碼,執行以下命令:post
vi passwd
輸入以下內容:spa
wwwroot =123456
配置好SVN以後,請查看你的 svn 是否啓動,若是沒有啓動,用如下命令啓動:
svnserve -d -r /opt/svn/
三、配置項目倉庫的鉤子配置。
能夠把鉤子當作是WEB項目與SVN項目倉庫之間的一個關聯。經過向svn項目倉庫提交腳本代碼,利用鉤子shell腳本能夠自動向web項目中將腳本文件更新過去。
進入SVN項目倉庫鉤子所在目錄,shell命令:
cd /opt/svn/wwwroot/hooks/
而後執行以下複製命令:
cp post-commit.tmpl post-commit
而後編輯post-commitshell腳本,shell命令以下:
vi post-commit
將裏面的全部代碼註釋掉,而後輸入以下代碼:
cd /data0/htdocs/wwwroot /usr/bin/svn cleanup /usr/bin/svn up /data0/htdocs/wwwroot/--username "wwwroot"--password "123456"
這個地方須要注意,咱們先進入到wwwroot目錄下進行SVN清理(cleanup),消除一些隱患。而後再執行將 svn wwwroot項目建立裏面的代碼同步更新到web項目目錄/data0/htdocs/wwwroot/中去。這裏的帳號wwwroot和密碼123456是咱們建立SVN wwwroot項目倉庫的時候指定的。
這個時候,咱們去提交一個文件到svn,這時會發如今/data0/htdocs/wwwroot/目錄下同步更新過來了。
若是沒有反應,會有兩個地方可能出錯:1)配置文件與路徑寫得不對,能夠直接經過手工方式去執行post-commit看看有沒有報錯。2)權限不對。即/data0/htdocs/wwwroot權限是否足以知足腳本的讀寫。