关闭

Linux 配置 SVN自动发送邮件

标签: Linux 配置 SVN自动发送邮件
3008人阅读 评论(0) 收藏 举报
分类:

公司游戏运营需要,新搭建了一个SVN并配置了一下提交自动发送邮件的功能,备忘一下几个关键步骤内容,供有用的同学参考哈


1、准备好安装包:

apr-1.3.8.tar.gz

apr-util-1.3.9.tar.gz

httpd-2.2.4.tar.gz

subversion-1.6.5.tar.gz

subversion-deps-1.6.5.tar.gz


2、安装apr和apr-util包

3、安装apache

        # tar –zvxf httpd-2.2.4.tar.gz
        # cd httpd-2.2.4
        # ./configure
        --prefix=/usr/local/apache
        --with-apr=/usr/local/apr
        --with-apr-util=/usr/local/apr-utl
        --enable-modules=so /* DSO模式安装apache (或 --enable-so)
        --enable-dav
        --enable-maintainer-mode
        -- enable-rewrite
        # make ; make install
        安装好后启动apache
        # /usr/local/apache/bin/apachectl –k start
        用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

4、安装和配置 subversion
        #tar –zvxf subversion-1.4.5.tar.gz
        #tar –zvxf subversion-deps-1.4.5.tar.gz /*这两个自动解压成一个包 subversion-1.4.5
        #cd subversion-1.4.5
        #rm –rf apr
        #rm -rf apr-util
        注意:SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要,自己之前多次安装都没成功,现在才明白是在这一点被卡住了,但最终还是被我解决了, 学习,和不断实践 会使你不断成长!
        #./configure
        --prefix=/usr/local/svn
        --with-apxs=/usr/local/apache/bin/apxs
        --with-apr=/usr/local/apr/bin/apr-1-config
        --with-apr-util=/usr/local/apr/bin/apu-1-config
        --with-ssl
        --with-zlib
        --enable-maintainer-mode
        #make
        #make install
        确定一下svn有没有安装成功
        #/usr/local/svn/bin/svnserve - -version

       会看到相关版本信息!
        完了再看看apache 的相关模块有没有加载!如下!
        LoadModule dav_svn_module modules/mod_dav_svn.so
        LoadModule authz_svn_module modules/mod_authz_svn.so

       开始建立版本库
        #svnadmin create /opt/svnrepo/test/*创建仓库"test"

        ls /svn/project/test /*查看有没有创建好,如果多了一些文件则说明版本库已经创建好

        配置提高svn版本库的安全性
        #chmod –R 700 /opt/svnrepo/test不让其他人有该目录的权限
        注意: 直接这么chmod会导致svn客户端无法访问,同时需要修改apache配置文件./conf/httpd.conf文件,(如果你的水平不够高的话,这一步可以先跳过,以免给自己找麻烦!等把服务完全搞定后再来进一步提高安全性) 在httpd.conf文件中有这么一段内容

        (我的系统在安装apache的时候,自动增加了apache用户和apache组,如果你系统没有这个用户和组,则请自己添加该用户和组)
        修改svn仓库的所有者
        #chown -R apache:apache /opt/svnrepo/test

5、配置apache支持svn

在httpd.conf内容最后面增加

#Svn Configuration
<Location /svn>
DAV svn
SVNParentPath /opt/svnrepo
AuthType Basic  
AuthName "Hello welcome to here"
AuthUserFile   /opt/svnrepo/upublish/conf/passwd.conf
AuthzSVNAccessFile /opt/svnrepo/upublish/conf/authz.conf
Require valid-user
</Location>

6、配置svn权限管理

        1 . 添加用户:
        # /usr/local/apache/bin/htpasswd –c /svn/passwd user1
        第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
        第二次添加用户不需要带 –c 参数 如:
        # /usr/local/apache/bin/htpasswd /svn/passwd user2

         2 . 权限分配:
        #vi /svn/auth.conf
        [groups]
        team_admin = zhangsan
        team_yunying = lisi,wangwu


     [/]
     @team_admin = rw
    # &joe = r
     # * =

     [upublish:/]
      @team_admin = rw
     * = r
     [upublish:/yunying]
    @team_admin = rw
    @team_yunying = rw
    * = r

7、配置邮件发送

     a:使用sendmail,安装sendmail服务

     b:修改/etc/mail/sendmail.mc 修改DAEMON_OPTIONS(`Port=smtp,Addr=10.10.209.44, Name=MTA')dnl 为本机ip

     c:修改/etc/mail.rc 增加内容

           set from=xxx@126.com smtp=smtp.126.com smtp-auth-user=xxx smtp-auth-password=123456 smtp-auth=login

     d:增加svn_email_commit.sh发送邮件脚本,内容如下:

#!/bin/bash
REPOS=$1
REV=$2
SENDTO=$3
SENDFROM=xxx@126.com
 
LIMITDIFF=200
CHANGELOG=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`
CHANGED=`svnlook changed -r $REV $REPOS`
DIFF=`svnlook diff -r $REV $REPOS | head --lines=$LIMITDIFF`
DATE=`date`
TMPFILE=/tmp/svn$REV-$RANDOM.message
 
SUBJECT="SVNCommit ($AUTHOR) $REPOS [$REV]"
echo "-------------------- SVN Commit Notification --------------------
Repository: $REPOS
Revision:   $REV
Author:     $AUTHOR
Date:       $DATE
    
-----------------------------------------------------------------
Log Message:
-----------------------------------------------------------------
$CHANGELOG
 
-----------------------------------------------------------------
Changes:
-----------------------------------------------------------------
$CHANGED
 
-----------------------------------------------------------------
Diff: (only first $LIMITDIFF lines shown)
-----------------------------------------------------------------
$DIFF
" > $TMPFILE
# Send email
#cat $TMPFILE | mail -a "From: $SENDFROM" -s "$SUBJECT" "$SENDTO"
cat $TMPFILE | mail -a "$TMPFILE" -s "$SUBJECT" "$SENDTO"
 
# Cleanup
rm $TMPFILE

      e:修改post-commit脚本

#!/bin/sh
export LC_CTYPE=en_US.UTF-8

export PATH=$PATH:/usr/local/svn/bin:/opt/svnrepo/upublish/hooks:
REPOS="$1"
REV="$2"

SENDTO="aaa@126.com"
# Send it to these people, calling the script we created above
/opt/svnrepo/upublish/hooks/svn_email_commit.sh "$REPOS" "$REV" "$SENDTO"


8、自动sendmail服务

service sendmail start


10、可以测试

mail -s "test" bbb@126.com


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:629541次
    • 积分:6045
    • 等级:
    • 排名:第4323名
    • 原创:112篇
    • 转载:39篇
    • 译文:1篇
    • 评论:165条
    文章分类
    最新评论