1. 程式人生 > >Linux下編譯安裝SVN

Linux下編譯安裝SVN

cep can 關閉 進程 關閉selinux creat table curses 依賴包

說明:
SVN(subversion)的運行方式有兩種:
一種是基於Apache的http、https網頁訪問形式;
還有一種是基於svnserve的獨立服務器模式。
SVN的數據存儲方式也有兩種:一種是在Berkeley DB數據庫中存儲數據;另一種是使用普通的文件FSFS存儲數據。
由於Berkeley DB方式在使用中有可能鎖住數據,一般建議使用FSFS方式更安全。
實現目的:
以svnserve的獨立服務器模式,使用FSFS數據存儲方式源碼編譯安裝配置SVN服務器。

一、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉

SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效

二、開啟防火墻端口
基於svnserve的獨立服務器模式,默認端口為3690
vi /etc/sysconfig/iptables #編輯防火墻配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
:wq! #保存退出
service iptables restart #最後重啟防火墻使配置生效

三、安裝編譯工具包
yum install apr autoconf automake bison cloog-ppl compat

cpp curl curl-devel fontconfig fontconfig-devel freetype freetype freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libjpeg libsepol-devel libselinux-devel libstdc++-devel libtool libtool libgomp libxml2 libxml2-devel libXpm libtiff libtiff
libX make mpfr ncurses ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib nasm nasm wget zlib-devel zlib unzip perl-ExtUtils-Embed
yum remove apr apr-util subversion subversion-libs #刪除系統中原有的svn及依賴包

四、下載svn需要的依賴軟件包
說明:安裝svn需要的軟件包:apr apr-util serf scons openssl
軟件包存放目錄:/home/admin/software/svn
1、下載apr
https://dist.apache.org/repos/dist/release/apr/apr-1.6.3.tar.gz
2、下載apr-util
https://dist.apache.org/repos/dist/release/apr/apr-util-1.6.1.tar.gz
3、下載scons
http://prdownloads.sourceforge.net/scons/scons-3.0.0.tar.gz
4、下載openssl
http://www.openssl.org/source/openssl-1.0.2o.tar.gz
5、下載serf
http://fossies.org/linux/www/serf-1.3.9.tar.gz
6、下載svn
http://www.apache.org/dist/subversion/subversion-1.10.0.tar.gz
7、下載sqlite-amalgamation
https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip

五、安裝SVN
1、安裝apr
cd /home/admin/software/svn #進入軟件包存放目錄
tar zxvf apr-1.6.3.tar.gz #解壓
cd apr-1.6.3 #進入安裝目錄
./configure --prefix=/home/admin/project/apr #配置
make #編譯
make install #安裝

2、安裝apr-util
cd /home/admin/software/svn
tar zxvf apr-util-1.6.tar.gz
cd apr-util-1.6.1
./configure --with-apr=/home/admin/project/apr/bin/apr-1-config
make
make install

3、安裝scons
cd /home/admin/software/svn
tar zxvf scons-3.0.0.tar.gz
cd scons-3.0.0
python setup.py install #配置安裝

4、安裝openssl
cd /home/admin/software/svn
tar zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
CFLAGS=-fPIC ./config --prefix=/home/admin/project/openssl enable-shared
make
make install

vi /etc/profile #添加系統環境變量
export PATH=$PATH:/home/admin/project/openssl/bin
:wq! #保存退出
source /etc/profile #使配置生效
ln -s /home/admin/project/openssl/include/openssl /usr/include/openssl #添加系統軟連接

5、安裝serf
cd /home/admin/software/svn
tar zxvf serf-1.3.9.tar.gz
cd serf-1.3.9
scons prefix=/home/admin/project/serf apr=/home/admin/projectapr/bin/apr-1-config apr-util=/home/admin/projectapr/bin/apu-1-config openssl=/home/admin/project/openssl
scons install
cd /home/admin/project/serf/lib
cp libserf-1.so* /home/admin/project/lib/ #拷貝文件到系統目錄

