﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-acooly-随笔分类-配置管理</title><link>http://www.blogjava.net/acooly/category/34328.html</link><description>生活象被Rape，要么反抗，要么享受。
/**
 * 需求的时候明确一些；
 * 设计的时候超脱一些；
 * 实现的时候具体一些；
 * 测试的时候苛刻一些。
*/</description><language>zh-cn</language><lastBuildDate>Thu, 02 Jul 2009 16:56:03 GMT</lastBuildDate><pubDate>Thu, 02 Jul 2009 16:56:03 GMT</pubDate><ttl>60</ttl><item><title>SCM-SVN集成服务器 </title><link>http://www.blogjava.net/acooly/archive/2009/05/22/244643.html</link><dc:creator>coolies</dc:creator><author>coolies</author><pubDate>Fri, 22 May 2009 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/acooly/archive/2009/05/22/244643.html</guid><wfw:comment>http://www.blogjava.net/acooly/comments/244643.html</wfw:comment><comments>http://www.blogjava.net/acooly/archive/2009/05/22/244643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/acooly/comments/commentRss/244643.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/acooly/services/trackbacks/244643.html</trackback:ping><description><![CDATA[<p><br />
<strong>1.概述</strong><br />
<li>下面介绍的安装配置是我个人的经验，可能与其它很多成功的配置方式有不同，仅次声明，只供参考。
<li>采用linux操作系统做为基础环境，安装配置为了介绍简单，全部操作系统root账户操作
<p><br />
<strong>2.环境准备</strong><br />
操作系统：redhat AS 4或5<br />
SVN软件：采用subversion.1.4.0，当然你可以使用其它版本，基本一样。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载地址：<a href="http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz">http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz</a> (官方)<br />
APACHE：本文采用APACHE2.2 : <a href="http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz">http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz</a>&nbsp;(官方)<br />
<em>说明：虽然AS5中自带了SVN和APACHE，但是我没有做采用，觉得自己编译设置比较稳妥和习惯。<br />
</em><br />
<strong>3.安装APACHE<br />
</strong>为什么要先安装APACHE？因为我们全部采用源代码编译方式，而SUBVERSION的编译要依赖APACHE的相关组件，所以我先安装APACHE（当然，这是我的方式，也有其它配置方式的哈）。<br />
<br />
3.1.编译安装</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">#</span><span style="color: #008000">&nbsp;wget&nbsp;http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#&nbsp;tar&nbsp;-xzvf&nbsp;httpd-2.2.11.tar.gz<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#&nbsp;cd&nbsp;httpd-2.2.11<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#&nbsp;./configure&nbsp;-prefix=/usr/local/apache2&nbsp;-enable-so&nbsp;-enable-dav<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#&nbsp;make<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#&nbsp;make&nbsp;install</span></div>
<p><br />
执行完成，就安装完成了.<br />
3.2.检查测试<br />
启动服务器<br />
&nbsp;# /usr/local/apache2/bin/apachectl start<br />
<a href="http://localhost/">访问 http://localhost/</a>，如果显示:It working 那就OK了<br />
<br />
<strong>4.安装subversion</strong><br />
因为选择的是使用apache代理方式访问subversion，所以编译前需要指定APACHE的相关组件LOCATION.<br />
</p>
<p># wget <a href="http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz">http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz</a><br />
# tar -xzvf subversion-1.4.0.tar.gz<br />
# cd subversion-1.4.0<br />
#./configure -with-apxs=/usr/local/apache2/bin/apxs -with apr=/usr/local/apache2/ -prefix=/usr/local/subversion1.4<br />
# make<br />
# make install<br />
<br />
好了，安装完成，简单检查下/usr/local/apache2/modules/下面应该有两个文件：<br />
mod_authz_svn.so&nbsp; mod_dav_svn.so</p>
<p>如果你安装AS5操作系统并选择安装系统自带的SVN，请建立连接以便后续命令操作。</p>
<p># ln -s /usr/local/subversion1.4/bin/svn /usr/bin/svn<br />
# ln -s /usr/local/subversion1.4/bin/svnadmin /usr/bin/svn</p>
<p><br />
<strong>4.创建和设置SVN仓库</strong> </p>
<p>我采用的是每个项目一个仓库的方式管理，采用统一的认证和授权配置文件（auth.conf,user.conf）管理所有的仓库。优点在于配置管理简单，每个项目完全独立，迁移方便；缺点是我还没有找到好的办法实现直接浏览所有仓库的方法。废话不说了，正题～～<br />
&nbsp;<br />
<strong style="color: red">所有仓库的父目录</strong><br />
<strong style="color: red">SVNParentPath /data/svnroot/repository/<br />
所有仓库的访问权限设置文件<br />
/data/svnroot/repository/authz.conf<br />
所有用户信息<br />
3.AuthUserFile /data/svnroot/repository/userfile<br />
</strong><br />
5.1.创建SVN用户组和用户<br />
SVN用户组是SVN仓库的宿主，SVN用户才可以对SVN仓库操作（基本系统安全考虑），也要用于后面APACHE启动用户组和用户。<br />
<br />
# groupadd svn<br />
# useradd svnroot -G&nbsp;svn -g svn -M<br />
<br />
5.2.创建SVN主仓库<br />
创建SVN仓库主目录<br />
<br />
# mkdir /data/svnroot/repository<br />
# cd /data/svnroot/repository<br />
<br />
5.3.创建SVN仓库<br />
这里使用testproject作为演示的项目进行操作。<br />
<br />
# cd /data/svnroot/repository<br />
# svnadmin create testproject<br />
<br />
建立好了项目仓库，后续项目仓库的目录结构可以后面服务启动后，通过客户端动态添加和管理，个人觉得这样比较容易，不用先导入初始化结构。推荐使用小乌龟(TortoiseSVN)。<br />
<br />
5.4.建立用户和权限控制文件<br />
待续。。<br />
<br />
<br />
<br />
<strong>5.配置APACHE整合Subversion</strong><br />
主要就是配置APACHE的httpd.conf，使用mod_authz_svn.so&nbsp; mod_dav_svn.so集成Subversion的功能了。<br />
<br />
LoadModule dav_svn_module&nbsp;&nbsp;&nbsp;&nbsp; modules/mod_dav_svn.so<br />
LoadModule authz_svn_module&nbsp;&nbsp; modules/mod_authz_svn.so<br />
&lt;VirtualHost *:80&gt;<br />
&nbsp;&nbsp;&nbsp; ServerAdmin <a href="mailto:xxxx@gmail.com">xxxx@gmail.com</a><br />
&nbsp;&nbsp;&nbsp; DocumentRoot /data/www/<br />
&nbsp;&nbsp;&nbsp; ServerName <a href="http://www.xxxx.org">www.xxxx.org</a><br />
&nbsp;&nbsp;&nbsp; ErrorLog logs/xxxx.org-error_log<br />
&nbsp;&nbsp;&nbsp; CustomLog logs/xxxxx.org-access_log common<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Location /svn&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DAV svn<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNListParentPath on<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNParentPath /data/svnroot/repository/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthzSVNAccessFile /data/svnroot/repository/authz.conf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthUserFile /data/svnroot/repository/userfile<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthType Basic<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthName "qy Subversion repository"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Require valid-user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&lt;/LimitExcept&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Options Indexes FollowSymLinks<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #AllowOverride None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Order allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Allow from all<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Location&gt;<br />
&lt;/VirtualHost&gt;</p>
<li>
<p><br />
<br />
<br />
&nbsp;</p>
</li>
 <img src ="http://www.blogjava.net/acooly/aggbug/244643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/acooly/" target="_blank">coolies</a> 2009-05-22 18:07 <a href="http://www.blogjava.net/acooly/archive/2009/05/22/244643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX下MAVEN自动构建脚本</title><link>http://www.blogjava.net/acooly/archive/2009/03/06/258215.html</link><dc:creator>coolies</dc:creator><author>coolies</author><pubDate>Fri, 06 Mar 2009 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/acooly/archive/2009/03/06/258215.html</guid><wfw:comment>http://www.blogjava.net/acooly/comments/258215.html</wfw:comment><comments>http://www.blogjava.net/acooly/archive/2009/03/06/258215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/acooly/comments/commentRss/258215.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/acooly/services/trackbacks/258215.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">#</span><span style="color: #008000">!/bin/sh</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#</span><span style="color: #008000">&nbsp;linux&nbsp;maven&nbsp;自动构建脚本</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;[&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">$#</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">3</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />then<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;echo&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">USAGE:&nbsp;msd&nbsp;svn_project&nbsp;svn_username&nbsp;svn_passwd</span><span style="color: #800000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;exit<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />fi<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SCM_PROJECT</span><span style="color: #000000">=</span><span style="color: #000000">$</span><span style="color: #000000">1</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SCM_SERVER</span><span style="color: #000000">=</span><span style="color: #000000">http:</span><span style="color: #000000">//</span><span style="color: #000000">192.168</span><span style="color: #000000">.</span><span style="color: #000000">1.224</span><span style="color: #000000">/</span><span style="color: #000000">svn<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SCM_USERNAME</span><span style="color: #000000">=</span><span style="color: #000000">$</span><span style="color: #000000">2</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SCM_PASSWORD</span><span style="color: #000000">=</span><span style="color: #000000">$</span><span style="color: #000000">3</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">&nbsp;CHECKOUT&nbsp;PROJECT&nbsp;SOURCE</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">CURDIR</span><span style="color: #000000">=</span><span style="color: #000000">`pwd`<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rm&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">fr&nbsp;$CURDIR</span><span style="color: #000000">/</span><span style="color: #000000">$SCM_PROJECT<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />svn&nbsp;checkout&nbsp;$SCM_SERVER</span><span style="color: #000000">/</span><span style="color: #000000">$SCM_PROJECT</span><span style="color: #000000">/</span><span style="color: #000000">trunk&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">username&nbsp;$SCM_USERNAME&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">password&nbsp;$SCM_PASSWORD<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mv&nbsp;$CURDIR</span><span style="color: #000000">/</span><span style="color: #000000">trunk&nbsp;$CURDIR</span><span style="color: #000000">/</span><span style="color: #000000">$SCM_PROJECT<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;[&nbsp;!&nbsp;$M2_HOME&nbsp;]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />then<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;echo&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ERROR:&nbsp;env&nbsp;M2_HOME&nbsp;is&nbsp;not&nbsp;setting.</span><span style="color: #800000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;exit<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />fi<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cd&nbsp;$CURDIR</span><span style="color: #000000">/</span><span style="color: #000000">$SCM_PROJECT</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$M2_HOME</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">mvn&nbsp;clean<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$M2_HOME</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">mvn&nbsp;site</span></div>
<img src ="http://www.blogjava.net/acooly/aggbug/258215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/acooly/" target="_blank">coolies</a> 2009-03-06 15:24 <a href="http://www.blogjava.net/acooly/archive/2009/03/06/258215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS常用操作和管理</title><link>http://www.blogjava.net/acooly/archive/2008/09/10/228101.html</link><dc:creator>coolies</dc:creator><author>coolies</author><pubDate>Wed, 10 Sep 2008 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/acooly/archive/2008/09/10/228101.html</guid><wfw:comment>http://www.blogjava.net/acooly/comments/228101.html</wfw:comment><comments>http://www.blogjava.net/acooly/archive/2008/09/10/228101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/acooly/comments/commentRss/228101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/acooly/services/trackbacks/228101.html</trackback:ping><description><![CDATA[<p>添加CVS用户：<br />
useradd -g cvs -s /sbin/nologin cvsroot <br />
</p>
<img src ="http://www.blogjava.net/acooly/aggbug/228101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/acooly/" target="_blank">coolies</a> 2008-09-10 11:31 <a href="http://www.blogjava.net/acooly/archive/2008/09/10/228101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>