目录结构如下:
9.1 Could not reliably determine the server‘s fully qualified domain name20
1说明及环境介绍
1.1说明
以下将采用apache+svn+Jenkins+maven部署一套易于java环境快速开发的版本控制及自动构建系统。以2者相结合的方式进行快速开发。
在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:
WebDAV
基于Apache配置的Subversion服务器使用了被许多其它程序支持的WebDAV协议。举个例子,你可以在Windows的资源管理器中将这样的一个版本库挂载成一个“Webfolder”,然后像文件系统中的其它文件夹一样访问它。
浏览版本库
你可以在不安装Subversion客户端的情况下,使用浏览器来浏览版本库中的内容。这将使得更大范围的用户可以访问你的数据。
用户验证
你可以使用任何Apache支持的验证机制,包括SSPI和LDAP。
安全
Apache是非常的稳定和安全,因此你的版本库自然而然地拥有同样的安全性。包括SSL加密。
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能
Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:
1)持续的软件版本发布/测试项目。
2)监控外部调用执行的工作。
Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制 项目。
绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它信息(如开发人员/拥有者、版本或站点主页)。
Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
1.2环境准备及格式约定
系统:centos5.9 x64
Apache+svn:192.168.1.19
Jenkins+maven:192.168.1.20
下载所需软件
环境清理
系统在默认情况下,是已经有apr-util及apr这两个包的,只不过他们的版本较低,只支持subversion 1.4
因此,具体可以看看:
yum -y remove subversion或者yum erase subversion |
查看默认安装
# rpm -qa | grep apr |
而subversion要求较高的版本,为此,我们需要删除系统自带的apr,apr-util这两个包!强行删掉!
# rpm -e --allmatches apr-util # rpm -e --allmatches apr-util --nodeps # rpm -e --allmatches apr --nodeps |
默认安装svn-1.61版本
rm -rf /usr/bin/svn* (不删除环境变量不生效) |
格式约定
一级标题:黑体四号
二级标题:黑体四号
三级标题:黑体小四
正文:5号楷体
注释及注意:深红5号楷体
2 Linux下apache搭建svn服务器
2.1 apache安装部署
安装openssl(非必须,可以使用默认openssl)
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar zxvf openssl-1.0.1g.tar.gz cd openssl-1.0.0g make && make install cp /usr/local/ssl/bin/openssl /usr/bin/ #覆盖系统默认的openssl命令 openssl version #查看openssl版本 |
安装apache
tar -xzvf httpd-2.2.19.tar.gz cd httpd-2.2.19 ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-mods-shared=all make && make install |
2.2 svn安装部署
安装svn相关软件包
tar -xzvf apr-1.4.6.tar.gz cd apr-1.4.6 ./configure --prefix=/usr/local/apr make && make install tar -xzvf apr-util-1.5.1.tar.gz cd apr-util-1.5.1 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install echo "/usr/local/apr/lib/" >> /etc/ld.so.conf ldconfig tar -xzvf 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 unzip sqlite-amalgamation-3071502.zip tar -xzvf subversion-1.7.8.tar.gz mv sqlite-amalgamation-3071502 ./subversion-1.7.8/sqlite-amalgamation cd subversion-1.7.8 ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db --with-ssl make && make install |
验证svn安装是否成功,如果报错请看错误章节
/usr/local/svn/bin/svnserve --version |
添加svn用户
groupadd svn useradd -g svn -s /sbin/nologin svn |
添加SVN版本库目录,并赋予SVN用户权限
mkdir -p /data/svndata chown -R svn.svn /data/svndata |
创建版本库
/usr/local/svn/bin/svnadmin create /data/svndata/fengwang |
注:svn默认数据存储类型为--fs-type fsfs 可以自己选择,建议用默认方式。
详见:http://www.blogjava.net/jasmine214--love/archive/2011/01/18/343160.html
添加svn用户
/usr/local/apache2/bin/htpasswd -bc /usr/local/svn/conf/svnusers.conf svntest 123456 |
添加svn认证文件
cat >> /usr/local/svn/conf/authz.conf <<END [groups] admin = svnteset [/] * = r @admin = rw [fengwang:/] * = rw @admin = rw END |
版本库下文件说明
conf目录下存放了版本库的配置文件,包括用户访问控制和权限控制等内容;
db目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者 FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion 的命令可以安全的操作这个目录;
hooks目录存放着钩子脚本及其模版(一种版本库事件触发程序);
locks目录存放着 Subversion 版本库锁定数据,用来追踪存取文件库的客户端;
format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
2.3整合svn和apache
修改apache配置文件httpd.conf
vim /usr/local/apache2/conf/httpd.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNListParentPath on SVNParentPath /data/svndata AuthzSVNAccessFile /usr/local/svn/conf/authz.conf AuthType Basic AuthName "Subversion 1.7.18" AuthUserFile /usr/local/svn/conf/svnusers.conf Require valid-user </Location> |
注:以上配置为Apache多库方式,即一个location可以同时为多个版本库服务。既可以在/data/svndata下建立两个版本库,proj1和proj2等。另外mod_authz_svn.so、mod_dav_svn.so的生成是在安装svn后生成的,因此安装好SVN后才进行整合处理。访问方式如:http://IP/svn/proj1,http://IP/svn/proj2
单独版本库方式如下:
<Location /svn> DAV svn SVNPath /data/svndata AuthzSVNAccessFile /usr/local/svn/conf/authz.conf AuthType Basic AuthName "Subversion 1.7.18" AuthUserFile /usr/local/svn/conf/svnusers.conf Require valid-user </Location> |
ssl多版本库方式如下:
<Location /svn> DAV svn SVNListParentPath on SVNParentPath /data/svndata AuthzSVNAccessFile /usr/local/svn/conf/authz.conf AuthType Basic AuthName "Subversion 1.7.18" AuthUserFile /usr/local/svn/conf/svnusers.conf Require valid-user SSLRequireSSL </Location> |
注:若同时在httpd.conf和httpd-dav.conf中添加svn数据仓库及密码文件路径等,则可同时支持http及https访问,前提是配置好了证书认证。若在httpd.conf或者http-dav.conf中增加了SSLRequireSSL,则只支持https访问。
阅读第二部分请点击:http://auskangaroo.blog.51cto.com/740826/1410544
本文出自 “技术改变未来” 博客,请务必保留此出处http://auskangaroo.blog.51cto.com/740826/1410530
利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(一)(网内首发超详细版),布布扣,bubuko.com