linux下配置subversion1.8和apache with https
系统环境Centos6.4 64位操作系统,subversion1.8 ,apache http server V2.2,主机IP192.168.1.168
一.安装apr和apr-uti
cd /opt wget http://mirror.bit.edu.cn/apache//apr/apr-1.4.8.tar.gz tar zxvf apr-1.4.8.tar.gz cd apr-1.4.8 ./configure --prefix=/usr/local/apr make && make install echo "/usr/local/apr/lib/" >> /etc/ld.so.conf ldconfig
cd /opt wget http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.2.tar.gz tar zxvf apr-util-1.5.2.tar.gz cd apr-util-1.5.2 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ make && make install echo "/usr/local/apr-util/lib" >> /etc/ld.so.conf ldconfig
二.安装sqlite3
由于系统自带sqlite3版本过低,需安装更高的版本
cd /opt wget http://www.sqlite.org/2013/sqlite-autoconf-3080000.tar.gz tar zxvf sqlite-autoconf-3080000.tar.gz cd sqlite-autoconf-3080000 ./configure make && make install
三.安装openssl
cd /opt wget http://www.openssl.org/source/openssl-1.0.1.tar.gz tar xzvf openssl-1.0.1.tar.gz cd openssl-1.0.1 ./config --prefix=/usr/local/openssl make && make install
四.安装apache http server 和ssl model
cd /opt wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.2.25.tar.gz tar zxvf httpd-2.2.25.tar.gz export LDFLAGS=-ldl cd httpd-2.2.25 ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --enable-modules=so --enable-dav --enable-maintainer-mode --enable-rewrite --enable-ssl --with-ssl=/usr/local/openssl make && make install cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd #编辑/etc/init.d/httpd,在第二行增加如下内容 #chkconfig: 2345 85 35 chkconfig httpd on//设置开机启动
通过service httpd start启动服务,正常情况下会提示启动成功,通过在其他电脑上打开浏览器浏览这台服务器IP的80端口服务,如果出现It works 字样,恭喜您,安装成功
如果出现httpd: Could not reliably determine the server’s fully qualified domain name,只需要编辑httpd.conf 将里面的#ServerName www.example.com:80注释去掉即可,,并改成ServerName 127.0.0.1:80。
五.安装zlib
cd /opt wget http://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz tar -xvzf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make && make install
六.安装neon
cd /opt yum -y install expat* wget http://www.webdav.org/neon/neon-0.29.6.tar.gz tar zxvf neon-0.29.6.tar.gz cd neon-0.29.6 ./configure --prefix=/usr/local/neon make && make install echo "/usr/local/neon/lib" >> /etc/ld.so.conf ldconfig
七.安装subversion1.8
cd /opt wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.11.tar.gz tar zxvf subversion-1.8.3.tar.gz cd subversion-1.8.3 mkdir sqlite-amalgamation cp /opt/sqlite-autoconf-3080000/sqlite3.c sqlite-amalgamation ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-zlib --enable-maintainer-mode make && make install
八.配置环境变量
在/etc/profile里增加如下内容
export PATH=$PATH:/usr/local/svn/bin
mkdir -p /home/svn.d/repos
创建库
svnadmin create /home/svn.d/repos/project1 svnadmin create /home/svn.d/repos/project2 mkdir project1 project1/trunk project1/tags project1/branches mkdir project2 project2/trunk project2/tags project2/branches svn import project1 file:///home/svn.d/repos/project1 -m "init" svn import project2 file:///home/svn.d/repos/project2 -m "init"
#启动svn服务,默认端口3690 svnserve -d -r /home/svn.d/repos/ #设置开机启动 echo "/usr/local/svn/bin/svnserve -d -r /home/svn.d/repos" >> /etc/rc.local
这时用你的小乌龟访问
十.整合Apache,增加权限校验
切换到/home/svn.d路径
#拷贝authz文件 cp /home/svn.d/repos/project1/conf/authz #生成md5加密的passwd文件,并增加第一个用户admin /usr/local/apache2/bin/htpasswd -mc passwd admin #增加其他用户 /usr/local/apache2/bin/htpasswd -m passwd user1 /usr/local/apache2/bin/htpasswd -m passwd user2
编辑http.conf文件
vim /usr/local/apache2/conf/httpd.conf
在最后面增加如下内容
#加载整合svn所需so文件 LoadModule dav_svn_module /usr/local/svn/libexec/mod_dav_svn.so LoadModule authz_svn_module /usr/local/svn/libexec/mod_authz_svn.so <Location /svn>//url路径 DAV svn SVNParentPath /home/svn.d/repos //svn 根目录 SVNListParentPath On AuthType Basic AuthName "svn repos" //svn招呼语 AuthUserFile /home/svn.d/passwd //密码验证文件 AuthzSVNAccessFile /home/svn.d/authz //目录分组权限 Require valid-user </Location>
编辑authz文件
[aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average #共3个组,管理员组和project1 project2 组 [groups] admin = admin project1 = user1 project2 = user2 [/] @admin = rw //admin对根目录下所有资源可以读写 [project1:/] @project1 = rw //project1组可以对project1读写 [project2:/] @project2 = rw //project2组可以对project2读写
重启httpd 服务 service httpd restart,然后用不同的用户登录进行权限校验。
十一.配置https
生成ssl证书和秘钥
#128位rsa算法生成密钥 cd /home/svn.d openssl genrsa 1024 > server.key #生成证书请求文件这边会让你输入servername,注意输入hostname openssl req -new -key server.key > server.csr #步骤1,2的的密钥和证书请求生成证书server.crt生成证书 openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
修改/usr/local/apache2/conf/extra 下的httpd-ssl.conf
把如下内容 SSLCertificateFile "/usr/local/apache2/conf/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" 修改成 SSLCertificateFile "/home/svn.d/server.crt" SSLCertificateKeyFile "/home/svn.d/server.key"
#取消httpd.conf下面这句之前的'#' Include conf/extra/httpd-ssl.conf
同时在httpd.conf 的<Location /svn>配置里增加
SSLRequireSSL
强制通过SSL方式访问svn服务
补充:
在配置之后可能会出现SVN Could not open the requested SVN filesystem的问题,请从文件权限和svn客户端版本是否有差异的角度解决问题。