centos搭建SVN實錄,並部署項目(nginx)

現在用linux部署項目,感覺沒有SVN來進行遠程版本控制,多少覺得還是有些不方便,所以今天就親手在服務器搭建一個SVN服務器,把過程保存記錄在此博客上,秉承分享精神
1首先,安裝:
 . 執行命令:yum install subversion

2安裝完成後,檢測是否安裝成功,以及版本號:
.執行命令:svn --version
我的個人會出現如下提示,表明安裝成功,版本是1.6.11:
centos搭建SVN實錄,並部署項目
3.現在開始搭建svn倉庫:
執行下面兩個命令:
  (1)mkdir  -p  /opt/svn/repos
   (2)  svnadmin  create  /opt/svn/repos
執行成功後,在 /opt/svn/repos文件夾下即可看到repos下有生成了多個文件,如下圖
centos搭建SVN實錄,並部署項目
4.現在開始進入conf文件夾下開始配置:
authz文件是對用戶權限的控制,passwd是設置用戶名和密碼,svnserve.conf是針對svn的配置

4.1先設置passwd,新建用戶名和密碼:
centos搭建SVN實錄,並部署項目
4.2再設置authz權限,給剛創建的gan用戶添加完全的讀寫權限。如圖:centos搭建SVN實錄,並部署項目

5.最後設定svnserve.conf配置
anon-access = none # 使非授權用戶無法訪問
auth
-access = write # 使授權用戶有寫權限
password
-db = password
authz
-db = authz   # 訪問控制文件
realm 
= /opt/svn/repos # 認證命名空間,subversion會在認證提示裏顯示,並且作爲憑證緩存的關鍵字。
採用默認配置. 以上語句都必須頂格寫, 左側不能留空格, 否則會出錯.

6.文件配置到此基本上就OK了,現在開始啓動我們的svn服務器:
    執行命令:svnserve -d -r /opt/svn/repos
查看服務是否起來:
  執行命令:netstat -tunlp | grep svn
centos搭建SVN實錄,並部署項目

7.現在window安裝svn客戶端TortoiseSVN,輸入遠程鏈接:svn://服務器iP地址/repos,再輸入用戶名和密碼:gan   123456即可鏈接

二:部署項目到SVN上,實現本地更新同步到服務器項目:配置項目倉庫的鉤子配置
可以把鉤子看成是WEB項目於SVN項目倉庫之間的一個關聯,通過向SVN項目倉庫提交腳本代碼,利用鉤子shell腳本可以自動向web項目中將腳本文件更新過去

開始之前,首先我已經在win客戶端的tortoiseSVN先建立好項目文件目錄www了,如下圖
centos搭建SVN實錄,並部署項目


1.進入SVN項目倉庫鉤子所在的目錄,shell命令:cd /opt/svn/repos/hooks/,
然後複製備份post-commit文件:cp post-commit.tmpl post-commit
centos搭建SVN實錄,並部署項目

OK,假設我的項目文件我是假設放在/home (建議放在nginx的web目錄下)
爲了能夠讓SVN倉庫同步將項目更新過來,那麼首先需要從倉庫checkout出項目到home目錄下面,
分別執行shell命令:
   cd /home
   svn co svn://localhost/www --username gan --password 123456
此時在home目錄下你將會看到你checkout出來的項目了,接下來要開始寫觸發腳本,實現在win本地上傳更新你的項目文件的同時,同步更新倉庫內的文件。
在/opt/svn/repos/hooks目錄下打開post-commit文件,屏蔽裏面所有的未屏蔽代碼,在文件最後寫入:
cd /home/www
/usr/bin/svn cleanup
/usr/bin/svn up /home/www  --username "gan" --password "123456"


OK,最後保存退出,然後在你的window本地的tortoiseSVN客戶端上傳一個文件到www目錄下,即可發現服務器的/home/www目錄也會出現該文件。
到此整個部署就結束了

如果沒有反應,會有兩個地方可能出錯:
1)配置文件與路徑寫得不對,可以直接通過手工方式去執行post-commit看看有沒有報錯。
2)權限不對。即/home權限是否足以滿足腳本的讀寫。

最後,剩下的就是在自己的開發IDE安裝好SVN插件,然後獲取出項目,即可同步保存了,此時,服務器上的也可同步了。
我假設大家已經安裝好SVN插件了,現在我以zendstudio 這個PHP的IDE爲例,首先假設我要將我的項目放在我倉庫下wwwroot目錄下面,如圖:
centos搭建SVN實錄,並部署項目
然後在你的IDE下,選擇一個項目,右鍵單擊選擇Team->share project就會彈出選擇分享的類型,我本地也裝了git,所以會有git選項,選擇SVN,並點擊下一步,
centos搭建SVN實錄,並部署項目

第一次使用,就選擇創建新的資源庫位置,下一步;

centos搭建SVN實錄,並部署項目

OK,到了這裏,因爲我們要把項目放到wwwroot目錄下面,所以URL寫好
svn://你的服務器IP/wwwroot(這是你所要放得目錄)

centos搭建SVN實錄,並部署項目

最後一直往下點擊下一步即可,假設我上傳的項目名稱是weixin.,,接下來要做的就是將他同步更新到服務器倉庫的同時,能夠同步更新到我的web目錄下,實現我在IDE操作,同時更新我的web目錄,隨時查看到效果
 1.先用shell命令檢出我的weixin項目到我的web目錄(/home/wwwroot)下:
  cd /home/wwwroot/
   svn co svn://localhost/wwwroot/weixin --username gan --password 123456

檢出成功之後,在你的IDE添加你的新文件,然後提交,即可看到你的web目錄下也同時更新了

現附上有可能會出現的問題(網絡來源)

一問一答:
問:安裝好svn服務後在windows下用svn客戶端連接不上svn服務器?
答:一般是centos中SVN的3690端口沒有打開,使用下面方法

  1. [root@vm-moodle ~]#iptables -I INPUT -p tcp --dport 3690 -j ACCEPT  #開放3690端口  
  2. [root@vm-moodle ~]#/etc/rc.d/init.d/iptables save                  #保存配置,非常重要   
  3. [root@vm-moodle ~]#/etc/init.d/iptables status   # 查看是否已經成功:  


問:配置基於svnserve的subversion服務器後,在客戶端訪問subversion版本庫時出現這個錯誤:svnserve.conf:12: Option expected;爲什麼會出現這個錯誤呢?
答:因爲subversion讀取配置文件svnserve.conf時,無法識別有前置空格的配置文件。看下面的配置文件。

  1. [general]  
  2. ### These options control access to the repository for unauthenticated  
  3. ### and authenticated users. Valid values are "write", "read",  
  4. ### and "none". The sample settings below are the defaults.  
  5. anon-access = read  
  6.   auth-access = write  


在上面的配置文件中,anon-access是頂行的,沒問題,而auth-access就存在前置空格,會導致這個錯誤。
要避免出現這個錯誤,應該在去掉這些行前的#時,也要順手去掉前面的空格.

問:如何輸入TortoiseSVN的用戶名、密碼?
答:很多時候,爲了方便,我們在使用Tortoise時,會勾選密碼輸入框那裏的保存驗證信息。但是當我們想換一個用戶登錄時,卻可能發現不知道怎麼換用戶進行登錄。Tortoise的用戶名密碼等認證信息都是緩存在客戶端文件系統的這個目錄:
C:/Documents and Settings/Administrator/Application Data/Subversion/auth
刪除auth下面的所有文件夾,重新連接遠程服務器進行檢出,對話框就會出現!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章