老胳膊老腿 發表於 2023-8-21 00:00:00

详解CentOS的SVN服务器搭建与自动部署全过程

<p>
        <span><strong>SVN服务器搭建</strong></span></p>
<p>
        <strong>安装服务</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_899586">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">subversion</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>配置服务</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_848987">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/data/wwwsvn/myrepo</code> <code class="bash comments">#创建svn仓库的目录</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        这里可以自定义创建的目录,注意不是网站的文件目录。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_129632">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">svnadmin create </code><code class="bash plain">/data/wwwsvn/myrepo</code> <code class="bash comments">#与上面的目录相同。</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>这里要注意该目录不能是空目录。 成功以后会得到以下文件</strong></span></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_92599">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments"># ls</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">conf db </code><code class="bash functions">format</code> <code class="bash plain">hooks locks README.txt</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        进入conf修改配置文件</p>
<p>
        <code>vi passwd</code>添加在末尾</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_720261">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">[</code><code class="bash functions">users</code><code class="bash plain">]</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># harry = harryssecret</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments"># sally = sallyssecret</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">youname = yourpassword </code><code class="bash comments">#你的用户和密码</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <code>vi authz</code>添加在末尾</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_846781">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">...</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">[/]</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">yourname = rw</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <code>vi svnserve.conf</code>关闭注释以及修改变量</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_835728">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">anon-access = </code><code class="bash functions">read</code> <code class="bash comments">#匿名用户可读</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">auth-access = write </code><code class="bash comments">#授权用户可写</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">password-db = </code><code class="bash functions">passwd</code> <code class="bash comments">#使用哪个文件作为账号文件</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">authz-db = authz </code><code class="bash comments">#使用哪个文件作为权限文件</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">realm = </code><code class="bash plain">/data/wwwsvn/myrepo</code> <code class="bash comments"># 认证空间名,版本库所在目录,和之前的一样</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>开启和关闭服务</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_803315">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">svnserve -d -r </code><code class="bash plain">/data/wwwroot/myrepo</code> <code class="bash comments">#开启</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">killall svnserve </code><code class="bash comments">#关闭</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash functions">ps</code> <code class="bash plain">aux | </code><code class="bash functions">grep</code> <code class="bash plain">svnserve </code><code class="bash comments">#查看是否运行</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>打开端口</strong></p>
<p>
        这一步很重要,如果你都配置完了却发现连接不上,那一定是端口没有打开,默认端口是3690.</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_684449">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">iptables -I INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT #开放端口 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">service iptables save #保存 iptables 规则(如不能保存请使用其他方法保存)</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>客户端连接</strong></span></p>
<p>
        Windows</p>
<p>
        使用TortoiseSVN,url填写svn://你的服务器ip,账号密码填刚刚设置的。</p>
<p>
        Mac</p>
<p>
        使用CornerStone,url填写svn://你的服务器ip,账号密码填刚刚设置的。</p>
<p>
        <span><strong>自动部署</strong></span></p>
<p>
        每一次commit提交代码之后都会执行钩子post-commit,根据这个原理可以修改post-commit,让服务器上的web目录在每次有人commit之后自动update。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_31170">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">cd</code> <code class="bash plain">/data/wwwsvn/myrepo/hooks</code> <code class="bash comments">#你的版本仓库目录 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash functions">cp</code> <code class="bash plain">post-commit.tmpl post-commit </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash functions">vi</code> <code class="bash plain">post-commit</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>内容如下</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_914127">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">export</code> <code class="bash plain">LANG=zh_CN.UTF-8 </code><code class="bash comments">#必须要这行 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash functions">echo</code> <code class="bash string">"hello world"</code> <code class="bash plain">&gt;&gt; </code><code class="bash plain">/tmp/svn</code><code class="bash plain">.log </code><code class="bash comments">#用来测试钩子是否有执行,调试使用,如果正常就不需要这行了 </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">/usr/bin/svn</code> <code class="bash plain">update </code><code class="bash plain">/data/wwwroot/yourWebDir</code> <code class="bash plain">--username autoweb --password autoweb --no-auth-cache </code><code class="bash comments">#也可以用其他方法,总之要保证web目录能正常update</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        钩子文件里的其他都可以不要了,可以都把他们注释掉。</p>
<p>
        能这么使用的前提是你的yourWebDir已经checkout过了</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_854344">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">cd</code> <code class="bash plain">/data/wwwroot/yourWebDir</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">svn checkout svn:</code><code class="bash plain">//</code><code class="bash plain">你的服务器ip </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">... </code><code class="bash comments">#根据提示完成checkout</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        至此全部搞定,每一次commit到服务器会自动更服务器之家站内容了。</p>
<p>
        这也是上次服务器数据丢失之后第一次记录了。</p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。</p>
頁: [1]
查看完整版本: 详解CentOS的SVN服务器搭建与自动部署全过程