CentOS下apache与svn整合安装
########安装apr#########
tar zxvf apr-1.3.6. tar .gz
cd apr-1.3.6
. /configure --prefix= /usr/local/apr
make && make install
cd ..
www.zhishiwu.com
########安装apr-util########
tar zxvf apr-util-1.3.8. tar .gz
cd apr-util-1.3.8
. /configure --with-apr= /usr/local/apr
make && make install
cd ..
########如果已经安装过apache,则需要重新编译安装apache########
tar zxvf httpd-2.2.9. tar .gz
cd httpd-2.2.9 www.zhishiwu.com
. /configure --prefix= /usr/local/apache2 -- enable -so -- enable -rewrite -- enable -dav -- enable -maintainer-mode --with-apr= /usr/local/apr/bin/apr-1-config --with-apr-util= /usr/local/apr/bin/apu-1-config
make && make install
cd ..
########安装subversion,时间稍微有点长,请耐心等候########
tar zxvf subversion-1.6.3. tar .gz
tar zxvf subversion-deps-1.6.3. tar .gz
cd subversion-1.6.3
. /configure --prefix= /usr/local/subversion --with-apxs= /usr/local/apache2/bin/apxs --with-apr= /usr/local/apr/bin/apr-1-config --with-apr-util= /usr/local/apr/bin/apu-1-config
make && make install
cd ..
在 make 的时候,.configure之后,进行 make ,出现如下问题
/usr/bin/ld : cannot find -lexpat
collect2: ld returned 1 exit status
make : *** [subversion /svn/svn ] Error 1
www.zhishiwu.com
应该是缺少-lexpat库文件。
解决方法:
yum install expat expat-devel
手动配置svn:
1.添加svnroot用户以及svn用户组,建立svn版本库目录
useradd svnroot; /*添加svnroot用户*/
groupadd svn ; /*添加svn用户组*/
usermod -a -G svn svnroot; /*将svnroot用户添加到svn用户组*/
mkdir /home/svnroot
mkdir /data
chown -R root:svn /home/svnroot/data
chmod -R g+rws /home/svnroot/data /*给svn组赋予读写权限,可以根据需要更改相应权限*/
chmod -R o-rwx /home/svnroot/data /*删除其他无关人员的读、写、执行权限,默认情况下可能其他人有读权限*/
www.zhishiwu.com
mkdir -pv /home/svnroot/data
chown -R daemon /home/svnroot/data /*因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者
本例apache属于daemon拥有者,而svn仓库属于svn拥有者*/
chmod -R 755 /home/svnroot/data
2.建立svn版本库
/usr/local/subversion/bin/svnadmin create --fs-type fsfs /home/svnroot/data/project1
3.建立访问控制文件
/usr/local/apache2/bin/htpasswd -c /home/svnroot/data/passwd wanghaihan #第一次加用户名需要带上-c,然后输入两次密码
/usr/local/apache2/bin/htpasswd /home/svnroot/data/passwd test1
4.建立本地项目控制文件
cd /home/svnroot/data
vi authz www.zhishiwu.com
[groups]
admin=wanghaihan,test1
[project1:/]
@admin = rw
cat /usr/local/apache2/conf/httpd.conf | grep svn
显示
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
就表明安装成功。
vi /usr/local/apache2/conf/httpd.conf
www.zhishiwu.com
添加
<Location /svn >
DAV svn
SVNParentPath /home/svnroot/data
AuthType Basic
AuthName "Subversion"
AuthUserFile /home/svnroot/data/passwd
AuthzSVNAccessFile /home/svnroot/data/authz
Require valid-user
</Location>
5.重启apache
/usr/local/apache2/bin/apachectl restart
www.zhishiwu.com
访问你的svn项目(可以用客户端工具checkout,或者浏览器访问):
http://ip/svn/project1
或者svn co http://ip/svn/project1
注意:在你上传文件的时候可能会有如下权限不足的提示
Permission denied
svn: Commit failed (details follow):
svn: Can’t create directory ‘/home/svnroot/data/project1/db/txn-current-lock’: Permission denied
或者:
命令: 提交
错误: 提交失败(细节如下):
错误: Can’t open file ‘/home/svnroot/data/project1/db/txn-current-lock’: Permission denied
完成!: www.zhishiwu.com
这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者
本例apache属于daemon拥有者,而svn仓库属于svn拥有者
解决方法:
chown -R daemon /home/svnroot/data
chmod -R 755 /home/svnroot/data
重启下apache:
/usr/local/apache2/bin/apachectl restart