6、安裝svn
cd /home/admin/software/svn
tar zxvf subversion-1.10.0.tar.gz
cd subversion-1.10.0
mkdir /home/admin/software/svn/subversion-1.8.13/sqlite-amalgamation #創建sqlite-amalgamation目錄
cd /home/admin/software/svn
unzip sqlite-amalgamation-3240000.zip -d /home/admin/software/svn/subversion-1.10.0/sqlite-amalgamation
#解壓sqlite-amalgamation軟件包到sqlite-amalgamation目錄
./configure --prefix=/home/admin/project/svn --with-apr=/home/admin/project/apr/bin/apr-1-config --with-apr-util=/home/admin/project/apr/bin/apu-1-config --with-serf=/home/admin/project/serf --with-openssl=/home/admin/project/openssl --with-apxs=/home/admin/project/apache2/bin/apxs --with-lz4=internal --with-utf8proc=internal --with-expat=builtin --without-berkeley-db --enable-mod-activation #配置
make #編譯
make install #安裝
vi /etc/profile #添加系統環境變量,添加到最後一行
export PATH=$PATH:/home/admin/project/svn/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效
whereis libexpat.so.1 #查找文件安裝目錄,如下:
libexpat.so: /lib/libexpat.so.0 /home/admin/projectlib/libexpat.so /home/admin/projectlib/libexpat.so.1
vi /etc/ld.so.conf #編輯加入libexpat.so.1的目錄
/home/admin/project/lib/
:wq! #保存退出
ldconfig #使配置生效
7、測試安裝是否成功:
svn help #查看svn幫助信息
svnserve --version #查看svn版本信息
svn --version
六、配置svn
1、創建svn代碼庫
mkdir -p /home/svn #創建目錄
svnadmin create /home/svn #創建svn代碼庫
#上面的命令執行完成之後,會自動建立svn庫,在/home/svn文件夾含了conf,db,format,hooks,locks,README.txt等文件。
#說明svn代碼庫創建成功。
2、配置svn代碼庫
cd /home/svn/conf #進入配置文件存放目錄
vi /home/svn/conf/svnserve.conf #配置全局文件,在最後添加以下代碼
[general]
anon-access=none #禁止匿名訪問,設置為none。默認為read,參數:read,write,none
auth-access=write #授權用戶寫權限
password-db=passwd #用戶賬號密碼文件路徑,可以寫絕對路徑
authz-db=authz #訪問控制權限文件路徑,可以寫絕對路徑
realm=svn #每個SVN項目的認證命,會在認證提示裏顯示,建議寫項目名稱。
:wq! #保存退出
vi /home/svn/conf/passwd #配置用戶密碼
[users]
#harry = harryssecret
#sally = sallyssecret
osyunwei=123456
test=123456
test2=123456
:wq! #保存退出
vi /home/svn/conf/authz #配置權限控制文件,設置用戶可以訪問的目錄
[groups]
admin = test
users = test,test2
[/]
@admin = rw

  • = r
    :wq! #保存退出
    #[/]代表根目錄下所有的資源
    3、啟動svn
    svnserve -d -r /home/svn --listen-port 3690
    ps -ef|grep svn|grep -v grep #查看svn進程
    root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /home/svn
    netstat -ln |grep 3690 #檢查svn端口
    tcp 0 0 0.0.0.0:3690 0.0.0.0: LISTEN
    killall svnserve #關閉svn服務
    4、設置svn服務開機啟動
    vi /etc/init.d/svn #編輯,添加以下代碼
    #!/bin/sh
    #chkconfig: 2345 85 85
    #processname: svn
    svn_port=3690
    svn_home=/home/svn
    if [ ! -f "/home/admin/project/svn/bin/svnserve" ]
    then
    echo "svnserver startup: cannot start"
    exit
    fi
    case "$1" in
    start)
    echo "Starting svnserve..."
    /home/admin/project/svn/bin/svnserve -d -r $svn_home --listen-port $svn_port
    echo "Successfully!"
    ;;
    stop)
    echo "Stoping svnserve..."
    killall svnserve
    echo "Successfully!"
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    )
    echo "Usage: svn { start | stop | restart } "
    exit 1
    esac
    :wq! #保存退出
    chmod +x /etc/init.d/svn #添加執行權限
    chkconfig svn on #開啟自啟動
    5、測試svn
    svn checkout svn://127.0.0.1/ --username=test --password=123456 #將文件下載到本地目錄
    svn update --username=test --password=123456 #更新上次修改之後的版本庫

Linux下編譯安裝SVN