此篇是之前的教程篇,并没有真实的虚拟机环境,只是一些安装步骤。
centos6.9安装svn
- svn简介
svn是Subversion的简称,是一个开放源代码的版本的控制系统。svn有两种运行方式:
1.独立服务器(svn://xxx.xxx.xxx.xxx/xxx)。
2.借助apache(http://svn.xxx.xxx/xxx)
svn存储版本数据也有两种方式:1、BDB(事务安全型表类型) 2、FSFS(一种不需要数据库存储系统)
因为BDB方式在服务中断时,可能锁住数据,这里我们选择独立服务器和FSFS方式安装svn。
2.下载安装Subversion必要的源码文件
安装svn需要apr,apr-util,zlib,serf,openssl的支持,serf的编译安装又需要scons,所以这里我们用yum来安装zlib,源码编译apr,apr-util,serf,scons
卸载svn:yum -y remove subversion
创建svn用户
useradd svn
passwd svn
qwqw123
sudo visudo
svn ALL=(ALL) ALL
下载subversion源码包
https://mirrors.cnnic.cn/apache/subversion/
http://subversion.apache.org/
apr源码包
https://mirrors.tuna.tsinghua.edu.cn/apache/apr/
apr-util源码包
http://mirrors.tuna.tsinghua.edu.cn/apache//apr/
serf源码包
https://www.apache.org/dist/serf/
下载openssl
https://www.openssl.org/source/
scons源码包
https://sourceforge.net/projects/scons/files/scons/2.5.1
sqlite-amalgamation源码包
http://www.sqlite.org/2017/sqlite-amalgamation-3160200.zip
安装必要依赖
删除系统中原有的svn及依赖包
yum remove apr apr-util subversion subversion-libs
安装依赖
yum -y install yum install python-devel zlib openssl-devel file-libs libtool libtool-devel openssl
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
安装编译工具包
把安装包放到 cd /usr/local/src
进入软件包存放目录
安装apr
tar -zxvf apr-1.6.2.tar.gz
cd apr-1.6.2
./configure --prefix=/usr/local/apr #配置
make && make install
cannot remove `libtoolT’: No such file or directory 安装Apr出现的问题
F1:30951行编辑 configure文件,查找
R
M
"
RM "
RM"cfgfile" 这个地方,用#注释掉
F2:30350行在configure里面 RM='
R
M
−
f
′
这
里
的
RM -f' 这里的
RM−f′这里的RM后面一定有一个空格。 如果后面没有空格,直接连接减号,就依然会报错。把RM=‘
R
M
′
改
为
R
M
=
′
RM'改为RM='
RM′改为RM=′RM -f’
安装apr-util
> tar -zxvf apr-util-1.6.0.tar.gz
> cd apr-util-1.6.0
>./configure --with-apr=/usr/local/apr/bin/apr-1-config
#./configure --prefix=/data/apr-util \ 默认安装路径就行
#--with-apr=/data/apr
> make && make install
安装scons
> yum -y install python
> tar -zxvf scons-2.5.1.tar.gz
> cd scons-2.5.1
> python setup.py install
># python setup.py install --prefix=/ usr/local/scons
安装openssl —忽略不安装,不然安装错误太多
cd /usr/local/src
tar -zxvf openssl-1.0.2l.tar.gz
cd openssl-1.0.2l
CFLAGS=-fPIC ./config --prefix=/usr/local/openssl enable-shared
make && make install
vi /etc/profile #添加系统环境变量
export PATH=$PATH:/usr/local/openssl/bin
:wq! #保存退出
source /etc/profile #使配置生效
ln -s /usr/local/openssl/include/openssl /usr/include/openssl #添加系统软连接
安装serf
> tar xf serf-1.3.9.tar.bz2
> cd serf-1.3.9
> scons PREFIX=/usr/local/serf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr/bin/apu-1-config OPENSSL=/usr/local/openssl
> scons install
> cd /usr/local/serf/lib
> cp libserf-1.so* /usr/local/lib/ #拷贝文件到系统目录
> #/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.7.tar.gz
>mkdir /usr/local/src/subversion-1.9.7/sqlite-amalgamation #创建sqlite-amalgamation目录
>cd subversion-1.9.7
> unzip ../sqlite-amalgamation-3160200.zip -d /usr/local/src/subversion-1.9.7
>mv sqlite-amalgamation-3160200/* sqlite-amalgamation
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-serf=/usr/local/serf --enable-mod-activation
#配置--with-openssl=/usr/local/openssl
> make && make install
以下备留
wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.9.5.tar.gz
tar zxvf subversion-1.9.5.tar.gz
subversion-1.9.7.tar.gz
$ cd subversion-1.9.7
yum安装svn
yum install subversion
卸载svn
yum -y remove subversion
#查看版本
svnserve --version
添加环境变量
vi /etc/profile #添加系统环境变量,添加到最后一行
export PATH=$PATH:/usr/local/svn/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效
> svn help
如果出现如下信息
svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director
找到serf的安装路径,vi /etc/ld.so.conf 添加进去ldconfig
whereis libexpat.so.1 #查找文件安装目录,如下:
libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1
vi /etc/ld.so.conf #编辑加入libexpat.so.1的目录
[root@fjs lib]# vi /etc/ld.so.conf
/usr/local/lib/
include ld.so.conf.d/*.conf
/usr/local/serf/lib
:wq! #保存退出
ldconfig #使配置生效
不是符号连接
查看信息,验证安装
> svn help
> svnserve --version
> svn --version
使用svn
svn版本库
#创建SVN项目目录
sudo mkdir –p /data/svn/project/repos
#创建仓库
svnadmin create --fs-type fsfs /data/svn/project/repos
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
下面说明:svn服务没有打开,需要启动svn服务
另外一个是项目文件夹权限,更改权限,并且不是以管理员启动
创建之后使用wdcp或vpsmate即可看到文件夹里面多了一个项目:
(1)dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
(2)db目录:就是所有版本控制的数据存放文件
(3)hooks目录:放置hook脚本文件的目录
(4)locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
(5)format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
(6)conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
创建多个多个项目,配置权限统一管理
svn服务器中的项目路径为/data/svn
其中conf为配置文件,learn为学习目录(学习途中写的代码),project就是你写的项目代码
然后project中有很多项目,可以新创建很多项目:
svnadmin create --fs-type fsfs /data/svn/project/repos1
根路径下,统一管理所有代码仓库
cd /data/svn/project/repos/conf /data/svn/conf
/data/svn/conf文件夹下有authz, passwd, svnserve.conf配置文件,authz 是权限控制, passwd是设置用户和密码的, svnserve是设置svn相关的操作。
多项目只需要统一配置authz和passwd,然后进行修改svnserve.conf即可
配置passwd
#sudo vim /data/svn/conf/passwd
用户名=密码,建立了hello用户, 密码123
配置权限authz
#vim /data/svn/conf/authz
fjs对所有目录有读写权限
配置svnserve.conf
可以先写一个模板出来,再复制到项目文件夹conf中,再修改
模板:#cp /data/svn/conf/svnserve.conf ..
#vim ../svnserve.conf
也可以单独处理
#vim /data/svn/project/repos/conf/svnserve.conf
添加:语句都必须顶格写, 左侧不能留空格, 否则会出错
anon-access = none // 匿名用户无法访问权限
auth-access = write // 授权用户有写权限
password-db = /data/svn/conf/passwd // 密码文件地址
authz-db = /data/svn/conf /authz // 权限文件地址
realm = repos // 指定svn仓库的权限域,默认仓库的uuid
启动服务
启动SVN服务
svnserve -d -r /data/svn
// svn默认监听端口是3690
//指定其他端口号启动服务器
svnserve -d -r /data/svn –listen-port 3391
重启svn服务器
停止命令
killall svnserve
ps -aux|grep svnserve
kill -9 ID
svnserve –d –r /usr/svn
因为lean没有配置svn仓库,所以导致客户端访问失败
所以每创建一个仓库时,就需要修改下svnserve,和上面的权限问题,不要创建错误了。#另外,这三个文件内容里前面不要有空格
注意:为了规范:一般在项目目录下再创建:
mkdir -p /data/svn/projec1/trunk 主干
mkdir -p / data/svn/projec1/tags 附加
mkdir -p / data/svn/projec1/branches 分支
记得快照