Leo の Blog Where there is a will there is a way! Trust youself can do it!

24五/090

快速搭建Linux开发测试WEB服务器系列7-编译安装Subversion

这篇我们来安装版本控制软件 Subversion, 这个是一个用的很普遍版本控制软件. 官方网站为: http://subversion.tigris.org/ 目前最新版是 1.6.2, 我们本次就使用这个最新版本. 官方下载 subversion-1.6.2.tar.gz, 另外还有一个依赖包 subversion.deps-1.6.2.tar.gz 这个依赖包我们不使用了. 我们独立安装他需要的依赖包. 因为官方自带的依赖包安装起来总是会有些问题.

首先先安装一些必要的包.  libxml2, openssl

1
2
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libssl-dev openssl

在上篇 编译安装 Apache 的时候, apr 和 apr-util 包我们已经安装过了. 这里就不需要在安装了. 接下来我们安装软件包 neon, 可以到 http://www.webdav.org/neon/ 下载 最新的 neon-0.28.4.tar.gz  版本的包, 解压安装

1
2
3
4
5
tar -zxf neon-0.28.4.tar.gz -C ~/sources
cd ~/sources/neon-0.28.4
./configure
make
sudo make install

另外再安装 zlib 包. 可以在 http://www.zlib.net/下载最新的 zlib-1.2.3.tar.gz 解压安装到 /usr/local/zlib

1
2
3
4
5
tar -zxf zlib-1.2.3.tar.gz -C ~/sources
cd ~/sources/zlib-1.2.3
./configure --prefix=/usr/local/zlib
make
sudo make install

在 sf.net 上下载一个 expat , 目前版本是 expat-2.0.1.tar.gz . 手动解压安装一下.

1
2
3
4
5
tar -zxf expat-2.0.1.tar.gz -C ~/sources
cd ~/sources/expat-2.0.1
./configure
make
sudo make install

另外需要SQLite3 支持. 下载 http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz ,解压然后复复制 sqlite3.c 文件到 subversion 目录下

现在解压安装 subversion-1.6.2, Subversion 默认是使用 Berkeley DB 数据库管理文件的. 这样据说是有可能引起死锁. 我们不使用该模式保存文件. 而是使用 FSFS 系统. 编译安装 subversion 的时间比较长. 需要花点时间耐心等待一下.

1
2
3
4
5
6
7
8
9
tar -zxf subversion-1.6.2.tar.gz -C ~/sources
mkdir ~/source/subversion-1.6.2/sqlite-amalgamation
tar -zxf sqlite-amalgamation-3.6.13.tar.gz
cp ~/downs/sqlite-3.6.13/sqlite3.c ~/sources/subversion-1.6.2/sqlite-amalgamation/sqlite3.c
rm -rf ~/downs/sqlite-amalgamation-3.6.13
cd ~/source/subversion-1.6.2
./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-neon=/usr/local --with-zlib=/usr/local/zlib --with-ssl --without-berkeley-db
make
sudo make install

到这里, Subversion 软件已经安装完毕,  现在测试一下他能否正常工作.

我们建立版本库的基本保存目录在 /home/svn, 所有的项目都保存在 /home/svn/projects 目录下.

1
2
sudo mkdir /home/svn
sudo mkdir /home/svn/projects

现在建立一个版本库. 这里设定为 test, 建立命令的用法为: svnadmin create svn_save_path, 具体的SVN命令语法请参考其他资料. 这里只是简要说明一下.

sudo /usr/local/subversion/bin/svnadmin create /home/svn/projecst/test
ls /home/svn/projecst/test

查看一下. 这里已经有一些文件在  /home/svn/projecst/test 下了. 说明 Subversion 已经可以正常工作了. 我们继续往下测试. 在 /tmp 目录下建立一个文件夹 t 然后/tmp/t/ 下面再随意建立个文件. 比如: readme.txt 内容随意. 然后我们进行代码入库测试.

数据导入版本库的命令语法: svn import 数据源地址 file:///版本库地址 -m "日志,标记信息", 看下面的例子.

1
sudo /usr/local/subversion/bin/svn import /tmp/t file:///home/svn/projects/test -m "Project Test. This is First Import"

OK, 我们看到终端已经打印出结果信息. readme.txt 已经被加入到版本库中. 当前的版本号为 1

现在再做一个数据导出测试. 在 /tmp/ 下建一个 文件夹 为 /tmp/tt , 然后导出刚才添加到版本库的数据.

导出命令语法: svn checkout file:///版本库地址 目标地址, 看下面的实例.

1
2
3
4
mkdir /tmp/tt
/usr/local/subversion/bin/svn checkout file:///home/svn/projects/test /tmp/tt
ls /tmp/tt
sudo chmod -R 777 /home/svn/project/test

OK, 我们看到数据已经成功导出到 /tmp/tt 文件夹中. 然后修改一下版本库的权限, 到后面可以让不同的客户短都能提交数据. 到这里 Subversion 软件已经安装成功了. 接下来需要配置一下使subversion和apache 一起工作. 并且要限制访问者权限.

在Subversion安装成功后, mod_dav.so 和 mod_dav_svn.so 应该自动被复制到 /usr/local/apache2/modules/目录下了. 并且 httpd.conf 文件也被做了相应的修改了.  正常的应该在 载入模块的部分被添加了下面两行.

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

我们在 httpd.conf 文件的尾部增加下面的信息. 保存退出!

<Location /svn>
DAV svn
SVNParentPath /home/svn/projects
SVNListParentPath on
AuthzSVNAccessFile /home/svn/svn-access-auth.conf
AuthType Basic
AuthName "Subversion Repository "
AuthUserFile /home/svn/svn-auth-passwd.conf
Require valid-user
</Location>

上面的一段就是配置通过 http://IP/svn 网络访问版本库的信息了. 其中:

AuthzSVNAccessFile 是版本库目录控制文件的配置文件. 文件名和保存目录可以随意指定.

AuthUserFile 是版本控制的用户帐号和密码文件, 文件名和保存目录可以随意指定.

我们现在来给版本库系统添加2个帐号. 一个是管理员(admin)帐号, 一个是(来宾)帐号 guest. 密码自定. 第一次给用户帐号文件添加帐号时需要多添加两个参数 -c -m 表示创建用户帐号文件. 以后就不需要这2个参数. 看例子:

1
2
sudo /usr/local/apache2/bin/htpasswd -c -m /home/svn/svn-auth-passwd.conf admin
sudo /usr/local/apache2/bin/htpasswd /home/svn/svn-auth-passwd.conf guest

现在设置项目存取控制文件 /home/svn/svn-access-auth.conf

sudo gedit /home/svn/svn-access-auth.conf

内容设置管理员可以浏览提交版本库内容, 来宾只能浏览版本信息. 内容如下: 具体的控制信息设置. 请参考其他文档.

[groups]
adminers = admin
guestes = guest

[/]
* = r

[test:/]
@adminers = rw
@guestes = r

这样通过 http://ip/svn/test 就能访问这版本库了.  并且 guest 帐号只能浏览. admin帐号可以通过subversion客户段提交修改过的信息到版本库.

到这里就 Subversion 部分就介绍完了.  下篇我们介绍一下编译安装 PHP