Linux下搭建SVN+Apache环境

会有一股神秘感。 提交于 2019-12-08 13:42:48

一 准备需要的安装包。

(1)下载 apache 。通过官网下载,我使用了版本 : httpd-2.2.23.tar.gz 

 (2) 下载Subverson  。下载地址

http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz

http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz


二 安装

安装顺序有要求, 先安装Apache ,再安装Subversion 。

1 安装apache 

把安装压缩包[ httpd-2.2.23.tar.gz ]上传linux环境/usr/local/下面。
[root@localhost /]# cd /usr/local/
[root@localhost /]# tar zxfhttpd-2.2.23.tar.gz
[root@localhost /]# cd /usr/local/httpd-2.2.23
[root@localhost /]# configure -prefix=/usr/local/apache -enable-dav -enable-so && make && make install


2 启动apache, 安装无错误后  进入

 #cd /usr/local/apache/bin 

# ./apachectl start 

若提示启动失败,端口口被占用: #vi /usr/local/apche/conf/http.conf 

找到

#Listen 12.34.56.78:80
Listen 80   

将80修改为自己的端口好。我修改为81 Listen 80    ---若启动成功,不用修改端口号。

重启apache ,客户端输入地址 http://10.0.1.200:81/ (端口号为81) 或 http://10.0.1.200/ (端口号默认80)

页面展示

It works! 字样 ,表示安装成功。


3 安装Svn

把安装压缩包[subversion-1.6.12.tar.gz]和[subversion-deps-1.6.12.tar.gz]拷到linux环境/usr/local/下面。

[root@localhost /]# cd /usr/local/

[root@localhost /]# tar zxf subversion-1.6.12.tar.gz

[root@localhost /]# tar zxf subversion-deps-1.6.12.tar.gz

(安装包解压缩,解压缩后生成安装文件夹[subversion-1.6.12],两个文件都会解压缩到同一个文件夹下)

[root@localhost local]# cd /usr/local/subversion-1.6.12

[root@localhost subversion-1.6.12]# rm -rf apr

[root@localhost subversion-1.6.12]# rm -rf apr-util(删除subversion自带的apr和apr-util文件夹,用apache的就可以)

[root@localhost subversion-1.6.12]# cd /usr/local/subversion-1.6.12

[root@localhostsubversion-1.6.12]# ./configure -prefix=/usr/local/subversion -with-apxs=/usr/local/apache/bin/apxs -with-apr=/usr/local/apache/bin/apr-1-config -with-apr-util=/usr/local/apache/bin/apu-1-config 

[root@localhostsubversion-1.6.12]# make

[root@localhostsubversion-1.6.12]# make install

[root@localhost subversion-1.6.12]# svnserve --version


--- 本人安装到此,没有出现任何错误。但是 执行#svnserve --version 显示的版本不是1.6的,而是1.4(老版本)说明之前安装过旧版本的svn。

解决办法#vi /etc/profile

在最后填加

#set svnpath

export PATH=/usr/local/subversion1.6/bin:$PATH

export PATH

保存退出。

执行 #scource /ect/profile

重新执行 #svnserve --version --ok


4 检查svn是否与apache兼容

# vi /usr/local/apache/conf/httpd.conf

查找文件中是否增加了

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

两行信息,并且查看/usr/local/apache/modules 下是否有mod_dav_svn.so, 和mod_authz_svn.so 文件

如果http.conf 中没有增加代码。modules 下有mod_dav_svn.so, 和mod_authz_svn.so 文件,再http.conf中增加那两行代码。

如果没有mod_dav_svn.so, 和mod_authz_svn.so,svn安装的错误。按照步骤重装。



配置 svn+apache

1 创建svn库
(1) 创建 svn专用户   # useradd pocsvn

(2) 创建SVN 版本库目录  #mkdir /home/pocsvn/project 

(3) 创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

(4) 将目录 project 目录拥有者修改为 pocsvn 用户  :

#chown -R pocsvn:pocsvn /home/pocsvn/project   并 增加权限 chmod 755 /home/pocsvn/project

2 配置svn 依赖apache
(1) 使用root用户  # vi /usr/local/apache/conf/httpd.conf 将

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

前的注释去掉(我安装时这两行没有注释。网上查有人说这两行会有注释。有的话去掉注释)
(2 )找到

User apache

Group apache

修改为

User pocsvn

Group pocsvn

(3) 在文件末尾添加

<Location /svn>

DAV svn

SVNParentPath /home/pocsvn/project     -----svn库的根目录

AuthType Basic

