--------------------------------------------------------------------------------------
1.软件版本:
Linux: CentOS release 5.4 (Final)
Subversion: subversion-1.6.12.tar.gz / subversion-deps-1.6.12.tar.gz
Apache: httpd-2.2.10.tar.gz
--------------------------------------------------------------------------------------
2.安装Apache:
tar -zxvf httpd-2.2.10.tar.gz
cd httpd-2.2.10
./configure --enable-dav --enable-dav-fs --enable-so --enable-maintainer-mode -prefix=/usr/local/apache2 --enable-mods-shared=all
make
make install
启动服务/usr/local/apache2/bin/apachectrl start
打开浏览器输入 若出现"It works!"页面,则安装成功.
--------------------------------------------------------------------------------------
3.安装SVN:
tar zxvf subversion-1.6.12.tar.gz
tar zxvf subversion-deps-1.6.12.tar.gz
cd subversion-1.6.12
./configure --prefix=/usr/local/subverion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/root/httpd-2.2.10/srclib/apr/ --with-apr-util=/root/httpd-2.2.10/srclib/apr-util --with-ssl
make install
svnadmin –-version
--------------------------------------------------------------------------------------
4.安装openssl
tar zxvf openssl-0.9.8o.tar.gz
cd openssl-0.9.8o
./config
make
make install
--------------------------------------------------------------------------------------
5.创建一个 Subversion 版本库:
创建文件夹
mkdir -p /opt/svn/ihaveu.com
运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
svnadmin create --fs-type fsfs /opt/svn/ihaveu.com/
--------------------------------------------------------------------------------------
6.查看生成的版本库结构:
ls -l /opt/svn/ihaveu.com
drwxr-xr-x 2 root root 4096 07-26 20:41 conf
drwxr-xr-x 2 root root 4096 07-26 20:41 dav
drwxr-sr-x 5 root root 4096 07-26 20:41 db
-r--r--r-- 1 root root 2 07-26 20:41 format
drwxr-xr-x 2 root root 4096 07-26 20:41 hooks
drwxr-xr-x 2 root root 4096 07-26 20:41 locks
-rw-r--r-- 1 root root 229 07-26 20:41 README.txt
======================================================================================
7.创建项目临时目录,建议目录结构如下:
mkdir -p /etc/svn/tmp/project_exam/trunk tags branches
/**********************************************************
然后将项目文件复制到trunk下,如果是从CVS转移过来的项目,用下面命令清理目录
#find projectname/ -name CVS -exec rm -rf {} \;
**********************************************************/
--------------------------------------------------------------------------------------
8.导入source
[root@localhost /etc/svn/tmp/project_exam/trunk/exam_online] # /usr/local/subverion/bin/svn import -m "initial import" /etc/svn/tmp/
/***********************************************************
-m 后面跟的是操作注释 /opt/sv/tmp是项目文件位置 是创建的软件仓库
***********************************************************/
--------------------------------------------------------------------------------------
9.检查是否倒入成功
#svn list --verbose
/***********************************************************
如果成功你看到到你倒入的项目列表,按我的操作步骤应该不会有错
***********************************************************/
/%%%%%%%%%%%%%%%%% 以上3步可以忽略 %%%%%%%%%%%%%%/
=======================================================================================
10. 给仓库授权
chown -R apache:apache /opt/svn/ihaveu.com/
[chmod 770 /opt/svn/ihaveu.com/
chmod -R g+x /opt/svn/ihaveu.com/
--------------------------------------------------------------------------------------
11.用Apache管理用户权限:
首先需要创建一个用户文件
htpasswd -c /opt/svn/ihaveu.com/htpasswd chuzhuo
如果 passwordfile 不存在,可以加上 -c 选项让 htpasswd 新建一个。创建好的文件内容是用户名加上密码的 MD5 密文。
接下来修改 httpd.conf,在 Location 标签中加入如下内容:
先修改版本库的权限:
User daemon
Group daemon
//把上述内容改成:
User apache
Group apache
整合apache svn:
Dav svn
SVNPath /opt/svn/ihaveu.com
AuthType Basic
AuthName "svn ihaveu"
AuthUserFile /opt/svn/ihaveu.com/htpasswd
AuthzSVNAccessFile /opt/svn/ihaveu.com/conf/authz
require valid-user
--------------------------------------------------------------------------------------
12.改svn权限策略控制文件
vi /opt/svn/ihaveu.com/conf/authz
group_admin = chuzhuo
[ihaveu.com:/ ]
@group_admin = rw
* = r
--------------------------------------------------------------------------------------
13.修改SVN用户文件
(一行一个用户,前面用户名,后面密码):
vi /opt/svn/ihaveu.com/conf/passwd
chuzhuo = chuzhuo
--------------------------------------------------------------------------------------
14.修改svn服务器端配置文件
vi /opt/svn/ihaveu.com/conf/svnserve.conf
anon-access = none
auth-access = write
--------------------------------------------------------------------------------------
15.启动SVN服务器端(如果只使用Https访问,则不需要启动SVN,启动Apache就可以了)
/usr/local/svn/subversion/bin/svnserve -d -r /usr/local/svn_repository/
如果要指定端口号,则加上--listen-port 21,21是指定的端口号
--------------------------------------------------------------------------------------
16.设置ssl访问(生成证书)
cd /usr/local/apache2/conf
openssl genrsa -des3 -out ca.key 1024
//按提示输入密码:****
chmod 400 ca.key
//生成证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
//按提示分别输入如下内容:
//Country Name: CN
//State or Province Name: BeiJing
//Locality Name: BeiJing
//Organization Name:
//Organizational Unit Name:
//Common Name:
//Email Address: your email
chmod 400 ca.crt
openssl genrsa -des3 -out server.key 1024
//按提示输入密码:
chmod 400 server.key
openssl req -new -key server.key -out server.csr
//按提示分别输入如下内容:
//Country Name: CN
//State or Province Name: BeiJing
//Locality Name: BeiJing
//Organization Name:
//Organizational Unit Name:
//Common Name:
//Email Address: your email
(ca.crt 和server.csr 的Common Name不能一样)
openssl req -noout -text -in server.csr
sh sign.sh server.csr
chmod 400 server.crt
vi /usr/local/apache2/conf/httpd.conf
取消Include conf/extra/httpd-ssl.conf前的注释#
启动apache
/usr/local/apache2/bin/apachectl start
输入密码****
--------------------------------------------------------------------------------------
17.配置在linux下apache自动启动的标准脚本
--------------------------------------------------------------------------------------
17,为SVN加入Email通知
可以通过Subversion的Hook脚本的方式为SVN加入邮件列表功能
编译安装了Subversion后 在源码的tools 下有一个comm-email.pl的Perl脚本,在你的档案目录下有一个hooks目录,进入到hooks目录把post-commit.tmpl 改名为post-commit并给它可执行的权限。
更改post-commit脚本 把comm-email.pl脚本的决对路径加上,否则 SVN找不到comm-email.pl
解决乱码问题:
my @difflines; (行487) 的前面加上:
for (my $i=0; $i<@body; ++$i){
my @rsa = split( /\?\\/, $body[$i] );
$body[$i] = "";
foreach my $val (@rsa) {
$val =~ /(^[0-9]{3})(.*)/;
if(defined $1 and $1 gt 0){
#print "\n[".$1 . "," . $2."]";
$body[$i] .= chr($1) . $2;
}
else{
$body[$i] .= $val;
}
}
}
REPOS="$1"
REV="$2"
/usr/local/svn/resp/commit-email.pl "$REPOS" "$REV"
#log-commit.py --repository "$REPOS" --revision "$REV"
**注意运行权限问题(注意commit-email.pl 中需要配置发送mail的方式,建议使用sendmail,SMTP方式邮件格式不正确。post-commit其实就是一个钩子脚本文件,需要的信息就是$1 $2,可以自己实现这个文件。)
--------------------------------------------------------------------------------------
18,备份
#!/bin/bash
SRCPATH=/home/svn/repos/; #定义仓库parent路径
DISTPATH=/home/backup/svn/`date +%m%d`/ ; #定义存放路径;
if [ -d "$DISTPATH" ]
then
echo "aaaaa"
else
mkdir $DISTPATH
chmod g+s $DISTPATH
fi
echo $DISTPATH
svnadmin hotcopy $SRCPATH/Project1 $DISTPATH/Project1 >/home/backup/svn/cpreport.log 2>&1;
阅读(1093) | 评论(0) | 转发(0) |