下面就开始搭建svn和git的服务,我们只需要搭建一个最基本的服务,有浏览功能就好。
我们用apache来提供svn和git服务,这样就能集成LDAP身份验证了,这次,我打算使用https来提高安全性,所以还要自己给自己颁发个证书。
首先要安装,如果没安装apache也可以顺便装下:
$ yum install httpd mod_ssl
其实安装好以后就可以用https来访问web服务器了,这里我在自己生成一个证书:
$ yum install openssl
$ openssl genrsa -out tiwb.key 1024
$ openssl req -new -key tiwb.key -out tiwb.csr
$ openssl x509 -days 3650 -req -in tiwb.csr -signkey tiwb.key -out tiwb.crt
$ mv tiwb.key /etc/pki/tls/private
$ mv tiwb.crt /etc/pki/tls/certs
然后修改/etc/httpd/conf.d/ssl.conf
:
ServerName tiwb.net:443
SSLCertificateFile /etc/pki/tls/certs/tiwb.crt
SSLCertificateKeyFile /etc/pki/tls/private/tiwb.key
如果想让所有的http全部自动重定向到https,可以建立一个虚拟主机。
配置文件/etc/httpd/conf.d/ssl_redirect.conf
:
<VirtualHost *:80>
ServerName tiwb.net
Redirect permanent / https://tiwb.net/
</VirtualHost>
然后重起http服务器测试效果:
$ service httpd restart
由于是自己签名的证书,在打开网站时会提示证书不被信任,我反正是自己用,可以把证书下载下来添加到受信任的证书颁发机构里。
给虚拟机附加第二块数据盘
在安装svn前我先给服务器再挂一块虚拟硬盘用来放数据:
$ qemu-img create -f qcow2 data.qcow2 100G
$ virsh edit svn
然后编辑虚拟机配置文件$ virsh edit svn
,在<device>
下添加下面内容:
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/home/emu/data.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
重起虚拟机后, 可以再系统里看到/dev/vdb这个设备。下面我们格式化这块硬盘,并把它挂到/data下。
先给硬盘分区, 分一个区就可以了, 用cfdisk简单一些:
$ cfdisk /dev/vdb
分好区后格式化一下:
$ mkfs.ext4 /dev/vdb1
下面要让这个分区能在开机时自动挂载,在/etc/fstab里添加:
/dev/vdb1 /data ext4 defaults 0 0
最后还要记得建立/data这个文件夹,否则挂载会失败,完成后就可以重起看看效果了。
安装svn服务
首先安装apache的svn模块:
$ yum install mod_dav_svn
我们把svn的根目录设置为/data/svn
,先建一个测试svn的库:
$ mkdir /data/svn
$ cd /data/svn
$ svnadmin create test
$ chown -R apache:apache test
然后修改配置文件/etc/http/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /data/svn
SvnListParentPath on
SSLRequireSSL
</Location>
重起httpd服务后就可以用浏览器访问https://tiwb.net/svn/来查看效果了。
SVN集成LDAP验证
刚才架设的svn服务器是没有用户验证的,下面我们来集成LDAP验证。
首先要安装apache的ldap模块:
$ yum install mod_authz_ldap
然后更新subversion服务的配置:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn/>
DAV svn
SVNParentPath /data/svn
SvnListParentPath on
SSLRequireSSL
AuthType Basic
AuthName "Please login"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap.tiwb.net/ou=Users,dc=tiwb,dc=net?uid?sub"
AuthLDAPBindDN "cn=Manager,dc=tiwb,dc=net"
AuthLDAPBindPassword "secret"
AuthzSVNAccessFile /data/svn/authz
Require valid-user
</Location>
我们只集成了LDAP的用户验证,组还是需要用svn自带的authz。所以还要建立组配置文件/data/svn/autnz
[groups]
team1=user1,user2,user3
team2=user1,user4
[/]
*=r
[test:/]
*=
@team1=rw
安装git服务
下面安装git服务, 跟svn差不多,首先安装git
$ yum install git
然后安装一个gitlist,你可以在gitlist.org上找到最新版的下载地址。
$ wget https://s3.amazonaws.com/gitlist/gitlist-0.4.0.tar.gz
$ tar -xvf gitlist-0.4.0.tar.gz
$ mv gitlist /var/www/
$ cd /var/www/gitlist
$ mv config.ini-example config.ini
$ mkdir cache
$ chmod 777 cache
然后修改/var/www/gitlist/config.ini
中git库的路径:
repositories[] = '/data/git/'
克隆一个测试库:
$ mkdir -p /data/git
$ cd /data/git
$ git clone --bare https://github.com/klaussilveira/gitlist.git gitlist.git
$ chown -R apache:apache gitlist.git
最后增加一个apache的配置文件/etc/httpd/conf.d/git.conf
SetEnv GIT_PROJECT_ROOT /data/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
Alias /git /var/www/gitlist
<Directory /var/www/gitlist>
AllowOverride None
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /git/index.php [L]
</Directory>
<Location /git/>
AuthType Basic
AuthName "Please login"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap.tiwb.net/ou=users,dc=tiwb,dc=net?uid?sub"
AuthLDAPBindDN "cn=Manager,dc=tiwb,dc=net"
AuthLDAPBindPassword "secret"
Require valid-user
SSLRequireSSL
</Location>
git客户端的证书设置
如果你自己创建了https的根证书,那么git的客户端还需要信任这个证书,你可以把你的证书加到客户端的根证书里,也可以配置下客户端不要验证证书的有效性。
为了方便,我先设置下不要验证证书有效性。可以直接使用git命令修改全局设置:
$ git config --global http.sslverify false
如果使用的时图形界面的git,可以直接修改全局配置文件。
- 本文固定链接: http://www.wy182000.com/2013/11/07/搭建svn和git服务/
- 转载请注明: wy182000 于 Studio 发表