標籤:控制系統 檔案管理 ubuntu 伺服器 原始碼
部落格:http://lijinhuan.blog.51cto.com/
微博:http://weibo.com/lijinhuanexperience
:xiaoleetongxue
需求:
把代碼放到共同的伺服器中去,然後可以通過軟體自由的增加和修改代碼,以方便共同協作,而不是像某一些小企業那樣,把代碼用qq傳來傳去進行覆蓋更新。
解決辦法:
搭建一台公用的伺服器並且配置svn伺服器。svn可以很好存放代碼,實現上面的需求。
下面教大家在unbuntu中一步一步地去配置svn伺服器,至於unbuntu的基本使用可以去unbuntu官方看一下文檔。
下面對svn進行一個簡單的介紹
svn是Subversion的簡稱,它 是一款開放原始碼的版本控制系統。使用 Subversion,您可以重新載入原始碼和文檔的曆史版本。Subversion 管理了原始碼在各個時期的版本。一個檔案樹被集中放置在檔案倉庫中。這個檔案倉庫很像是一個傳統的檔案伺服器,只不過它能夠記住檔案和目錄的每一次變化。
在配置svn之前你所需要掌握哪些知識
linux的基本許可權管理,使用者管理,檔案管理,進程管理。如果您對這些知識不熟悉就進行該操作你會非常痛苦
在ubuntu中安裝
幸運的,Subversion 已經包含在 main 倉庫中。所以,要安裝 Subversion,您只需要簡單的運行:
$ sudo apt-get install subversion
許多位置都可以放置 Subversion 檔案倉庫,其中兩個最常用的是:/usr/local/svn 以及 /home/svn。為了在下面的描述中簡單明了,我們假設您的 Subversion 檔案倉庫放在 /home/svn,並且你的項目名稱是簡單的“myproject”。
同樣的,也有許多常用的方式設定檔案倉庫的存取權限。然而,這也是安裝過程中最經常出現錯誤的地方,因此我們會對此進行一個詳細說明。通常的情況下,您應該建立一個名為“Subversion”的使用者組,該組是SVN倉庫所在的目錄的擁有者。下面是一個快速的操作說明
sudo addgroup subversionsudo usermod -G subversion -a username
現在執行下面的命令
$ sudo mkdir /home/svn$ cd /home/svn$ sudo mkdir myproject$ sudo chown -R username:subversion myproject
下面的命令用於建立 SVN 檔案倉庫:
$ sudo svnadmin create /home/svn/myproject
賦予群組成員對所有新加入檔案倉庫的檔案擁有相應的許可權:
$ sudo chmod -R g+rws myproject
目前已經安裝並且建立了一個倉庫,那麼我們怎麼把代碼提交到這個倉庫,或者把代碼提交到這個倉庫中去呢?
好了,慢慢來,我們先測試一下。
直接存取:
$ svn co file:///home/svn/myproject
如果訪問成功,那麼這個時候就證明已經配置好了。
接下來,我們使用最常用的的方式訪問,無論是在遠端windows還是在ubunto裡面都可以的。
使用其自身的協議訪問(svn://)
當您建立了 SVN 檔案倉庫,您可以修改 /home/svn/myproject/conf/svnserve.conf 來配置其存取控制。
例如,您可以取消下面的注釋符號來設定授權機制:
# [general]# password-db = passwd
現在,您可以在“passwd”檔案中維護使用者清單。編輯同一目錄下“passwd”檔案,添加新使用者。文法如下:
username = password#(注意行開始不要有多餘空格)
現在,您可以在本地或者遠程通過 svn://訪問 SVN 了,您可以使用“svnserve”來運行 svnserver,文法如下:
$ sudo svnserve -d -T-r /home/svn
如果已經啟動連接埠佔用了,你可以使用ps -e查看svnserve進程的id,並把其kill掉
當您執行了該命令,SVN 就開始監聽預設的連接埠(3690)。
這個時候您就可以在遠程使用windows的烏龜svn或者其他客服端軟體進行訪問了。
在這裡您特別需要注意一下許可權的問題
問題來了,現在代碼檔案可以提交和更新了,怎麼去讓他自動同步到伺服器的某個目錄呢?因為提交之後是放在svn伺服器的資料庫檔案裡面的,並沒有看到任何檔案。
其實這個不難解決,主要是通過svn伺服器的鉤子來實現的,原理如下
我們在伺服器的某個目錄下把代碼checkout下來,然後在代碼提交的時候自動觸發該項目的update命令。
cd /home/svn/myproject/hooksvim post-commit:#!/bin/shREPOS="$1"REV="$2"export LANG=en_US.UTF-8#注意這裡設定成自己想要更新的目錄,已經使用者名稱和密碼sudo svn update /wwwroot/myproject --username username--password password
這樣就可以自動更新了,每次本地提交的時候。
這裡需要注意一下
export LANG=en_US.UTF-8
不要寫錯哦
linux資料整理之ubuntu配置svn伺服器並且同步更新web目錄