在上面两篇文章中,我们主要阐述了小公司如何通过配置库的设计来初步搭建公司的配置管理过程,在本文中,我们将讲述如何使用开源工具,搭建配置库的相关步骤。
软件要求: ubuntu + apache + subversion + ldap
详细步骤:
(一)安装linux系统平台
1. 安装ubuntu 8.04基系统
2. 修改/etc/apt/sources.list, 添加cn99的安装源, 如下:
debhttp://ubuntu.cn99.com/ubuntu/hardy main restricted universe multiverse
debhttp://ubuntu.cn99.com/ubuntu/hardy-security main restricted universe multiverse
debhttp://ubuntu.cn99.com/ubuntu/hardy-updates main restricted universe multiverse
debhttp://ubuntu.cn99.com/ubuntu/hardy-proposed main restricted universe multiverse
debhttp://ubuntu.cn99.com/ubuntu/hardy-backports main restricted universe multiverse
deb-srchttp://ubuntu.cn99.com/ubuntu/hardy main restricted universe multiverse
deb-srchttp://ubuntu.cn99.com/ubuntu/hardy-security main restricted universe multiverse
deb-srchttp://ubuntu.cn99.com/ubuntu/hardy-updates main restricted universe multiverse
deb-srchttp://ubuntu.cn99.com/ubuntu/hardy-proposed main restricted universe multiverse
deb-srchttp://ubuntu.cn99.com/ubuntu/hardy-backports main restricted universe multiverse
3. 更新安装包信息, 命令: sudo apt-get update
4. 更新基系统及所有软件, 命令: sudo apt-get dist-upgrade
(二)安装必要的应用软件
5. 安装SSH, 命令: sudo apt-get install ssh(用来在你的pc上远程控制服务器)
6. 安装apache2, 命令: sudo apt-get install apache2 apache2-common apache2-utils apache2-doc
7. 安装subversion, 命令: sudo apt-get install subversion
8. 安装apache的subversion模块, 命令: sudo apt-get install libapache2-svn
9. 安装openldap, 命令: sudo apt-get install slapd ldap-utils
安装过程修改管理员密码为: rootpw
(三)创建配置库结构
10. 在/usr/local下建立svn_root目录, 命令: sudo mkdir /usr/local/svn_root
11. 在svn_root中建立三个库文件夹, 命令如下:
sudo svnadmin create /usr/local/svn_root/doc
sudo svnadmin create /usr/local/svn_root/dev
sudo svnadmin create /usr/local/svn_root/pd
12.修改svn_root的权限, sudo chown -R www-data:www-data /usr/local/svn_root/
13. 启动subversion服务器, 命令: svnserve -d -r /usr/local/svn_root
(四)集成apache和subversion
14. 让Apache2装载subversion与ldap认证模块, 命令如下:
cd /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/dav_svn.load
sudo ln -s /etc/apache2/mods-available/ldap.load
sudo ln -s /etc/apache2/mods-available/authnz_ldap.load
15. 修改dav_svn.cof文件, 整合svn和apache2, 命令如下:
sudo cp /etc/apache/mods-enabled/dav_svn.conf /etc/apache/mods-enabled/dav_svn.conf.bk
sudo vi /etc/apache/mods-enabled/dav_svn.conf
在文件的末尾添加如下内容:
<Location /svn/>
DAV svn
SVNParentPath /usr/local/svn_root
AuthType Basic
AuthName "Subversion Repository"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURLldap://192.168.1.1/dc=test,dc=cn?cn?sub?(objectClass=*)
AuthLDAPBindDN "cn=root,dc=test,dc=cn"
AuthLDAPBindPassword "rootpw"
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>
(五)设置subversion权限
16.添加subversion的权限验证文件, 命令如下:
sudo vi /etc/apache2/dav_svn.authz
添加如下内容:
[groups]
g_admin = admin
[dev:/]
@g_admin = rw
* = r
[doc:/]
@g_admin = rw
* = r
[pd:/]
@g_admin = rw
* = r
(六)配置openldap
17. 修改slapd.conf, 设置openldap, 命令如下:
sudo cp /etc/ldap/slapd.conf /etc/ldap/slapd.conf.bk
sudo vi /etc/ldap/slapd.conf
修改如下内容:
在# Schema and objectClass definitions下添加test.schema的内容(需要事先cp test.schema到/etc/ldap/schema/下)
include /etc/ldap/schema/test.schema
在# The base of your directory in database #1下添加自定义的suffix
suffix "dc=test,dc=cn"
在# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.下添加rootdn和rootpw,其中rootpw的值需要通过slappasswd命令进行设定, 在命令行敲入slappasswd后, 输入rootpw, 再输一次, 将屏幕出现的{SSHA}xRDzU4Q3twVXIXwfuLxrP1e+vWzBpiUV记录下来, 作为rootpw的值
rootdn "cn=root,dc=test,dc=cn"
rootpw {SSHA}xRDzU4Q3twVXIXwfuLxrP1e+vWzBpiUV
修改# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only下的属性访问控制信息, 如下:
access to attrs=userPassword,shadowLastChange
by dn="cn=root,dc=test,dc=cn" write
by anonymous auth
by self write
by * none
修改# The admin dn has full write access, everyone else
# can read everything.下的管理员访问权限信息如下:
access to *
by dn="cn=root,dc=test,dc=cn" write
by * read
18. 停掉openldap的服务, 添加自定的ldap目录数据, 命令如下:
sudo /etc/init.d/slapd stop
sudo rm -rf /var/lib/ldap/*
sudo slapadd -l new_test.ldif
sudo chown -R openldap:openldap /var/lib/ldap/
sudo /etc/init.d/slapd start
19. 重启openldap, sudo /etc/init.d/slapd restart
20. 重启apache2, sudo /etc/init.d/apache2 restart
(七)验证
完成上述配置后,1)应该可以通过http://IP-Address/svn/访问到svn的根目录,2)可以通过svn lshttp://IP-Address/svn/--username YOURNAME访问svn根目录。
(八)常见问题
问题一: 无法通过浏览器访问svn的根目录?
解决方案:让IE可以访问多库的根目录: 只需修改/etc/apache/mods-enabled/dav_svn.conf文件下的<Location /svn>修改成 <Location /svn/>(在/svn后添加一个"/"), 然后重启服务器即可.
问题二:无法通过http://svn.test.cn/dev正常访问subversion资源?
分析:通常,项目的 URL包含项目名称和域名。例如:http://[项目名称].[域名],但是subversion对URL的读取是有截取的,只截取域名后第一个“/”后的路径作为寻址路径,因此,例如http://svn.test.cn/dev,subversion只会截取dev作为路径到repository中寻找资源,所以是无法通过客户端访问到正确的资源的。
解决方案
由于svn对URL的解析会自动截取域名后的部分作为路径到svnserver寻找资源, 所以需要想通过http或https协议访问svnserver的话, 需要使用如下映射类型:http://192.168.1.1/svn/dev=>http://www.domain.com/svn/dev, 即IP地址直接对应www.domain.com, 后面的所有svn访问路径保留.
以上是个人的一些关于如何实施配置管理过程,以及配置管理与关联过程的交互方面的积累,一人计短,难免会有bug的出现,欢迎大家共同讨论。