您的位置:首页 > 运维架构 > Linux

Linux 配置 SVN自动发送邮件

2013-12-02 15:39 423 查看
公司游戏运营需要,新搭建了一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: