linux資料整理之ubuntu配置svn伺服器並且同步更新web目錄

來源:互聯網
上載者:User

標籤:控制系統   檔案管理   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目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.