How to setup SVN using HTTPS on FC5
I got my latest SVN 1.3.2 working on FC5 with Apache 2.2.0 over SSL,
so decided to just share the same with all.
Here we go,
1) To install SVN do
yum install subversion.
2) To create a SSL certificate for Apache do -
Step one - create the key and request:
openssl req -new > new.cert.csr
Step two - remove the passphrase from the key (optional):
openssl rsa -in privkey.pem -out new.cert.key
Step three - convert request into signed cert:
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1024
place the keys to following locations & edit the /etc/httpd/conf.d/ssl.conf as follows -
SSLCertificateFile /etc/pki/tls/certs/new.cert.cert
SSLCertificateKeyFile /etc/pki/tls/private/new.cert.key
Test the certificate.
3) create /home/subversion/repository & /home/subversion/permissions
chown -R apache:apache /home/subversion/repository
svnadmin create /home/subversion/repository
svn import /tmp/project1 file:///home/subversion/repository/project1 -m "initial import"
svn checkout file:///home/subversion/repository/project1 project1
4) Edit httpd.conf as follows
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_module modules/mod_dav.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNPath /home/subversion/repository/
# our access control policy
AuthzSVNAccessFile /home/subversion/permissions/svnauthorz.conf
#how to authenticate the users
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /var/www/.htpasswd
# only authenticated users access the SVN
Require valid-user
SSLRequireSSL
</Location>
use following command to create users for authentication
htpasswd /var/www/.htpasswd john
& put following style entry in svnauthorz.conf
[/]
john = rw
liza = r
thats it, restart the httpd service & your SVN is ready to use for developers.
Regards
说明:请根据自己需要调整. 本人不对此文章造成的任何后果负责,请慎重使用.
脚本功能: 定期对一些项目进行完整备份.
project.lst 文件格式如下:
project1
project2
备份脚本如下:
#!/bin/sh
#
# subversion data backup script
# by scud http://www.jscud.com
# 2005-11-27
#
# subversion完整备份的脚本,调整好后使用crontab -e 放到自动执行里面即可.
#
#备份日志文件
LogFile=/backup/svn/svnbak.log
DATE=`date +%Y%m%d`
#备份目录
BakDir=/backup/svn/data
#日常备份目录,如果有
DailyDir=/backup/svn/daily
#要备份的项目列表文件,只有项目名
ProjectLst=/backup/svn/project.lst
#所有项目都保存在这个目录下
SvnDir=/var/svn
#svnadmin程序的路径
SVNADMIN=/app/subversion/bin/svnadmin
echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
cd $BakDir
#读取项目列表
PROJECTLIST=`cat $ProjectLst`
for project in $PROJECTLIST
do
projectdata=$SvnDir/$project
destdir=$BakDir/$project
dumpfile=$DATE.$project.tgz
if [ -f $BakDir/$dumpfile ]
then
echo "backup file have exist!" >>$LogFile
else
$SVNADMIN hotcopy $projectdata $destdir --clean-logs
tar czvf $dumpfile $destdir >/dev/null
rm -fr $project
echo "backup $project done into $dumpfile ">>$LogFile
fi
## delete old tgz 此处根据crontab的时间调整,例如一周一次备份,此处保留了5份备份,以前的删除
oldfile="$BakDir/"$(date +%y%m%d --date=’28 days ago’).$project.tgz
if [ -f $oldfile ]
then
rm -f $oldfile >> $LogFile 2>&1
echo "[$oldfile]Delete Old File Success!" >> $LogFile
else
echo "[$oldfile]No Old Backup File!" >> $LogFile
fi
done
#delete previous daily backup files
cd $DailyDir
rm -f *
根据自己的设置配置好后,使用crontab 放到定时执行的任务里即可.
增量备份的脚本目前还没有...