首页 > Linux > linux下配置subversion1.8和apache with https

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
执行source /etc/profile使其生效

输入svnserve –version,如果出现如下内容,说明安装成功

subversion1.8

subversion1.8

九.配置Subversion
创建SVN根目录
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

这时用你的小乌龟访问

svn://192.168.1.168/project1 应该能看到如下界面
svnserve

svnserve

十.整合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客户端版本是否有差异的角度解决问题。

 

分类: Linux 标签: , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
*