AuthName "welcome to cjybt"      -----浏览器登陆时的提示信息。随便写

AuthUserFile /home/pocsvn/project/passwd ---  用户的密码信息

AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz --- 指向svn库的conf目录下authz
Require valid-user -- ("Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库)

</Location>

(4) 生成passwd文件

#htpasswd -bc /home/pocsvn/project/passwd   hello   hello123

---在/home/pocsvn/project/下生成passwd文件,用户名为hello,密码为hello123

#htpasswd -b /home/pocsvn/project/passwd   hello2   hello123

---在/home/pocsvn/project/passwd文件中添加用户名为hello,密码为hello123

(5) 编辑用户权限文件 authz

#vi /home/pocsvn/project/poc/conf/authz

[groups]       --表示群组设置

admin = hello    --表示admin群组里的成员有hello,如果要配置多个,用逗号分隔

develop = hello2  --表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔

[poc:/]        --表示仓库poc的根目录下的访问权限

hello = rw       --poc仓库hello用户具有读和写权限

hello2 = r        --poc仓库hello2用户具有只读权限

@admin = rw    --表示群admin的成员都具有读写权限

@develop = r   --表示群poc的成员都具有只读权限

[/]            --表示在所有仓库的根目录下

* = r          --表示对所有的用户都具有读权限

--- 在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错。


(5)修改权限

chmod 755 /home/pocsvn/project/passwd

chown -R pocsvn:pocsvn   /home/pocsvn/project/passwd


(6)启动svn

切换到pocsvn用户  #svnserve -d --listen-port 8888 -r /home/pocsvn/project

-d 表示以 daemon 方式(后台运行)运行

-r 指定根目录是/home/pocsvn/project

--listen-port 8888  --表示在8888端口上进行监听

检查svn其否启动

ps -ef|grep svnserve 或 ps -ef|grep 8888


(7)重启apache,切换回root用户。启动apache


(8) 客户端 访问 :http://ip:81/svn/poc 出现登陆窗口则为配置成功。

--如果登陆后提示403或无法访问。为权限配置不对,重新配置下权限即可。


至此,svn和apache结合的svn配置就搭建好了。


我在安装的过程中出现了很多问题。总结如下

1 启动apache 报错httpd: Syntax error on line 111 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/subversion/lib/libsvn_subr-1.so.0: undefined symbol: apr_hash_clear

解决办法:重新安装apache,注意增加参数

命令 # ./configure --prefix=/usr/local/apache2/ --enable-dav --enable-so


--enable-dav --enable-so参数是必须要加的,你还可以根据您的需要添加其他的参数。

--enable-dav 启用davweb支持,是subversion+apache组合必选,缺少的话,在运行apache会出现undefined symbol: dav_register_provider的错误

--apr 和 apr-util一般会在httpd的安装包内,subversion安装会使用到apr和par-util,如果当前系统没有,最好安装一下


2 重转apache后。必须重装subversion,重装svn是执行make ,make install 是提示有错误信息。

可以先执行# make clean ,然后在 #make ,#make install

最好一次装好,重装的话问题不少。


3 apr 和apr-util有问题。

网上资料在svn和apache集成的时候是有分开装apr,和apr-util的,这两个在apache中就有了。删除原来的。

[root@test ]# rpm -qa|grep subversion

subversion-1.4.4.el5

[root@test ]# rpm -e --allmatches subversion

[root@test ]# rpm -qa|grep apr

apr-1.2.7-11

apr-util-1.2.7-7.el5

apr-1.2.7-11

apr-util-1.2.7-7.el5

[root@test ]# rpm -e --allmatches apr-util

[root@test ]# rpm -e --allmatches  apr

[root@test ]# echo '/usr/local/APR/lib'>>/etc/ld.so.conf

[root@test ]# echo '/usr/local/ARP-util/lib'>>/etc/ld.so.conf

[root@test ]# ldconfig


参考文档:

http://www.spunkmars.org/2011/06/23/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E8%A7%A3%E5%86%B3svn%E5%AF%BC%E5%85%A5%E6%8A%A5%E9%94%99%EF%BC%9Aundefined-symbol-apr_hash_clear/

http://wuhongyu.iteye.com/blog/1114670

http://hi.baidu.com/hellgrowl/item/75aa898fd97eb1c298255f9d

http://hi.baidu.com/anglem/item/6867156e35502b1d6995e671

http://blog.csdn.net/knock/article/details/5057105

http://lookdfw.blog.163.com/blog/static/58249742201010652235834/

















易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!