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
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
相关文章推荐
- Linux配置自动发送邮件
- Ubuntu下配置SVN自动发送邮件通知
- Ubuntu下配置SVN自动发送邮件通知
- Ubuntu下配置SVN自动发送邮件通知
- Ubuntu下配置SVN自动发送邮件通知
- SVN1.7.14上配置post_commit hooks,实现自动发邮件功能
- Linux上配置postfix发送邮件
- Linux自动向指定用户发送邮件
- asp.net 自动发送激活邮件,不需修改web.config配置文件
- Linux 自动任务生成数据和发送邮件
- TD邮件自动发送配置步骤
- 用linux脚本自动发送和收取邮件
- Linux配置sendmail实现PHP发送邮件
- 如何配置禅道管理自动发送通知邮件
- linux下配置使用sendEmail发送邮件
- 用shell脚本监控linux系统 自动发送邮件
- Linux下监控磁盘使用量并在超过阀值后自动发送报警邮件
- Ubuntu Linux自动发邮件配置及邮件发送脚本
- Linux简单配置SendMail发送邮件
- linux下通过配置mailx和第三方邮箱 发送邮件