﻿<?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-天行健-随笔分类-linux</title><link>http://www.blogjava.net/bnlovebn/category/31709.html</link><description>《周易》曰：&lt;br&gt;
天行健，君子以自强不息(乾卦)&lt;br&gt;
地势坤，君子以厚德载物(坤卦)
</description><language>zh-cn</language><lastBuildDate>Fri, 23 May 2008 05:17:17 GMT</lastBuildDate><pubDate>Fri, 23 May 2008 05:17:17 GMT</pubDate><ttl>60</ttl><item><title>[Linux]安装，配置Subversion 1.3.1</title><link>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202374.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 23 May 2008 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202374.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/202374.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/202374.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/202374.html</trackback:ping><description><![CDATA[<table width="800" border="0">
    <tbody>
        <tr>
            <td valign="top" width="30"><font size="2">1.</font></td>
            <td><font size="2">本文需要两个文件，httpd和subversion。<br />
            &#183;httpd是web服务器，用来通过web访问subversion，<a href="http://httpd.apache.org/">这里</a>是官方网站，<a href="http://httpd.apache.org/download.cgi">这里</a>是它的下载网页，<br />
            &nbsp;&nbsp;<a href="http://apache.justdn.org/httpd/httpd-2.2.2.tar.bz2">这里</a>可以下载到httpd-2.2.2.tar.bz2。<br />
            &#183;subversion就是本文的主角，<a href="http://subversion.tigris.org/">这里</a>是他的官方网站，<a href="http://subversion.tigris.org/project_packages.html">这里</a>是它的下载网页，<br />
            &nbsp;&nbsp;<a href="http://subversion.tigris.org/downloads/subversion-1.3.1.tar.bz2">这里</a>可以下载到subversion-1.3.1.tar.bz2</font></td>
        </tr>
        <!--- -->
        <tr>
            <td valign="top"><font size="2">2.</font></td>
            <td><font size="2">新建一个用户：svnroot <br />
            最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来，但是下面的一些安装和配置操作还是 需要root用户来完成的，因为有些操作只有root才能做。 </font></td>
        </tr>
        <!--- -->
        <tr>
            <td valign="top"><font size="2">3.</font></td>
            <td><font size="2">编译安装httpd (root用户操作)：<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font color="green" size="2">//解压apache2安装包</font><font size="2"><br />
                        # tar xvzf httpd-2.2.2.tar.gz<br />
                        </font><font color="green" size="2">//进入解压后的目录</font><font size="2"><br />
                        # cd httpd-2.2.2<br />
                        </font><font color="green" size="2">//配置apache安装，前两个参数是必须要加的，你还可以根据您的需要添加其他的参数。</font><font size="2"><br />
                        </font><font color="green" size="2">//后面的参数制定你要把apache安装哪里</font><font size="2"><br />
                        # ./configure --enable-dav --enable-so --prefix=/usr/local/apache2/<br />
                        # make<br />
                        </font><font color="green" size="2">//安装</font><font size="2"><br />
                        # make install<br />
                        # cd /usr/local/apache2/bin<br />
                        </font><font color="green" size="2">//启动apache服务</font><font size="2"><br />
                        # ./apachectl start<br />
                        </font><font color="green" size="2">//打开浏览器http://localhost/如果有测试页"It works!"出现则证明已经安装成功。</font><font size="2"><br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <!--- -->
        <tr>
            <td valign="top"><font size="2">3.</font></td>
            <td><font size="2">安装Subversion<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font color="green" size="2">//解压SubVersion安装包 (root用户进行下面的操作)</font><font size="2"><br />
                        # tar xvzf Subversion-1.3.1.tar.gz<br />
                        </font><font color="green" size="2">//进入解压后的目录</font><font size="2"><br />
                        # cd Subversion-1.3.1<br />
                        </font><font color="green" size="2">//配置subversion安装</font><font size="2"><br />
                        #./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion <br />
                        --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib <br />
                        --enable-maintainer-mode<br />
                        <p><span style="color: #00aa6a">//提请注意的是:没有加上后面两个参数，服务器会出现500错误,apache的error_log显示如下:<br />
                        //Could not fetch resource information. [500, #0]<br />
                        //Could not open the root of the repository [500, #22]<br />
                        //Can't set position pointer in file '/web/www_root/svn/test/db/revs/0': Invalid argument [500, #22]<br />
                        </span># make<br />
                        </font><font color="green" size="2">//安装</font><font size="2"><br />
                        # make install<br />
                        </font><font color="green" size="2">//创建库文件所在的目录 (svnroot用户进行下面的操作)</font><font size="2"><br />
                        # mkdir /home/svnroot/repository<br />
                        </font><font color="green" size="2">//进入subversion的bin目录</font><font size="2"><br />
                        # cd /usr/local/subversion/bin<br />
                        </font><font color="green" size="2">//创建仓库"test"</font><font size="2"><br />
                        # ./svnadmin create /home/svnroot/repository/test<br />
                        # cd /home/svnroot/repository/test<br />
                        </font><font color="green" size="2">//看看是不是多了些文件，如果是则说明Subversion安装成功了</font><font size="2"><br />
                        # ls &#8211;l<br />
                        # cd /home/user/import<br />
                        </font><font color="green" size="2">//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去，</font><font size="2"><br />
                        </font><font color="green" size="2">//提交后的修订版为1。</font><font size="2"><br />
                        # ./svn import&nbsp;&#8211;m&nbsp; /home/user/import file:///home/svnroot/repository/test <br />
                        </font><font color="green" size="2">//不让其他人有该目录的权限</font><font size="2"><br />
                        # chmod 700 /home/svnroot/repository<br />
                        </font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <!---第4- -->
        <tr>
            <td valign="top"><font size="2">4.</font></td>
            <td><font size="2">修改Apache配置文件<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2"># cd /usr/local/apadche2/bin <br />
                        </font><font color="green" size="2">//启动Apache </font><font size="2"><br />
                        # ./apachect1 start <br />
                        # vi /usr/local/apache2/conf/httpd.conf <br />
                        &nbsp;&nbsp; </font><font color="green" size="2">//在最下面添加 </font><font size="2"><br />
                        &nbsp;&nbsp; LoadModule dav_svn_module modules/mod_dav_svn.so <br />
                        &nbsp;&nbsp; LoadModule authz_svn_module modules/mod_authz_svn.so <br />
                        &nbsp;&nbsp; &lt;Location /svn&gt; <br />
                        &nbsp;&nbsp; DAV svn <br />
                        &nbsp;&nbsp; SVNParentPath /home/svnroot/repository/ </font><font color="green" size="2">//svn父目录 </font><font size="2"><br />
                        &nbsp;&nbsp; AuthzSVNAccessFile /home/svnroot/repository/authz.conf </font><font color="green" size="2">//权限配置文件 </font><font size="2"><br />
                        &nbsp;&nbsp; AuthType Basic </font><font color="green" size="2">//连接类型设置 </font><font size="2"><br />
                        &nbsp;&nbsp; AuthName "Subversion.zoneyump" </font><font color="green" size="2">//连接框提示 </font><font size="2"><br />
                        &nbsp;&nbsp; AuthUserFile /home/svnroot/repository/authfile </font><font color="green" size="2">//用户配置文件 </font><font size="2"><br />
                        &nbsp;&nbsp; Require valid-user </font><font color="green" size="2">//采用何种认证 </font><font size="2"><br />
                        &nbsp;&nbsp; &lt;/Location&gt;<br />
                        </font><font color="green" size="2">&nbsp;&nbsp; //其中authfile是通过"htpasswd [&#8211;c] /home/svnroot/repository/authfile username password"来创建的 <br />
                        &nbsp;&nbsp; //"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它，<br />
                        &nbsp;&nbsp; //则只能第一个用户可以访问新建库 </font><font size="2"><br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <!---第5- -->
        <tr>
            <td valign="top"><font size="2">5.</font></td>
            <td><font size="2">重启apache </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2"># ./usr/local/apache2/bin/apachectl restart <br />
                        </font><font color="green" size="2">//打开浏览器访问http://localhost/svn/test/，如果有东西显示就说明成功。</font><font size="2"><br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <!---第6- -->
        <tr>
            <td valign="top"><font size="2">6.</font></td>
            <td><font size="2">权限管理<br />
            1)增加用户<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2"># htpasswd [-c] /home/svnroot/repository/authfile wooin<br />
                        </font><font color="green" size="2">//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码，完成对用户的增加</font><font size="2"><br />
                        # htpasswd authfile 用户名(加入新的用户)<br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            <font size="2">2)权限分配<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2"># vi /home/svnroot/repository/authz.conf <br />
                        &nbsp;&nbsp; [test:/] </font><font color="green" size="2">//这表示，仓库test的根目录下的访问权限 </font><font size="2"><br />
                        &nbsp;&nbsp; wooin = rw </font><font color="green" size="2">//test仓库wooin用户具有读和写权限 </font><font size="2"><br />
                        &nbsp;&nbsp; bao = r </font><font color="green" size="2">//test仓库bao用户具有读权限 </font><font size="2"><br />
                        &nbsp;&nbsp; [test2:/] </font><font color="green" size="2">//test2仓库根目录下的访问权限 </font><font size="2"><br />
                        &nbsp;&nbsp; wooin = r </font><font color="green" size="2">//wooin用户在test2仓库根目录下只有读权限 </font><font size="2"><br />
                        &nbsp;&nbsp; bao = </font><font color="green" size="2">//bao用户在 test2仓库根目录下无任何权限 </font><font size="2"><br />
                        &nbsp;&nbsp; [/] </font><font color="green" size="2">//这个表示在所有仓库的根目录下 </font><font size="2"><br />
                        &nbsp;&nbsp; * = r </font><font color="green" size="2">//这个表示对所有的用户都具有读权限 </font><font size="2"><br />
                        &nbsp;&nbsp; #[groups] </font><font color="green" size="2">//这个表示群组设置 </font><font size="2"><br />
                        &nbsp;&nbsp; #svn1-developers = wooin, bao </font><font color="green" size="2">//这个表示某群组里的成员 </font><font size="2"><br />
                        &nbsp;&nbsp; #svn2-developers = wooin <br />
                        &nbsp;&nbsp; #[svn1:/] <br />
                        &nbsp;&nbsp; #@svn1-developers = rw </font><font color="green" size="2">//如果在前面加上@符号，则表示这是个群组权限设置</font><font size="2"><br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            <font size="2">将这个设置完成后。重启Apache，就可以通过 <br />
            http://localhost/svn/test <br />
            这个URL来访问仓库了，当然，受权限的限制，必须是合法用户才能访问且具有相应的权限 <br />
            </font></td>
        </tr>
        <!---第7- -->
        <tr>
            <td valign="top"><font size="2">7.</font></td>
            <td><font size="2">一些备忘：<br />
            1. svn checkout http://localhost/svn/hello.world<br />
            <br />
            2. svn commit 时的默认编辑器的环境变量$SVN_EDITOR=vi需要手动设定，用kate好像有问题<br />
            <br />
            3. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时，在checkout的时候不会要求输入用户名密码直接就可以checkout出来。比如：linux有个用户wooin，svn也有一个用户wooin，并且密码都是一样的，当用wooin登录linux后，执行checkout，可以直接提取出源码文件，不用输入认证信息。<br />
            <br />
            4. 在svn使用过程中牵扯到几种权限：文件系统的权限，linux系统权限，svn用户的权限，apache进程的权限。<br />
            <br />
            文件系统的权限，linux系统权限：这里相同的意思，就是平时大家使用linux时文件夹和文件的访问权限。在 svn建立仓库，文件夹，配置文件的时候用svnroot用户，并将仓库权限设置为700，不允许其他用户直接通过文件系统查看，只能由svnroot进行管理。<br />
            <br />
            apache进程的权限：因为所有跟仓库传输的操作都是通过apache进程进行的，所以即使你给svn用户设置了很大的权限，但是apache进程没有访问仓库或者相关文件的权限也没有用，apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置，找到文件中的这两行：<br />
            </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2">User daemon # 将daemon改为svnroot，让apache进程以svnroot的身份运行 <br />
                        Group daemon <br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            <font size="2"><br />
            svn用户的权限：就是在repository/authz.conf文件中设置的权限信息，是svn用来管理仓库访问权限的。<br />
            <br />
            5. svn服务器设置有两种方式：http 和 svnserve。这里介绍的是http方法<br />
            <br />
            6. 在/etc/profile的结尾设置一些svn启动时要做的工作 </font>
            <table bgcolor="#e5e5e5" border="0">
                <tbody>
                    <tr>
                        <td><font size="2"># start apache server for svn <br />
                        /usr/sbin/apachectl start <br />
                        export SVN_EDITOR=vi <br />
                        </font></td>
                    </tr>
                </tbody>
            </table>
            <font size="2"><br />
            7. APR libraries 安装 SVN 的时候最好指定 --with-apr= 和 --with-apr-util= 参数到 Apache 安装的根目录 <br />
            （ServerRoot）下，而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache <br />
            版本不同有可能导致 APR 库不匹配，出现类似：<br />
            Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的错误。<br />
            Updated 2006-04-20 16:30 -- 比如说如果你安装的是apache 2.2.0版本，就需要在编译安装svn的时候指定 <br />
            --with-apxs和--with-apr参数到你的apache2.2.0安装目录下：<br />
            ./configure --prefix=${subversionInstallFolder} / <br />
            --with-apxs=${apacheInstallFolder}/bin/apxs / <br />
            --with-apr=${apacheInstallFolder} / <br />
            --with-apr-util=${apacheInstallFolder} / <br />
            --with-ssl / <br />
            --with-zlib / <br />
            --enable-maintainer-mode <br />
            </font></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/202374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2008-05-23 12:23 <a href="http://www.blogjava.net/bnlovebn/archive/2008/05/23/202374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[linux]删除目录及子目录</title><link>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202373.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 23 May 2008 04:21:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202373.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/202373.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/202373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/202373.html</trackback:ping><description><![CDATA[rm -rf 目录名<br />
rmdir只能删除空目录
<img src ="http://www.blogjava.net/bnlovebn/aggbug/202373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2008-05-23 12:21 <a href="http://www.blogjava.net/bnlovebn/archive/2008/05/23/202373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[linux] 改变所有子目录的权限chmod</title><link>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202372.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 23 May 2008 04:18:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202372.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/202372.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/202372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/202372.html</trackback:ping><description><![CDATA[<p>改变一个文件的权限: chmod mode file|dir<br />
改变所有子目录的权限: chmod mode dir -R</p>
<p>mode = 777 or 752 and so on.</p>
<p>mode的三个数字，分别表示 owner，group,others所具有的权限。</p>
<p>1 = x 执行 2 = w 写 4 = r 读，比如owner具有所有权限，1+2+4=7,</p>
<p>又比如 group 具有&nbsp;读 和 执行 权限 1+4 = 5</p>
 <img src ="http://www.blogjava.net/bnlovebn/aggbug/202372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2008-05-23 12:18 <a href="http://www.blogjava.net/bnlovebn/archive/2008/05/23/202372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[linux]警告：检测到时钟错误。您的创建可能是不完整的。</title><link>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202371.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 23 May 2008 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202371.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/202371.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2008/05/23/202371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/202371.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/202371.html</trackback:ping><description><![CDATA[原因：如果上一次编译时为20071001,你把系统时间改成20070901后再编译就会报这样的错误.<br />
解决：把时间改了或运行下来命令再make <br />
find&nbsp;.&nbsp;-type&nbsp;f&nbsp;-exec&nbsp;touch&nbsp;{}&nbsp;\; <br />
 <img src ="http://www.blogjava.net/bnlovebn/aggbug/202371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2008-05-23 12:15 <a href="http://www.blogjava.net/bnlovebn/archive/2008/05/23/202371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>