搭建svn倉庫

預期目的:php

一、倉庫放在 /var/svn/ 目錄下,而且倉庫名爲 projectweb

二、建立用戶組lsgogroup,該組下添加兩個成員lsgoweb一、lsgoweb2,密碼直接用用戶名,兩用戶能夠checkout代碼和提交代碼apache

三、利用SVN的鉤子實現當倉庫的代碼更新的時候自動同步至咱們的web目錄,在這裏,個人web目錄在 /home/www/ 下vim

1、搭建svn環境並建立倉庫:服務器

一、安裝Subversion:socket

yum install -y subversionsvn

二、檢測是否安裝成功(查看svn版本號)post

svnserve --version測試

三、建立版本庫orm

//先建目錄
mkdir /var/svn
cd /var/svn
//建立版本庫
svnadmin create /var/svn/project
cd project
//會看到自動生成的版本庫文件
conf db format hooks locks README.txt

至此,svn環境搭建成功。

2、建立用戶組及用戶:

一、 進入版本庫中的配置目錄conf,此目錄有三個文件: svn服務綜合配置文件(svnserve.conf)、 用戶名口令文件(passwd)、權限配置文件(authz)。

二、修改權限配置文件:vim authz

三、配置用戶名命令文件:vim passwd

四、配置SVN服務綜合配置文件svnserve.conf

//找到如下配置項,將前面的#號去掉,而後作相應的配置
anon-access = none //匿名用戶訪問權限:無
auth-access = write //普通用戶訪問權限:讀、寫
password-db = passwd //密碼文件
authz-db = authz //權限配置文件
realm = /var/svn/project //版本庫所在1

注意:全部以上的配置項都須要頂格,即前面不能預留空格,不然報錯

五、啓動svn服務:

svnserve -d -r /var/svn

若是提示:

svnserve: E000098: Can't bind server socket: Address already in use

證實如今svn已經被啓動了,因爲咱們修改了配置文件,所以要重啓svn服務

//查看svn服務詳情
ps aux | grep svn
//將svn服務強制中止 其中790爲svn服務的ID號,-9是kill的參數
kill -9 790

或者用

killall svnserve

再運行 svnserve -d -r /var/svn,進行啓動服務

六、測試服務器:

//咱們在web目錄測試(/home/www)
cd /home/www
svn co svn://localhost/project

若是提示:Checked out revision 1. 表示checkout成功

咱們添加新文件來測試是否提交成功

cd /home/www
touch index.php
svn add index.php //成功的話會顯示 A index.php
svn commit index.php -m "測試提交文件"

假如最後提示:

Adding index.php
Transmitting file data .
Committed revision 2.

則表示咱們svn服務器搭建成功!文件已經可以推送了。

七、本地拉取、推送

在本地首先要安裝SVN吧,具體百度。。。

填寫信息:

點擊ok,提示輸入用戶名和密碼

就填剛纔咱們建立的lsgoweb1或lsgoweb2,和對應的密碼便可。

3、實現svn更新自動同步到web目錄:

一、在web目錄中checkout版本庫

這一步算是比較關鍵的一步了,當時我搭建的時候試了無數次,就是缺乏了這一步。把剛纔checkout的版本庫刪掉,咱們來一次比較正式的checkout:

svn co svn://localhost/project /home/www --username lsgoweb1(SVN帳號) --lsgoweb1(SVN密碼)

進入/var/svn/project/hooks下,創建post-commit文件:

cd /var/svn/project/hooks
vim post-commit

//在該文件裏添加以下代碼,保存

!/bin/sh

設定環境變量,若是沒有設定可能會出現update報錯

設定語言,根據系統語言設置,若是是GBK就設置爲 LANG=zh_CN.GBK

export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn //這裏不用改
WEB_PATH=/home/www //web目錄,若是你的不一樣,能夠改
//這裏的用戶隨便一個就好
$SVN_PATH update $WEB_PATH --username 'lsgoweb1' --password 'lsgoweb1' --no-auth-cache

保存退出。

修改post-commit用戶爲www目錄用戶

chown apache:apache post-commit //個人 /home/www 的用戶組和全部者都是apache

給post-commit 執行權限:

chmod 755 post-commit

麻蛋,終於寫完了。。。。

相關文章
相關標籤/搜索