欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    VN版本控制服務(wù)

    SVN是Subversion的簡稱,是一個(gè)開放源代碼的版本控制系統(tǒng),相較于CVS,它采用了分支管理系統(tǒng),它的設(shè)計(jì)目標(biāo)就是取代CVS。互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion。也是就是CVS的接班人!

    CVS是一個(gè)C/S系統(tǒng),是一個(gè)常用的代碼版本控制軟件。主要在開源軟件管理中使用。與它相類似的代碼版本控制軟件有subversion。多個(gè)開發(fā)人員通過一個(gè)中心版本控制系統(tǒng)來記錄文件版本,從而達(dá)到保證文件同步的目的。CVS版本控制系統(tǒng)是一種GNU軟件包,主要用于在多人開發(fā)環(huán)境下的源碼的維護(hù)。但是由于之前CVS編碼的問題,現(xiàn)在大多數(shù)軟件開發(fā)公司都使用SVN替代了CVS。

    官方網(wǎng)站:http://subversion.apache.org/

    Windows客戶端 TortoiseSVN:http://tortoisesvn.net/

    常見的版本控制軟件

    CVS,逐漸被SVN取代,是CVX重寫版和改寫版

    SVN,Subversion

    Git,Git是一個(gè)開源的分布式版本控制系統(tǒng),用以有效、高速的處理從很小到非常大的項(xiàng)目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件

    SVN存儲數(shù)據(jù)的方式

    BDB,Berkeley DB,一種事務(wù)安全型表類型

    FSFS,"FSFS" 采用文件系統(tǒng)的方式, 替代原來的基于Berkeley DB的實(shí)現(xiàn).

    因?yàn)锽DB方式在服務(wù)器中斷時(shí),有可能鎖住數(shù)據(jù),所以還是FSFS方式更安全一點(diǎn)。

    SVN的運(yùn)行方式及端口

    獨(dú)立服務(wù)器 3690端口 訪問方式SVN:// C/S模式

    借助apache運(yùn)行 80端口 訪問方式 http://

    工作流程

    集中式代碼管理的核心是服務(wù)器,所有開發(fā)者在開始新一天的工作之前必須從服務(wù)器獲取代碼,然后開發(fā),最后解決沖突,提交。所有的版本信息都放在服務(wù)器上。如果脫離了服務(wù)器,開發(fā)者基本上可以說是無法工作的。下面舉例說明:開始新一天的工作:

    1、從服務(wù)器下載項(xiàng)目組最新代碼。

    2、進(jìn)入自己的分支,進(jìn)行工作,每隔一個(gè)小時(shí)向服務(wù)器自己的分支提交一次代碼

    (很多人都有這個(gè)習(xí)慣。因?yàn)橛袝r(shí)候自己對代碼改來改去,最后又想還原到前一個(gè)小時(shí)的版本,或者看看前一個(gè)小時(shí)自己修改了哪些代碼,就需要這樣做了)。

    3、下班時(shí)間快到了,把自己的分支合并到服務(wù)器主分支上,一天的工作完成,并反映給服務(wù)器。

    這就是經(jīng)典的svn工作流程,從流程上看,有不少缺點(diǎn),但也有優(yōu)點(diǎn)。

    SVN+Apache運(yùn)行原理

    SVN搭配Apache的時(shí)候,Apache需要使用mod_dav_svn這個(gè)模塊,他的運(yùn)行機(jī)制如下:

    在一臺服務(wù)器上建立一個(gè)源代碼庫,庫里可以存放許多不同項(xiàng)目的源程序。有源代碼庫管理員統(tǒng)一管理這些源程序。

    每個(gè)用戶在使用源代碼庫之前,首先要把源代碼庫里德項(xiàng)目文件下載到本地,然后開發(fā)人員可以在本地修改,左后用svn命令進(jìn)行提交,由源代碼庫統(tǒng)一管理修改。

    mod_dav_svn 可以讓版本庫通過http協(xié)議實(shí)現(xiàn)網(wǎng)站展現(xiàn)

    構(gòu)建SVN版本控制服務(wù)器

    SVN+HTTP Server (XueGod63)==========Client Server(XueGod64)

    檢查是否已安裝

    rpm -qa subversion

    如果要卸載舊版本

    yum remove subversion

    軟件安裝

    #包括HTTP所需模塊一起裝(httpd mod_auth_mysql 是安裝配合Apache的模塊,你可以只裝subversion,多裝了也無所謂) [root@XueGod63 ~]# yum install -y subversion httpd mod_dav_svn #查看已注冊 [root@XueGod63 ~]# cat /etc/services | grep --color svn

    svn 3690/tcp # Subversion

    svn 3690/udp # Subversion

    創(chuàng)建版本庫目錄

    #存放版本庫的主目錄 [root@XueGod63 ~]# mkdir /www/svn/ #創(chuàng)建項(xiàng)目 #svnadmin命令是由subversion這個(gè)軟件包提供的 [root@XueGod63 ~]# svnadmin create /www/svn/test_project #隨便查看一個(gè)版本庫 [root@XueGod63 ~]# ls /www/svn/test_project

    conf db format hooks locks README.txt

    dav目錄:是提供apache與mod_dav_svn使用的目錄,讓他們存儲內(nèi)部數(shù)據(jù),剛開始新建時(shí)此目錄沒有

    db目錄:就是所有版本控制的數(shù)據(jù)存放文件

    hooks目錄:放置hook腳本文件的目錄

    locks目錄:用來放置subversion監(jiān)控鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端

    format文件:是一個(gè)文本文件,里面只放了一個(gè)整數(shù)。表示當(dāng)前文件庫配置的版本號

    conf目錄:是這個(gè)倉庫的配置文件(倉庫的用戶訪問賬號、權(quán)限等),也是我們要關(guān)注的配置文件

    [root@XueGod63 ~]# ls /www/svn/test_project/conf/

    authz passwd svnserve.conf

    authz #認(rèn)證權(quán)限相關(guān)

    passwd #用戶名和密碼

    svnserve.conf #服務(wù)器配置文件

    針對不同版本庫修改配置文件

    接下來的一段用于配置使用哪種授權(quán)登錄方式;

    #修改xuegod.cn的配置文件 [root@XueGod63 ~]# vim /www/svn/test_project/conf/svnserve.conf

    [general]

    anon-access = none #對于匿名用戶,無訪問權(quán)限,這里必須為none,因?yàn)橹挥性O(shè)為none,在客戶端才能看到每次提交的備注信息

    auth-access = write #對于授權(quán)用戶,有寫權(quán)限,可以是read,write,none

    #password-db = passwd #用戶名和密碼都是明文存放在同級目錄下的passwd文件中;優(yōu)點(diǎn)是高效配置簡單,缺點(diǎn)是安全性弱,明文總不是那么讓人感覺可靠

    authz-db = authz #認(rèn)證權(quán)限文件,取消注釋即可

    realm = test_project #指定授權(quán)所屬的域,PHP的同志可將其理解為名字空間;

    #接下來是[sasl]段,用于標(biāo)識是否進(jìn)行SASL加密處理;

    use-sasl=true

    min-encryption=128

    max-encryption=256

    #變量 min-encryption 和 max-encryption 控制服務(wù)器所需要的加密強(qiáng)度。

    注意:此配置文件的所有內(nèi)容必須頂格,否則會報(bào)錯(cuò)

    配置用戶和密碼及認(rèn)證權(quán)限

    #設(shè)置用戶名和密碼 [root@XueGod63 ~]# vim /www/svn/test_project/conf/passwd

    [users]

    Find = 123456

    HA = 123456

    user = 123456

    #末尾添加上面三行

    #對于部分版本,前面的[users]是有#號的,如果有#號,一定要取消,否則只能使用匿名用戶登錄,客戶端登錄不會

    出現(xiàn)登錄窗口或密碼提示,除非在配置文件將anon設(shè)置為none,否則將返回一個(gè)錯(cuò)誤

    #這里的密碼都是明文,沒有加密

    #設(shè)置用戶和組的權(quán)限 [root@XueGod63 ~]# vim /www/svn/test_project/conf/authz

    [groups] #此行默認(rèn)存在了

    test_group=Find,HA #定義組,在[groups]下面添加

    #用戶組格式 用戶組名=用戶1,用戶2

    #一個(gè)組可以包含多個(gè)用戶,英文逗號間隔,用戶名必須是在passwd中存在的

    [test_project:/] #/表示我當(dāng)前所在版本庫目錄,這里代表test_project

    @test_group = rw #@test_group表示這個(gè)組的權(quán)限,就是上面定義的組的成員

    * = #除了上面的有賦予權(quán)限成員之外,其他的成員都沒有權(quán)限

    SVN目錄格式:

    [/目錄名]

    @用戶組名 = 權(quán)限

    用戶名 = 權(quán)限

    * =

    SVN使用SASL加密

    1.配置svnserve.conf,注釋掉password-db=passwd

    并啟用sqsl:use-sasl=true

    2.新建一個(gè)svn.conf文件,一般放在/usr/lib/sasl2或者/etc/sasl2,內(nèi)容為:

    pwcheck_method: auxprop

    auxprop_plugin: sasldb

    sasldb_path: /home/svnadmin/config/sasldb

    mech_list: DIGEST-MD5

    其中sasldb_path 指定你打算將sasl加密的數(shù)據(jù)庫放置的位置;

    注釋:pwcheck_method指明檢查的方法,這里是“auxprop ”,這個(gè)pwcheck_method還對應(yīng)了如啟動(dòng)一個(gè)代理作為認(rèn)證服務(wù)等方式,而現(xiàn)在的意思就是使用本文件說的方式去檢查。然后我們指明auxprop_plugin為sasldb,也就是使用一個(gè)文件存放用戶名密碼,也就是/www/svn/test_project/sasldb,其它的認(rèn)證信息存放plugin還有sql和ldapdb。而mech_list指明了認(rèn)證信息傳遞機(jī)制。

    svnserve 已經(jīng)在運(yùn)行,你需要重啟服務(wù),并確保它讀取了更新后的配置參數(shù)

    killall svnserve //停止svnserve服務(wù)

    svnserve –d –r /www/svn //啟動(dòng)svnserve服務(wù)

    3.創(chuàng)建用戶和密碼

    使用saslpasswd2 程序

    語法:saslpasswd2 –c –f /www/svn/test_project/sasldb –u [svnserve.conf里面配置的realm名字] [username]

    eg:saslpasswd2 -c -f /home/svnadmin/config/sasldb -u examPro colin

    會出現(xiàn)交互界面,提示輸入兩次密碼;

    附:

    saslpasswd2 -d -f home/svnadmin/config/sasldb -u 用戶名//刪除用戶

    sasldblistusers2 -f /home/svnadmin/config/sasldb // 查詢用戶

    PS:如果訪問庫的時(shí)候出現(xiàn)以下提示 "Could not obtain the list of SASL mechanisms",原因是Linux默認(rèn)沒有安裝DIGEST-MD5,此時(shí),可用以下命令安裝更新:yum install cyrus-sasl-md5 , cyrus-sasl-md5首頁:http://asg.web.cmu.edu/sasl/, 安裝包下載地址:ftp://ftp.andrew.cmu.edu/pub/cyrus/

    配置完成。

    服務(wù)SVN啟動(dòng)及創(chuàng)建測試代碼

    #啟動(dòng)了所有版本庫,如果只需要某一個(gè)版本庫, #在-r后面添加/www/svn/test_project/的版本庫即可 -d=daemon -r=root of directory of save指定根目錄 [root@XueGod63 ~]# svnserve -d -r /www/svn/ #查詢到下面這行內(nèi)容就可以了 [root@XueGod63 ~]# ps -aux | grep svn

    root 17107 0.0 0.0 199020 1028 ? Ss 23:30 0:00 svnserve -d -r /www/svn/

    root 17446 0.0 0.0 110228 892 pts/0 S+ 23:32 0:00 grep --color=auto svn

    [root@XueGod63 ~]# netstat -antup | grep svn

    服務(wù)正常

    tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 17107/svnserve

    使用svn導(dǎo)入測試代碼

    導(dǎo)入測試代碼格式: svn [選項(xiàng)] 源碼 svn://server ip/項(xiàng)目名

    常見的選項(xiàng):

    import:將未版本化的文件納入版本控制并提交 checkout:從版本庫中檢出一個(gè)修訂版 update:更新工作拷貝 add,delete,copy,move:增、刪、復(fù)制、移動(dòng)文件或目錄

    status:檢查狀態(tài)差異 diff:檢查文件行級詳細(xì)差異

    revert:恢復(fù) resolve:解決沖突

    switch:切換工作拷貝對應(yīng)的版本庫分支 log:查看歷史記錄

    list:顯示文件目錄 cat:查看某個(gè)文件內(nèi)容

    開放svn端口

    默認(rèn)是3690端口,你也可以用別的。已開啟的跳過這一步

    vi /etc/sysconfig/iptables #修改 iptables -I INPUT -p tcp --dport 3690 -j ACCEPT #保存 service iptables save #重啟 service iptables restart #查看 /etc/init.d/iptables status

    在網(wǎng)站根目錄建立SVN版本庫

    為了避免每次都重新輸入SVN賬號密碼,可修改以下配置

    [root@localhost public_html]# vim /root/.subversion/servers

    # store-plaintext-passwords=no

    改為

    store-plaintext-passwords=yes

    建立版本庫

    #打開網(wǎng)站根目錄,我的根目錄是/www/web/test_com/public_html [root@XueGod63 ~]# cd /www/web/test_com/public_html #在網(wǎng)站根目錄建立版本庫,由于當(dāng)前已經(jīng)在網(wǎng)站根目錄,所以用 . 表示建立版本庫的目錄 #也可以使用絕對路徑 /www/web/test_com/public_html [root@XueGod63 ~]# svn checkout svn://192.168.1.2/test_project . #提示輸入SVN帳號和密碼,輸入以上設(shè)置的SVN帳號密碼即可

    提交網(wǎng)站根目錄的源碼到SVN服務(wù)器

    把網(wǎng)站的所有文件提交到SVN服務(wù)器

    #把項(xiàng)目加入到SVN庫,并提交 [root@XueGod63 ~]# svn add app/ [root@XueGod63 ~]# svn add include/ [root@XueGod63 ~]# svn add template/ [root@XueGod63 ~]# svn add runtime/ [root@XueGod63 ~]# svn add index.php [root@XueGod63 ~]# svn commit -m "初次提交"

    在開發(fā)環(huán)境(本地)檢出項(xiàng)目

    在本地項(xiàng)目檢出SVN,SVN地址:svn://192.168.1.2/test_project

    d:守護(hù)進(jìn)程

    -r:svn根目錄

    假設(shè)服務(wù)端IP為192.168.1.2,那么如下設(shè)置后test_project的訪問目錄就為:

    svn://192.168.1.2/test_project

    比如 帳號密碼為上面設(shè)置的Find = 123456,檢出。

    SVN上傳時(shí)同步到服務(wù)器其它目錄

    同步程序思路:用戶提交程序到SVN,SVN觸發(fā)hooks,按不同的hooks進(jìn)行處理,這里用到的是post-commit,利用post-commit到代碼檢出到SVN服務(wù)器的本地硬盤目錄,再通過rsync同步到遠(yuǎn)程的WEB服務(wù)器上。

    知識點(diǎn):

    1、SVN的hooks

    # start-commit 提交前觸發(fā)事務(wù)

    # pre-commit 提交完成前觸發(fā)事務(wù)

    # post-commit 提交完成時(shí)觸發(fā)事務(wù)

    # pre-revprop-change 版本屬性修改前觸發(fā)事務(wù)

    # post-revprop-change 版本屬性修改后觸發(fā)事務(wù)

    通過上面這些名稱編寫的腳本就就可以實(shí)現(xiàn)多種功能了,相當(dāng)強(qiáng)大。

    2、同步命令rsync的具體參數(shù)使用

    3、具有基個(gè)語言的編程能力bash python perl都可以實(shí)現(xiàn)

    post-commit具體實(shí)現(xiàn)細(xì)節(jié)

    post-commit腳本

    能看到一堆模版鉤子文件,我們需要的是post-commit.tmpl,

    copy一份,命名為post-commit。然后修改;

    編輯文件:

    sudo vim /www/svn/test_project/hooks/post-commit

    注意:編輯完成post-commit后,給予可執(zhí)行權(quán)限:

    sudo chmod -R 755 /www/svn/test_project/hooks/post-commit

    內(nèi)容:

    #!/bin/sh #設(shè)置語言環(huán)境 ##這行比較重要,需要根據(jù)你的服務(wù)器環(huán)境選擇正確的語言環(huán)境,否則,這個(gè)update不會工作 export.UTF-8 #設(shè)置SVN更新時(shí)需要同步更新的目錄,這里發(fā)現(xiàn)不加username和password也是可以的 #svn update /www/web/test_com/public_html --username yoursname --password yourpwd sudo svn update /www/web/test_com/public_html

    這樣在本地SVN提交代碼后,服務(wù)器的代碼也會自動(dòng)從SVN更新。

    注意:svn倉庫文件夾的other必須要有執(zhí)行權(quán)限不然腳本無法執(zhí)行。SVN update 之前一定要先手動(dòng)checkout一份出來,還有這里一定要添加用戶和密碼如果只是手動(dòng)一樣會更新,但自動(dòng)一樣的不行。

    啟動(dòng)和停止SVN服務(wù)

    啟動(dòng)SVN服務(wù)

    svnserve -d -r /www/svn/

    描述說明:

    -d 表示svnserver以“守護(hù)”進(jìn)程模式運(yùn)行

    -r 指定文件系統(tǒng)的根位置(版本庫的根目錄),這樣客戶端不用輸入全路徑,就可以訪問版本庫。

    如果想監(jiān)聽其他端口,使用

    svnserve -d -r /www/svn/ --listen-port 88

    停止SVN服務(wù)

    killall svnserve

    設(shè)置開機(jī)自啟動(dòng)

    安裝好的svn服務(wù)端,默認(rèn)是不會開機(jī)自啟動(dòng)的,每次開機(jī)自己啟動(dòng)會很麻煩,我們可以把它設(shè)成開機(jī)啟動(dòng)。

    首先:編寫一個(gè)啟動(dòng)腳本svn_startup.sh,我放在/www/svn/svn_startup.sh

    #!/bin/bash /usr/bin/svnserve -d -r /www/svn/ --listen-port 88

    如果是部署為外網(wǎng),這里自定義了88端口,需要注意檢出地址需要加上自定義的端口號。(貌似自定義端口號后不能使用post-commit自動(dòng)提交了,會提示拒絕連接,還沒有找到使用自定義端口連接的方法)

    這里的svnserve路徑保險(xiǎn)起見,最好寫絕對路徑,因?yàn)閱?dòng)的時(shí)候,環(huán)境變量也許沒加載。

    絕對路徑怎么查?

    which svnserve

    這里還有可能碰到一個(gè)問題,如果你在windows下建立和編寫的腳步,拿到linux下,用vi或者vim修改后可能會無法執(zhí)行,這是文件格式的問題:

    vi svn_startup.sh #輸入:set ff 回車 #如果顯示的結(jié)果不是fileformat=unix #再次輸入 set ff=unix #就OK了

    然后修改該腳本的執(zhí)行權(quán)限:

    chmod ug+x svn_startup.sh #或者萬能的 chmod 777 svn_startup.sh

    最后,加入自動(dòng)運(yùn)行:

    vi /etc/rc.d/rc.local #在末尾添加腳本的路徑,如: /www/svn/svn_startup.sh

    現(xiàn)在,你可以重啟一下試試了。

    ps -ef|grep svnserve

    VN版本控制服務(wù)

    SVN是Subversion的簡稱,是一個(gè)開放源代碼的版本控制系統(tǒng),相較于CVS,它采用了分支管理系統(tǒng),它的設(shè)計(jì)目標(biāo)就是取代CVS。互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion。也是就是CVS的接班人!

    CVS是一個(gè)C/S系統(tǒng),是一個(gè)常用的代碼版本控制軟件。主要在開源軟件管理中使用。與它相類似的代碼版本控制軟件有subversion。多個(gè)開發(fā)人員通過一個(gè)中心版本控制系統(tǒng)來記錄文件版本,從而達(dá)到保證文件同步的目的。CVS版本控制系統(tǒng)是一種GNU軟件包,主要用于在多人開發(fā)環(huán)境下的源碼的維護(hù)。但是由于之前CVS編碼的問題,現(xiàn)在大多數(shù)軟件開發(fā)公司都使用SVN替代了CVS。

    官方網(wǎng)站:http://subversion.apache.org/

    Windows客戶端 TortoiseSVN:http://tortoisesvn.net/

    常見的版本控制軟件

    CVS,逐漸被SVN取代,是CVX重寫版和改寫版

    SVN,Subversion

    Git,Git是一個(gè)開源的分布式版本控制系統(tǒng),用以有效、高速的處理從很小到非常大的項(xiàng)目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件

    SVN存儲數(shù)據(jù)的方式

    BDB,Berkeley DB,一種事務(wù)安全型表類型

    FSFS,"FSFS" 采用文件系統(tǒng)的方式, 替代原來的基于Berkeley DB的實(shí)現(xiàn).

    因?yàn)锽DB方式在服務(wù)器中斷時(shí),有可能鎖住數(shù)據(jù),所以還是FSFS方式更安全一點(diǎn)。

    SVN的運(yùn)行方式及端口

    獨(dú)立服務(wù)器 3690端口 訪問方式SVN:// C/S模式

    借助apache運(yùn)行 80端口 訪問方式 http://

    工作流程

    集中式代碼管理的核心是服務(wù)器,所有開發(fā)者在開始新一天的工作之前必須從服務(wù)器獲取代碼,然后開發(fā),最后解決沖突,提交。所有的版本信息都放在服務(wù)器上。如果脫離了服務(wù)器,開發(fā)者基本上可以說是無法工作的。下面舉例說明:開始新一天的工作:

    1、從服務(wù)器下載項(xiàng)目組最新代碼。

    2、進(jìn)入自己的分支,進(jìn)行工作,每隔一個(gè)小時(shí)向服務(wù)器自己的分支提交一次代碼

    (很多人都有這個(gè)習(xí)慣。因?yàn)橛袝r(shí)候自己對代碼改來改去,最后又想還原到前一個(gè)小時(shí)的版本,或者看看前一個(gè)小時(shí)自己修改了哪些代碼,就需要這樣做了)。

    3、下班時(shí)間快到了,把自己的分支合并到服務(wù)器主分支上,一天的工作完成,并反映給服務(wù)器。

    這就是經(jīng)典的svn工作流程,從流程上看,有不少缺點(diǎn),但也有優(yōu)點(diǎn)。

    SVN+Apache運(yùn)行原理

    SVN搭配Apache的時(shí)候,Apache需要使用mod_dav_svn這個(gè)模塊,他的運(yùn)行機(jī)制如下:

    在一臺服務(wù)器上建立一個(gè)源代碼庫,庫里可以存放許多不同項(xiàng)目的源程序。有源代碼庫管理員統(tǒng)一管理這些源程序。

    每個(gè)用戶在使用源代碼庫之前,首先要把源代碼庫里德項(xiàng)目文件下載到本地,然后開發(fā)人員可以在本地修改,左后用svn命令進(jìn)行提交,由源代碼庫統(tǒng)一管理修改。

    mod_dav_svn 可以讓版本庫通過http協(xié)議實(shí)現(xiàn)網(wǎng)站展現(xiàn)

    構(gòu)建SVN版本控制服務(wù)器

    SVN+HTTP Server (XueGod63)==========Client Server(XueGod64)

    檢查是否已安裝

    rpm -qa subversion

    如果要卸載舊版本

    yum remove subversion

    軟件安裝

    #包括HTTP所需模塊一起裝(httpd mod_auth_mysql 是安裝配合Apache的模塊,你可以只裝subversion,多裝了也無所謂) [root@XueGod63 ~]# yum install -y subversion httpd mod_dav_svn #查看已注冊 [root@XueGod63 ~]# cat /etc/services | grep --color svn

    svn 3690/tcp # Subversion

    svn 3690/udp # Subversion

    創(chuàng)建版本庫目錄

    #存放版本庫的主目錄 [root@XueGod63 ~]# mkdir /www/svn/ #創(chuàng)建項(xiàng)目 #svnadmin命令是由subversion這個(gè)軟件包提供的 [root@XueGod63 ~]# svnadmin create /www/svn/test_project #隨便查看一個(gè)版本庫 [root@XueGod63 ~]# ls /www/svn/test_project

    conf db format hooks locks README.txt

    dav目錄:是提供apache與mod_dav_svn使用的目錄,讓他們存儲內(nèi)部數(shù)據(jù),剛開始新建時(shí)此目錄沒有

    db目錄:就是所有版本控制的數(shù)據(jù)存放文件

    hooks目錄:放置hook腳本文件的目錄

    locks目錄:用來放置subversion監(jiān)控鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端

    format文件:是一個(gè)文本文件,里面只放了一個(gè)整數(shù)。表示當(dāng)前文件庫配置的版本號

    conf目錄:是這個(gè)倉庫的配置文件(倉庫的用戶訪問賬號、權(quán)限等),也是我們要關(guān)注的配置文件

    [root@XueGod63 ~]# ls /www/svn/test_project/conf/

    authz passwd svnserve.conf

    authz #認(rèn)證權(quán)限相關(guān)

    passwd #用戶名和密碼

    svnserve.conf #服務(wù)器配置文件

    針對不同版本庫修改配置文件

    接下來的一段用于配置使用哪種授權(quán)登錄方式;

    #修改xuegod.cn的配置文件 [root@XueGod63 ~]# vim /www/svn/test_project/conf/svnserve.conf

    [general]

    anon-access = none #對于匿名用戶,無訪問權(quán)限,這里必須為none,因?yàn)橹挥性O(shè)為none,在客戶端才能看到每次提交的備注信息

    auth-access = write #對于授權(quán)用戶,有寫權(quán)限,可以是read,write,none

    #password-db = passwd #用戶名和密碼都是明文存放在同級目錄下的passwd文件中;優(yōu)點(diǎn)是高效配置簡單,缺點(diǎn)是安全性弱,明文總不是那么讓人感覺可靠

    authz-db = authz #認(rèn)證權(quán)限文件,取消注釋即可

    realm = test_project #指定授權(quán)所屬的域,PHP的同志可將其理解為名字空間;

    #接下來是[sasl]段,用于標(biāo)識是否進(jìn)行SASL加密處理;

    use-sasl=true

    min-encryption=128

    max-encryption=256

    #變量 min-encryption 和 max-encryption 控制服務(wù)器所需要的加密強(qiáng)度。

    注意:此配置文件的所有內(nèi)容必須頂格,否則會報(bào)錯(cuò)

    配置用戶和密碼及認(rèn)證權(quán)限

    #設(shè)置用戶名和密碼 [root@XueGod63 ~]# vim /www/svn/test_project/conf/passwd

    [users]

    Find = 123456

    HA = 123456

    user = 123456

    #末尾添加上面三行

    #對于部分版本,前面的[users]是有#號的,如果有#號,一定要取消,否則只能使用匿名用戶登錄,客戶端登錄不會

    出現(xiàn)登錄窗口或密碼提示,除非在配置文件將anon設(shè)置為none,否則將返回一個(gè)錯(cuò)誤

    #這里的密碼都是明文,沒有加密

    #設(shè)置用戶和組的權(quán)限 [root@XueGod63 ~]# vim /www/svn/test_project/conf/authz

    [groups] #此行默認(rèn)存在了

    test_group=Find,HA #定義組,在[groups]下面添加

    #用戶組格式 用戶組名=用戶1,用戶2

    #一個(gè)組可以包含多個(gè)用戶,英文逗號間隔,用戶名必須是在passwd中存在的

    [test_project:/] #/表示我當(dāng)前所在版本庫目錄,這里代表test_project

    @test_group = rw #@test_group表示這個(gè)組的權(quán)限,就是上面定義的組的成員

    * = #除了上面的有賦予權(quán)限成員之外,其他的成員都沒有權(quán)限

    SVN目錄格式:

    [/目錄名]

    @用戶組名 = 權(quán)限

    用戶名 = 權(quán)限

    * =

    SVN使用SASL加密

    1.配置svnserve.conf,注釋掉password-db=passwd

    并啟用sqsl:use-sasl=true

    2.新建一個(gè)svn.conf文件,一般放在/usr/lib/sasl2或者/etc/sasl2,內(nèi)容為:

    pwcheck_method: auxprop

    auxprop_plugin: sasldb

    sasldb_path: /home/svnadmin/config/sasldb

    mech_list: DIGEST-MD5

    其中sasldb_path 指定你打算將sasl加密的數(shù)據(jù)庫放置的位置;

    注釋:pwcheck_method指明檢查的方法,這里是“auxprop ”,這個(gè)pwcheck_method還對應(yīng)了如啟動(dòng)一個(gè)代理作為認(rèn)證服務(wù)等方式,而現(xiàn)在的意思就是使用本文件說的方式去檢查。然后我們指明auxprop_plugin為sasldb,也就是使用一個(gè)文件存放用戶名密碼,也就是/www/svn/test_project/sasldb,其它的認(rèn)證信息存放plugin還有sql和ldapdb。而mech_list指明了認(rèn)證信息傳遞機(jī)制。

    svnserve 已經(jīng)在運(yùn)行,你需要重啟服務(wù),并確保它讀取了更新后的配置參數(shù)

    killall svnserve //停止svnserve服務(wù)

    svnserve –d –r /www/svn //啟動(dòng)svnserve服務(wù)

    3.創(chuàng)建用戶和密碼

    使用saslpasswd2 程序

    語法:saslpasswd2 –c –f /www/svn/test_project/sasldb –u [svnserve.conf里面配置的realm名字] [username]

    eg:saslpasswd2 -c -f /home/svnadmin/config/sasldb -u examPro colin

    會出現(xiàn)交互界面,提示輸入兩次密碼;

    附:

    saslpasswd2 -d -f home/svnadmin/config/sasldb -u 用戶名//刪除用戶

    sasldblistusers2 -f /home/svnadmin/config/sasldb // 查詢用戶

    PS:如果訪問庫的時(shí)候出現(xiàn)以下提示 "Could not obtain the list of SASL mechanisms",原因是Linux默認(rèn)沒有安裝DIGEST-MD5,此時(shí),可用以下命令安裝更新:yum install cyrus-sasl-md5 , cyrus-sasl-md5首頁:http://asg.web.cmu.edu/sasl/, 安裝包下載地址:ftp://ftp.andrew.cmu.edu/pub/cyrus/

    配置完成。

    服務(wù)SVN啟動(dòng)及創(chuàng)建測試代碼

    #啟動(dòng)了所有版本庫,如果只需要某一個(gè)版本庫, #在-r后面添加/www/svn/test_project/的版本庫即可 -d=daemon -r=root of directory of save指定根目錄 [root@XueGod63 ~]# svnserve -d -r /www/svn/ #查詢到下面這行內(nèi)容就可以了 [root@XueGod63 ~]# ps -aux | grep svn

    root 17107 0.0 0.0 199020 1028 ? Ss 23:30 0:00 svnserve -d -r /www/svn/

    root 17446 0.0 0.0 110228 892 pts/0 S+ 23:32 0:00 grep --color=auto svn

    [root@XueGod63 ~]# netstat -antup | grep svn

    服務(wù)正常

    tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 17107/svnserve

    使用svn導(dǎo)入測試代碼

    導(dǎo)入測試代碼格式: svn [選項(xiàng)] 源碼 svn://server ip/項(xiàng)目名

    常見的選項(xiàng):

    import:將未版本化的文件納入版本控制并提交 checkout:從版本庫中檢出一個(gè)修訂版 update:更新工作拷貝 add,delete,copy,move:增、刪、復(fù)制、移動(dòng)文件或目錄

    status:檢查狀態(tài)差異 diff:檢查文件行級詳細(xì)差異

    revert:恢復(fù) resolve:解決沖突

    switch:切換工作拷貝對應(yīng)的版本庫分支 log:查看歷史記錄

    list:顯示文件目錄 cat:查看某個(gè)文件內(nèi)容

    開放svn端口

    默認(rèn)是3690端口,你也可以用別的。已開啟的跳過這一步

    vi /etc/sysconfig/iptables #修改 iptables -I INPUT -p tcp --dport 3690 -j ACCEPT #保存 service iptables save #重啟 service iptables restart #查看 /etc/init.d/iptables status

    在網(wǎng)站根目錄建立SVN版本庫

    為了避免每次都重新輸入SVN賬號密碼,可修改以下配置

    [root@localhost public_html]# vim /root/.subversion/servers

    # store-plaintext-passwords=no

    改為

    store-plaintext-passwords=yes

    建立版本庫

    #打開網(wǎng)站根目錄,我的根目錄是/www/web/test_com/public_html [root@XueGod63 ~]# cd /www/web/test_com/public_html #在網(wǎng)站根目錄建立版本庫,由于當(dāng)前已經(jīng)在網(wǎng)站根目錄,所以用 . 表示建立版本庫的目錄 #也可以使用絕對路徑 /www/web/test_com/public_html [root@XueGod63 ~]# svn checkout svn://192.168.1.2/test_project . #提示輸入SVN帳號和密碼,輸入以上設(shè)置的SVN帳號密碼即可

    提交網(wǎng)站根目錄的源碼到SVN服務(wù)器

    把網(wǎng)站的所有文件提交到SVN服務(wù)器

    #把項(xiàng)目加入到SVN庫,并提交 [root@XueGod63 ~]# svn add app/ [root@XueGod63 ~]# svn add include/ [root@XueGod63 ~]# svn add template/ [root@XueGod63 ~]# svn add runtime/ [root@XueGod63 ~]# svn add index.php [root@XueGod63 ~]# svn commit -m "初次提交"

    在開發(fā)環(huán)境(本地)檢出項(xiàng)目

    在本地項(xiàng)目檢出SVN,SVN地址:svn://192.168.1.2/test_project

    d:守護(hù)進(jìn)程

    -r:svn根目錄

    假設(shè)服務(wù)端IP為192.168.1.2,那么如下設(shè)置后test_project的訪問目錄就為:

    svn://192.168.1.2/test_project

    比如 帳號密碼為上面設(shè)置的Find = 123456,檢出。

    SVN上傳時(shí)同步到服務(wù)器其它目錄

    同步程序思路:用戶提交程序到SVN,SVN觸發(fā)hooks,按不同的hooks進(jìn)行處理,這里用到的是post-commit,利用post-commit到代碼檢出到SVN服務(wù)器的本地硬盤目錄,再通過rsync同步到遠(yuǎn)程的WEB服務(wù)器上。

    知識點(diǎn):

    1、SVN的hooks

    # start-commit 提交前觸發(fā)事務(wù)

    # pre-commit 提交完成前觸發(fā)事務(wù)

    # post-commit 提交完成時(shí)觸發(fā)事務(wù)

    # pre-revprop-change 版本屬性修改前觸發(fā)事務(wù)

    # post-revprop-change 版本屬性修改后觸發(fā)事務(wù)

    通過上面這些名稱編寫的腳本就就可以實(shí)現(xiàn)多種功能了,相當(dāng)強(qiáng)大。

    2、同步命令rsync的具體參數(shù)使用

    3、具有基個(gè)語言的編程能力bash python perl都可以實(shí)現(xiàn)

    post-commit具體實(shí)現(xiàn)細(xì)節(jié)

    post-commit腳本

    能看到一堆模版鉤子文件,我們需要的是post-commit.tmpl,

    copy一份,命名為post-commit。然后修改;

    編輯文件:

    sudo vim /www/svn/test_project/hooks/post-commit

    注意:編輯完成post-commit后,給予可執(zhí)行權(quán)限:

    sudo chmod -R 755 /www/svn/test_project/hooks/post-commit

    內(nèi)容:

    #!/bin/sh #設(shè)置語言環(huán)境 ##這行比較重要,需要根據(jù)你的服務(wù)器環(huán)境選擇正確的語言環(huán)境,否則,這個(gè)update不會工作 export.UTF-8 #設(shè)置SVN更新時(shí)需要同步更新的目錄,這里發(fā)現(xiàn)不加username和password也是可以的 #svn update /www/web/test_com/public_html --username yoursname --password yourpwd sudo svn update /www/web/test_com/public_html

    這樣在本地SVN提交代碼后,服務(wù)器的代碼也會自動(dòng)從SVN更新。

    注意:svn倉庫文件夾的other必須要有執(zhí)行權(quán)限不然腳本無法執(zhí)行。SVN update 之前一定要先手動(dòng)checkout一份出來,還有這里一定要添加用戶和密碼如果只是手動(dòng)一樣會更新,但自動(dòng)一樣的不行。

    啟動(dòng)和停止SVN服務(wù)

    啟動(dòng)SVN服務(wù)

    svnserve -d -r /www/svn/

    描述說明:

    -d 表示svnserver以“守護(hù)”進(jìn)程模式運(yùn)行

    -r 指定文件系統(tǒng)的根位置(版本庫的根目錄),這樣客戶端不用輸入全路徑,就可以訪問版本庫。

    如果想監(jiān)聽其他端口,使用

    svnserve -d -r /www/svn/ --listen-port 88

    停止SVN服務(wù)

    killall svnserve

    設(shè)置開機(jī)自啟動(dòng)

    安裝好的svn服務(wù)端,默認(rèn)是不會開機(jī)自啟動(dòng)的,每次開機(jī)自己啟動(dòng)會很麻煩,我們可以把它設(shè)成開機(jī)啟動(dòng)。

    首先:編寫一個(gè)啟動(dòng)腳本svn_startup.sh,我放在/www/svn/svn_startup.sh

    #!/bin/bash /usr/bin/svnserve -d -r /www/svn/ --listen-port 88

    如果是部署為外網(wǎng),這里自定義了88端口,需要注意檢出地址需要加上自定義的端口號。(貌似自定義端口號后不能使用post-commit自動(dòng)提交了,會提示拒絕連接,還沒有找到使用自定義端口連接的方法)

    這里的svnserve路徑保險(xiǎn)起見,最好寫絕對路徑,因?yàn)閱?dòng)的時(shí)候,環(huán)境變量也許沒加載。

    絕對路徑怎么查?

    which svnserve

    這里還有可能碰到一個(gè)問題,如果你在windows下建立和編寫的腳步,拿到linux下,用vi或者vim修改后可能會無法執(zhí)行,這是文件格式的問題:

    vi svn_startup.sh #輸入:set ff 回車 #如果顯示的結(jié)果不是fileformat=unix #再次輸入 set ff=unix #就OK了

    然后修改該腳本的執(zhí)行權(quán)限:

    chmod ug+x svn_startup.sh #或者萬能的 chmod 777 svn_startup.sh

    最后,加入自動(dòng)運(yùn)行:

    vi /etc/rc.d/rc.local #在末尾添加腳本的路徑,如: /www/svn/svn_startup.sh

    現(xiàn)在,你可以重啟一下試試了。

    ps -ef|grep svnserve

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有