centos7源碼編譯安裝Subversion 1.9.5


svn是Subversion的簡稱,是一個開放源代碼的版本控制系統。
svn有兩種運行方式:1、獨立服務器(svn://xxx.xxx/xxx) 2、借助apache(http://svn.xxx.xxx/xxx)
svn存儲版本數據也有兩種方式:1、BDB(事務安全型表類型) 2、FSFS(一種不需要數據庫存儲系統)
因為BDB方式在服務中斷時,可能鎖住數據,這里我們選擇獨立服務器和FSFS方式安裝svn。

一、下載安裝Subversion必要的源碼文件

安裝svn需要apr,apr-util,zlib,serf,openssl的支持,serf的編譯安裝又需要scons
所以這里我們用yum來安裝zlib和openssl,源碼編譯apr,apr-util,serf,scons

subversion源碼包

http://mirrors.cnnic.cn/apache/subversion/subversion-1.9.5.tar.gz

 
apr源碼包

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz

 
apr-util源碼包

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

 
serf源碼包

https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2

 
scons源碼包

https://sourceforge.net/projects/scons/files/scons/2.5.1/

 
sqlite-amalgamation源碼包

http://www.sqlite.org/2017/sqlite-amalgamation-3160200.zip

 
二、安裝必要依賴

> yum -y install zlib zlib-devel openssl openssl-devel


三、安裝apr

> tar xf apr-1.5.2.tar.gz
> cd apr-1.5.2
> ./configure --prefix=/data/apr
> make && make install

 
四、安裝apr-util

> tar xf apr-util-1.5.4.tar.gz
> cd apr-util-1.5.4
> ./configure --prefix=/data/apr-util \
--with-apr=/data/apr
> make && make install

 
五、安裝scons

> yum -y install python
> tar xf scons-2.5.1.tar.gz
> cd scons-2.5.1
> python setup.py install --prefix=/data/scons

 
六、安裝serf

> tar xf serf-1.3.9.tar.bz2
> cd serf-1.3.9
> /data/scons/bin/scons PREFIX=/data/serf APR=/data/apr APU=/data/apr-util
> /data/scons/bin/scons install
> cp /data/serf/lib/libserf-1.so* /usr/local/lib/

 
七、安裝svn

> tar xf subversion-1.9.5.tar.gz
> mkdir /data/subversion-1.9.5/sqlite-amalgamation
> unzip sqlite-amalgamation-3160200.zip -d /data/subversion-1.9.5/
> cd subversion-1.9.5
> mv sqlite-amalgamation-3160200 sqlite-amalgamation
> ./configure --prefix=/data/svn \
--with-apr=/data/apr \
--with-apr-util=/data/apr-util \
--with-serf=/data/serf \
--enable-mod-activation
> make && make install

 
八、添加環境變量

> echo "export PATH=/data/svn/bin:$PATH" >> /etc/profile
> source /etc/profile

 
九、查看信息

> svn help
> svnserve --version
> svn --version

如果出現如下信息

svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director
> cd /etc/ld.so.conf.d/
> vi user-libs.conf
把我們拷貝serf的文件的目錄加上
/usr/local/lib
> ldconfig

 
十、創建svn倉庫

> mkdir -p /data/repos
> svnadmin create /data/repos
> cd /data/repos
> ll

目錄結構如下:

drwxr-xr-x. 2 root root   72 1月  15 06:58 conf
drwxr-sr-x. 6 root root 4096 1月  15 06:58 db
-r--r--r--. 1 root root    2 1月  15 06:58 format
drwxr-xr-x. 2 root root 4096 1月  15 06:58 hooks
drwxr-xr-x. 2 root root   39 1月  15 06:58 locks
-rw-r--r--. 1 root root  246 1月  15 06:58 README.txt

 
十一、svn配置路徑

> cd /data/repos/conf
> ll

文件如下:

權限配置文件 authz
用戶名口令文件 passwd
svn服務配置文件 svnserve.conf
> vi authz
# /表示倉庫根目錄,用戶名=權限
[/]
test = rw
> vi passwd
[users]
test = 123456
> vi svnserve.conf
[general]
#禁止匿名訪問
anon-access = none
#授權用戶寫權限
auth-access = write
#用戶密碼文件
password-db = passwd
#授權登錄文件
authz-db = authz
#每個svn項目認證名,建議寫項目名
realm = repos


十二、啟動關閉svn服務
一台機器可以啟動多個svn服務,需修改不同端口號。

> svnserve -d -r /data/repos --listen-port 3690
> ps -ef|grep svn
> netstat -ln|grep 3690
> killall svnserve

 
十三、設置svn服務開機啟動
方法一:
修改/etc/rc.d/rc.local文件,添加如下命令

/data/svn/bin/svnserve -d -r /data/repos --listen-port 3690

 
方法二:
在/etc/init.d/目錄下創建svn文件並設置權限755,代碼如下

#!/bin/bash
# centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/data/repos
if [ ! -f "/data/svn/bin/svnserve" ]
then
    echo "svnserver startup: cannot start"
    exit
fi
case "$1" in
    start)
        echo "Starting svnserve..."
        /data/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME
        echo "Finished!"
        ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Finished!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac

 
十四、實現svn代碼倉庫與web線上同步

svn代碼倉庫目錄/data/repos/www1
web線上目錄/data/wwwroot/www1

1、首先checkout一份

> svn co svn://192.168.1.233/www1 /data/wwwroot/www1

2、修改目錄權限

> chmod -R 766 /data/www/www1

3、建立同步腳本

> cd /data/repos/www1/hooks
> cp post-commit.tmpl post-commit
> vi post-commit

添加如下代碼

export LANG=en_US.UTF-8
SVN=/data/svn/bin/svn
WEB=/data/wwwroot/www1
$SVN update $WEB --username test --password 123456
chown -R 766 $WEB
> chmod 755 post-commit

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM