Centos 使用源码安装subversion apache-httpd
需要用到的安装包有:
subversion-1.9.3.tar.gz
httpd2-2.4.20.tar.gz
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
sqlite-autoconf-3120100.tar.gz
zlib-1.2.8.tar.gz
pcre-8.37.tar.gz下载链接:
http://apache.opencas.org/subversion/subversion-1.9.3.tar.gz
http://mirrors.noc.im/apache//httpd/httpd-2.4.20.tar.gz
http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
https://www.sqlite.org/2016/sqlite-autoconf-3120200.tar.gz
http://zlib.net/zlib-1.2.8.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
然后解压缩上面那些压缩包。如果在linux中,看到的应该是这个样子。
他们的依赖关系是这个样子
假设的所有的工具的安装目录都是/usr/local/xxxx
安装apr
,进入apr
的解压缩目录apr-1.5.2
后,执行以下命令
./configure --prefix=/usr/local/apr && make && make install
安装apr-util
,进入apr-util
的解压缩目录apr-util-1.5.4
后,执行以下命令
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr && make && make install
安装sqlite
,进入sqlite
的解压缩目录sqlite-autoconf-3120100
后,执行以下命令
./configure --prefix=/usr/local/sqlite && make && make install
安装zlib
,进入zib
的解压缩目录zlib-1.2.8
后,执行以下命令
./configure --prefix=/usr/local/zlib && make && make install
安装pcre
,进入pcre
的解压缩目录pcre-8.37
后,执行以下命令
./configure --prefix=/usr/local/pcre && make && make install
安装httpd
,进入httpd
的解压缩目录httpd2-2.4.20
后,执行以下命令
./configure --prefix=/usr/local/apache --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-dav --enable-so && make && make install
--enable-dav
--enable-so
可以方便加载mod_dav_svn.so
,mod_authz_svn.so
文件。但是究竟是不是必须的呢,并没有验证。
安装subversion
,进入subversion
的解压缩目录subversion-1.9.3
后,执行以下命令
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite --with-zlib=/usr/local/zlib --with-apxs=/usr/local/apache/bin/apxs --with-apache-libexecdir=/usr/local/subversion/libexecdir --enable-mod-activation --enable-mod-activation
make
make install
说明:
--with-*
的参数指定编译的时候需要哪些工具;--with-apxs=/usr/local/apache/bin/apxs
和--enable-mod-activation
是必须的,可以编译安装后生成mod_dav_svn.so
和mod_authz_svn.so
文件,这两个文件是在和httpd
集成的时候所需要的。
如果在执行make的时候出现xx.lo is not valid object之类的错误,请删除解压缩的subversion1.9.3目录,并且重新解压缩,重新执行以上./configure...
、make
、make install
这些命令。
至此,subversion
已经安装完成,下面需要让subversion
和httpd
进行集成,达到可以加密用户密码和使用http协议访问SVN库的目的。
现在开始创建SVN库,并且配置httpd.conf
文件。
为了方便调用svn和httpd中的命令,将他们加入到环境变量中。
vim /etc/profile
在文件的最末尾加上
PATH=$PATH:/usr/local/subversion/bin:/usr/local/apache/bin
退出编辑之后,执行
source /etc/profile
是环境变量立即生效。
使用svnadmin
创建svn仓库,假设仓库创建在/svnrepos
目录下面,仓库名字叫testrepo
mkdir /svnrepos
svnadmin create /svnrepos/testrepo
配置httpd.conf
文件。
vim /usr/local/apache/conf/httpd.conf
在文件末尾加上
#加载svn的两个so文件
LoadModule dav_svn_module /usr/local/subversion/libexec/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/subversion/libexec/mod_authz_svn.so
#配置svn仓库
<Location /testrepo>
DAV svn
SVNPath /svnrepos/testrepo
AuthzSVNAccessFile /svnrepos/testrepo/conf/authz
AuthType Basic
AuthName "testrepo"
AuthUserFile /svnrepos/testrepo/conf/passwd
Require valid-user
</Location>
在httpd.conf文件中查找 ServerName,然后把ServerName 的值改成localhost:80。如果这行被注释了,就取消这行的注释。
SVN库的基本配置
修改testrepo
库下面的配置文件/svnrepos/testrepo/conf/svnserve.conf
,在[general]
标签下面添加一下配置
anon-access = none
auth-access=write
password-db=/hkcts/svnrepos/conf/passwd
authz-db=/hkcts/svnrepos/conf/authz
当subversion
和httpd
集成的时候,subversion
就作为了httpd
的一个组件,添加用户、重置用户密码就通过httpd
的命令htpasswd
来执行。添加用户和修改用户是同一个命令,新建一个用户之前,最好检查一下是否已经含有需要创建的用户,要不然一下就重置了这个用户的密码。另外第一次使用htpasswd创建用户的时候,svn库中原来的passwd文件格式和htpasswd将要使用的格式是不相符的,这时候需要删除原来的passwd文件,让htpasswd命令自己创建passwd文件。具体使用方式见下面的命令
# 首次在再passwd文件中使用htpasswd创建用户,执行下面的命令。
# -c表示要创建后面指定的文件
htpasswd -bc AuthUserFile指定的passwd文件 用户名 用户密码
# 不是首次的话,去掉-c这个属性
htpasswd -b AuthUserFile指定的passwd文件 用户名 用户密码
我们新建一个用户test,密码是123456,在/svnrepos/testrepo/conf
目录下执行命令
# 首次在再passwd文件中使用htpasswd创建用户,执行下面的命令
htpasswd -bc passwd test 123456
#不是首次的话,去掉-c这个属性
htpasswd -b passwd test 123456
给test用户赋予所有目录的权限
[/]
test = rw
启动httpd服务
apachectl start
如果你的命令正常启动,恭喜你运气很好。
我的系统在启动httpd的时候出现了一个错误是undefined symbol: dav_register_privoder
,后来在加载两个so文件之前,首先加载了mod_dav.so
问题就解决了。在/usr/local/apache/conf/httpd.conf中
修改。
#这句话在httpd.conf中已经存在,可以使用查找命令查找一下,然后直接取消注释就好
#需要放到LoadModule dav_svn_module.....那两句话前面
LoadModule dav_module modules/mod_dav.so
然后再次启动
apachectl stop
apachectl start
你的svn路径已经变成了
http://127.0.0.1/testrepo
另外还有一点需要注意,如果你是使用root账户执行的以上命令,可能会遇到在提交SVN的时候出现提交不上的情况,我这里的解决办法是把SVN库中的所有文件夹的权限设置成777。针对testrepo目录执行
chmod -R 777 testrepo
OVER!