-1、安装openssl
./config --prefix=/usr/local/openssl
make
make install
0、安装apache2
#重新编译apache时,加上特别的参数 --with-apr,如果是第一次安装,可以不需要这个参数
#如果不加上dav等参数,无法load mod_dav_svn.so等
#如果不加上ssl,也不可启用ssl验证
./configure --enable-dav --enable-dav-fs --enable-so --enable-ssl--with-apr-util=/usr/local/apr-util --enable-dav-lock--with-ssl=/usr/local/openssl
make
make install
(1)
/usr/local/apache2/bin/apachectl -k start // 启动 apahce
/usr/local/apache2/bin/apachectl -k stop // 停止 apache
(2)
/usr/local/apache2/bin/apachectl -k restart
(3)
/usr/local/apache2/bin/apachectl graceful (推荐)
# 配置Subversion需要 --with-apxs=/usr/local/apache2/bin/apxs
1、Berkeley DB(非必须,安装OpenLDAP时,需要这个数据库)
地址:http://download.oracle.com/berkeley-db/db-4.6.18.tar.gz
Subversion的库有两个模式,一个BDB,一个事Fs,即文件模式,通常我们建库都会使用fs模式,这也是默认的模式。
../dist/configure --prefix=/usr/local/berkeley-db
make
make install
2、安装apr和apr-util
下载地址http://apr.apache.org/
./configure
make
make install
# configure的时候不指定路径的话默认是安装到/usr/local/下
# 下面这步要把berkeley数据库一起编译进去,否则berkeley就白装了,如果没有 安装BDB,就不需要--with-berkeley
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-berkeley-db=/usr/local/berkeley-db
make
make install
3、安装sqlite3.6.14
#Subversion-1.6.0版本需要Sqlite,版本要3.4以上,我用的是3.6,Redhat E5默认安装3.3,很容易引起错误,可用以下命令查看:
rpm -qa | grep sqlite
亦可以用rpm 强制删除已安装的sqlite,卸载后,可能引起其它工具无法使用,比如rpm,它也是依赖sqlite才能运行,可能会很麻烦。我第一次安装时,就出了这麻烦,不记得怎么解决的了。
. SQLite 3.x or newer (REQUIRED for client and server)SQLite is a lightweight, embeddable SQL library necessary to
build any repository-related code.
You can get sqlite 3.5.4 from:
http://www.sqlite.org/sqlite-3.5.4.tar.gz
SQLite must be built in thread-safe mode (with 'configure
--enable-threadsafe'). If building SQLite yourself, you
have the option of unpacking the archive into the top of the
Subversion source tree and renaming the resulting directory
within the Subversion source code from ./sqlite-3.5.4/ to
./sqlite/. Subversion will then build and install it for
you.
./configure --enable-threadsafe --disable-tcl --prefix=/usr/local/sqlite3.6
make
make install
4、neon-0.25这个版本可以用,高版本有错误,
如果不安装neon,访问http和https时出现下面错误:
svn: Unrecognized URL scheme
ra_dav:模块,才能访问https和http
ra_local:file:///
ra_svn:svn://
需要--with-ssl参数,否则使用SVN时,会出现下面错误:
svn: SSL is not supported
./configure --prefix=/usr/local/neon --with-ssl
make
make install
5、安装subversion
./configure --with-apxs=/opt/oss/sbin/apxs--with-apr=/usr/local/apr/bin/apr-1-config--with-apr-util=/usr/local/apr-util/bin/apu-1-config--with-sqlite=/usr/local/sqlite3.6 --with-neon=/usr/local/neon
----另一种 配置apxs的
./configure --prefix=/usr/local/svn--with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --with-berkeley-db=/usr/local/berkeley-db --with-sqlite=/usr/local/sqlite3.6
如果berkeley报错的不要了
./configure --prefix=/usr/local/svn--with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite3.6
make
make install
#装完后用svnadmin –version查看下是否有信息,有的话说明安装成功
6、配置
首先创建一个repository
svnadmin create /home/svn/projectname
把/home/svn/projectname/conf/passwd, /home/svn/projectname/conf/svnserve.conf, /home/svn/projectname/hooks/control-file里的参数配置一下
passwd里放的是每个用户名和密码
svnserve.conf里放的是关于匿名和非匿名用户的权限
control-file里放的是具体到每个文件夹,每个用户的读写权限
再来要打开subversion的端口,subversion默认端口是3690
su - root -c "svnserve -d -r /home/svn/projectname"
命令执行后可以用
ps -ed | grep svnserve
查看svnserve服务是否已经启动
还可以用
netstat -ant | grep 3690
查看3690端口是否已经被监听
7、导入资源
首先把当前路径设置到放代码的路径,比如说
/home/htdocs/projectname
然后执行
svn import svn://localhost/projectname -m "projectname"
等命令行重新出现后就完成了。
8、Check out
从客户端把代码check out。
三、在apache中配置SVN
vi /usr/local/apache2.2.9/conf/httpd.conf
① 如果你看到如下两句,说明安装是成功的
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
如果有下面一句就用#注释掉
#LoadModule foo_module modules/mod_foo.so
② 定义apache访问svn配置:
我使用的httpd.conf配置
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION
#############
/opt/app/svndata/conf/authz 文件的配置如下:
[groups]
admin=svnuser,dhj
[/]
*=r
@admin=rw
[dhj:/trunk]
svnuser = rw
* = r
四、配置svn
①建立svn版本库目录
mkdir -p /opt/svndata/repos #可以多建版本库目录
②建立svn版本库
svnadmin create /opt/svndata/repos
mkdir -p /opt/svndata/repos #可以多建版本库
③建立本地访问控制文件
/usr/local/apache2.2.9/bin/htpasswd -c /opt/svn/conf/passwd.conf username
然后输入密码即可,默认是MD5加密的
/usr/local/apache2.2.9/bin/htpasswd /opt/svn/conf/passwd.conf username1 #追加用户
④建立本地项目控制文件
touch /opt/svn/conf/authz.conf
本例authz.conf内容为:
[groups]
#=,
admin=username
#[:projectName/directory]
#@=>
#=
[/]
@admin = rw #指定用户组成员可以读写根目录所有应用
[repos:/abc/aaa]
username1= rw #指定用户username1可以读写:/abc/aaa目录的文件
/usr/local/apache2.2.9/bin/apachectl start
② 打开浏览器,输入http://192.168.1.107/svn/repos #本例服务器ip是192.168.1.107
使用刚才创建的权限用户名与密码登录即可访问
注意:在你上传文件的时候可能会有如下权限不足的提示
Permission denied
svn: Commit failed (details follow):
svn: Can't create directory '/opt/svndata/repos/db/transactions/0-1.txn': Permission denied
这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者
本例apache属于daemon拥有者,而svn仓库属于svn拥有者
解决方法:
chown -R daemon /opt/svndata/repos
chmod -R 755 /opt/svndata/repos
重启下apache:
/usr/local/apache2.2.9/bin/apachectl stop
/usr/local/apache2.2.9/bin/apachectl start
3. “Could not open the requested SVN filesystem” errorcode=2
如果出现这个错误你就得看一下Apache的httpd.conf文件里面相关版本库路径是不是正确,请确保使用的是绝对路径.
其他的配置参考
4 Svn配置
4.1 建立版本库目录
[root@localhost root] #mkdir –p /svn
svn是我自己建立的目录,各人根据具体情况设计名字
4.2 建立一个用户,用与管理这个版本库目录
[root@localhost root] #useradd -m -s /bin/bash lyl
lyl是建立的用户名,可以根据习惯改
4.3 用建立的用户管理我们刚建的版本库目录
[root@localhost root] #chown –R lyl.lyl /svn
用lyl来管理我们的版本库目录/svn
4.4 启动服务器
用用户lyl来管理版本库目录/svn,则须转为lyl,命令如下:
[root@localhost root] #su lyl
启动svn服务
[root@localhost root] #svnserve -d -r /svn/;
-d表示以daemon方式(后台运行)运行
-r/svn/指定根目录是/svn/
检查服务器是否启动正常:
[svn_leader@localhost root]$ ps –ef|grep svnserve
如果显示如下,即为启动成功:
lyl 6941 1 0 15:07 ? 00:00:00 svnserve -d --listen-port 9999 -r /svn
5 建立版本库
[root@localhost home]# cd /svn
[root@localhost svnrepos]# svnadmin create p1;
P1可以改,在p1目录下会有下面目录:conf dav db format hooks locks README.txt
6 配置允许访问test的用户
进入到conf,命令为:
[root@localhost safety]# cd conf
出现三个文件:authz passwd svnserve.conf
6.1 修改svnserve.conf
[root@localhost conf]# vi svnserve.conf
出现:
[general]
………………………
# anon-Access = read
# auth-access = write
………………………
# passWord-db = passwd
………………………
# authz-db = authz
内容修改为:
[general]
………………………
anon-access = none
auth-access = write
………………………
password-db = passwd
………………………
authz-db = authz
6.2 修改passwd
[root@localhost conf]# vi passwd
文件格式如下:
[users] = = |
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示 例:
[users]
alan = password
king = hello
这个里面的user表示当前test版本库的成员.
6.3 修改authz
[root@localhost conf]# vi authz
用户组格式:
[groups] = , |
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在 passwd文件里能找到,它是给那个里面的user赋权限.
版本库目录格式:
[/目录] @ = = |
示例:
[groups]
admin = alan
[/]
@admin = rw
[/svn/p1/WebProject]
king = rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)
[/svn/p1/web]
zp=r(表示zp能够读/svn/p1/web目录下的所有信息)
到此svn服务器的的安装和配置就已经完成了