linux svn 安全,Linux安全配置Svn+Apache+SSL

Linux安全配置Svn+Apache+SSL

Ubuntu Linux,Apache HTTP Server 2.2.11

(),subversion-1.6.2.tar.gz ,

subversion-deps-1.6.2.tar.gz

(

/ProjectDocumentList?folderID=260expandFolder=74),OpenSSL

()。

1,安装apache:

#tar -zxvf httpd-2.2.11.tar.gz

#cd httpd-2.2.11

#./configure

--enable-dav --enable-dav-fs --enable-so   --enable-ssl

--enable-maintainer-mode -prefix=/usr/local/apache2

--enable-mods-shared=all

#make

#make install

2,安装SVN:

# tar zxvf subversion-1.6.2.tar.gz

# tar zxvf subversion-deps-1.6.2.tar.gz

# cd subversion-1.6.2

#

./configure --prefix=/usr/local/subverion

--with-apxs=/usr/local/apache2/bin/apxs

--with-apr=/usr/local/httpd-2.2.11/srclib/apr/

--with-apr-util=/usr/local/httpd-2.2.11/srclib/apr-util --with-ssl

/*其中/usr/local/httpd-2.2.11是apache的源代码的目录,请根据实际情况修改。*/

/*在make 的时候可能会遇到缺少 srclib/apr/libapr-1.la,srclib/apr-util/libaprutil-1.la 两个文件,找不到而make error.

解决办法:/usr/local/apache2/lib/ 中找到,将其复制到源代码文件夹相应的位置中.*/

# make install

# svnadmin –-version

3,安装openssl

tar zxvf openssl-0.9.8i.tar.gz

cd openssl-0.9.8i

./config

make

make install

4,创建一个 Subversion 版本库:

# 创建文件夹

$ mkdir -p /etc/svn/SVNRepository

# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

$ svnadmin create --fs-type fsfs /etc/svn/SVNRepository

5,查看生成的版本库结构:

$ ls -l /etc/svn/SVNRepository

6,创建项目临时目录,建议目录结构如下:

mkdir -p /etc/svn/tmp/project_exam/trunk tags branches

/**********************************************************

然后将项目文件复制到trunk下,如果是从CVS转移过来的项目,用下面命令清理目录

#find projectname/ -name CVS -exec rm -rf {} \;

**********************************************************/

7,导入source

[root@localhost /etc/svn/tmp/project_exam/trunk/exam_online] # /usr/local/subverion/bin/svn import -m "initial import" /etc/svn/tmp/ file:///etc/svn/SVNRepository/

/***********************************************************

-m 后面跟的是操作注释 /opt/sv/tmp是项目文件位置 file:///etc/svn/SVNRepository是创建的软件仓库

***********************************************************/

8,检查是否倒入成功

#svn list --verbose file:///etc/svn/SVNRepository/

/***********************************************************

如果成功你看到到你倒入的项目列表,按我的操作步骤应该不会有错

***********************************************************/

9, 给仓库授权

#chown -R apache.apache /etc/svn/SVNRepository

#chmod 770 /etc/svn/SVNRepository

#chmod -R g+w /etc/svn/SVNRepository

10,用Apache管理用户权限:

首先需要创建一个用户文件

htpasswd etc/svn/passwordfile username

如果 passwordfile 不存在,可以加上 -c 选项让 htpasswd 新建一个。创建好的文件内容是用户名加上密码的 MD5 密文。

接下来修改 httpd.conf,在 Location 标签中加入如下内容:

先修改版本库的权限:

User daemon

Group daemon

//把上述内容改成:

User apache

Group apache

整合apache svn:

Dav svn

SVNPath /etc/svn/SVNRepository

AuthType Basic

AuthName "svn SVNRepository"

AuthUserFile /etc/svn/passwordfile

AuthzSVNAccessFile /etc/svn/SVNRepository/conf/authz

require valid-user

SSLRequireSSL

11,改svn权限策略控制文件

vi /etc/svn/SVNRepository/conf/authz

12,修改SVN用户文件

(一行一个用户,前面用户名,后面密码):

vi /etc/svn/SVNRepository/conf/passwd

13,修改svn服务器端配置文件

vi /etc/svn/repos/conf/svnserve.conf

14,启动SVN服务器端(如果只使用Https访问,则不需要启动SVN,启动Apache就可以了)

/usr/local/svn/subversion/bin/svnserve -d -r /usr/local/svn_repository/

如果要指定端口号,则加上--listen-port 21,21是指定的端口号

15,设置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: ShangHai

//Locality Name: ShangHai

//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: Shanghai

//Locality Name: Shanghai

//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

输入密码****

16,配置在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   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/SVNRepository/commit-email.pl "$REPOS" "$REV" email@address1.com email@address2.com

#log-commit.py --repository "$REPOS" --revision "$REV"

**注意运行权限问题(注意commit-email.pl 中需要配置发送mail的方式,建议使用sendmail,SMTP方式邮件格式不正确。post-commit其实就是一个钩子脚本文件,需要的信息就是$1 $2,可以自己实现这个文件。)

18,备份

#!/bin/bash

SRCPATH=/home/svn/SVNRepository/; #定义仓库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;

/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*

1.需要两个文件,httpd和subversion. httpd是web服务器,用来通过web访问subversion。

2.新建一个用户:svnroot

最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,但是下面的一些安装和配置操作还是 需要root用户来完成的,因为有些操作只有root才能做。权限问题很重要。曾经因为权限问题折腾了一天。3.编译安装httpd (root用户操作):

//解压apache2安装包

# tar xvzf httpd-2.2.11.tar.gz

//进入解压后的目录

# cd httpd-2.2.11

//配置apache安装,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。

//后面的参数制定你要把apache安装哪里

# ./configure --enable-dav --enable-so --prefix=/usr/local/apache2/

# make

//安装

# make install

4.安装Subversion

//解压SubVersion安装包 (root用户进行下面的操作)

# tar xvzf Subversion-1.6.2.tar.gz

# tar xzvf subversion-deps-1.6.2.tar.gz(解压后的内容会自动到Subversion-1.6.2目录中)

(tar xjf *.tar.bz2)

//进入解压后的目录

# cd Subversion-1.6.2

//配置subversion安装

#./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion

--with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --enable-maintainer-mode

# make

//安装

# make install

//创建库文件所在的目录 (svnroot用户进行下面的操作)

# mkdir /home/svnroot/repository

//进入subversion的bin目录

# cd /usr/local/subversion/bin

//创建仓库"test"

# ./svnadmin create /home/svnroot/repository/test

# cd /home/svnroot/repository/test

//看看是不是多了些文件,如果是则说明Subversion安装成功了

# ls –l

# cd /usr/local/subversion/bin

//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去,

//提交后的修订版为1。

# ./svn import /home/user/import file:///home/svnroot/repository/test –m "注释"

//不让其他人有该目录的权限

# chmod 700 /home/svnroot/repository

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值