指引网

当前位置: 主页 > 操作系统 > CentOS >

CentOS 6.x下SVN服务器同时支持Apache的http和svnserve独

来源:网络 作者:佚名 点击: 时间:2017-06-14 23:41
[摘要]  看了很久的标题没想出来如何简化了,于是还是原样搬出来给各位看看吧,这篇文章就是介绍CentOS 6.x下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权

说明:

 

服务器操作系统:CentOS 6.x

 

服务器IP:192.168.21.134

 

实现目的:

 

1、在服务器上安装配置SVN服务;

 

2、配置SVN服务同时支持Apache的http和svnserve独立服务器两种模式访问;

 

3、Apache的http和svnserve独立服务器两种模式使用相同的访问权限账号。

 

具体操作:

 

一、关闭SELINUX

 

vi /etc/selinux/config

 

#SELINUX=enforcing #注释掉

 

#SELINUXTYPE=targeted #注释掉

 

SELINUX=disabled #增加

 

:wq! #保存退出

 

setenforce 0 #使配置立即生效

 

二、开启防火墙端口

 

系统运维  www.111cn.net  温馨提醒:系统运维原创内容©版权所有,转载请注明出处及原文链接

 

基于Apache的http模式,默认端口为80

 

基于svnserve的独立服务器模式,默认端口为3690

 

vi /etc/sysconfig/iptables #编辑防火墙配置文件

 

# Firewall configuration written by system-config-firewall

 

# Manual customization of this file is not recommended.

 

*filter

 

:INPUT ACCEPT [0:0]

 

:FORWARD ACCEPT [0:0]

 

:OUTPUT ACCEPT [0:0]

 

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

-A INPUT -p icmp -j ACCEPT

 

-A INPUT -i lo -j ACCEPT

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

 

-A INPUT -j REJECT --reject-with icmp-host-prohibited

 

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

 

COMMIT

 

:wq! #保存退出

 

service iptables restart #最后重启防火墙使配置生效

 

三、安装Apache

 

yum install httpd apr apr-util httpd-devel #安装Apache

 

yum install mod_dav_svn mod_auth_mysql #安装基于Apache的http模式访问的支持模块

 

chkconfig httpd on #设置开机启动

 

service httpd start #启动Apache

 

httpd -version #查看Apache版本信息

 

cd /etc/httpd/modules/

 

#查看是否有mod_dav_svn.so和mod_authz_svn.so模块,如果有,说明mod_dav_svn安装成功!

 

#mod_auth_mysql模块是用数据库存储账号信息,本次教程没有涉及,可以不安装!

 

注意:如果Apache启动之后提示错误:

 

httpd:httpd: Could not reliably determine the server's fully qualif domain name, using ::1 for ServerName

 

解决办法:

 

vi /etc/httpd/conf/httpd.conf #编辑

 

ServerName www.example.com:80 #去掉前面的注释

 

:wq! #保存退出

 

四、安装SVN

 

yum install subversion #使用yum命令在线安装

 

svnserve --version #查看svn版本信息

 

五、配置SVN

 

1、创建svn版本库

 

mkdir -p /home/svn #创建svn版本库存放目录

 

cd /home/svn #进入目录

 

svnadmin create /home/svn/project1 #创建svn版本库project1

 

svnadmin create /home/svn/project2 #创建svn版本库project2

 

svnadmin create /home/svn/project3 #创建svn版本库project3

 

2、设置配置文件

 

mkdir -p /home/svn/conf #创建配置文件目录

 

cp /home/svn/project1/conf/passwd /home/svn/conf/passwd #拷贝账号密码配置文件模板

 

cp /home/svn/project1/conf/authz /home/svn/conf/authz #拷贝目录权限配置文件模板

 

cp /home/svn/project1/conf/passwd /home/svn/conf/svnserve.conf #拷贝全局配置文件模板

 

vi /home/svn/conf/passwd #编辑,添加以下代码

 

[users]

 

# harry = harryssecret

 

# sally = sallyssecret

 

osyunwei=123456

 

osyunwei1=123456

 

osyunwei2=123456

 

osyunwei3=123456

 

:wq! #保存退出

 

vi /home/svn/conf/authz #编辑,添加以下代码

 

[groups]

 

admin = osyunwei

 

project1 = osyunwei1

 

project2 = osyunwei2

 

project3 = osyunwei3

 

[/]

 

@admin = rw

 

* =

 

[project1:/]

 

@admin = rw

 

@project1 = rw

 

* =

 

[project2:/]

 

@admin = rw

 

@project2 = rw

 

* =

 

[project3:/]

 

@admin = rw

 

@project3 = rw

 

* =

 

:wq! #保存退出

 

vi /home/svn/conf/svnserve.conf #配置全局文件,在最后添加以下代码

 

[general]

 

anon-access=none #禁止匿名访问,设置为none。默认为read,参数:read,write,none

 

auth-access=write #授权用户写权限

 

password-db=/home/svn/conf/passwd #用户账号密码文件路径,可以写绝对路径

 

authz-db=/home/svn/conf/authz #访问控制权限文件路径,可以写绝对路径

 

realm=svn #每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。

 

:wq! #保存退出

 

3、启动SVN

 

svnserve -d -r /home/svn --config-file /home/svn/conf/svnserve.conf --listen-port 3690

 

#--config-file后面跟全局配置参数文件

 

ps -ef|grep svn|grep -v grep #查看进程

 

netstat -ln |grep 3690 #检查端口

 

killall svnserve #关闭svn

 

4、设置svn服务开机启动

 

系统运维  www.111cn.net  温馨提醒:系统运维原创内容©版权所有,转载请注明出处及原文链接

 

vi /etc/init.d/svn #编辑,添加以下代码

 

#!/bin/sh

 

# chkconfig: 2345 85 85

 

# processname: svn

 

svn_bin=/usr/local/svn/bin

 

svn_port=3690

 

svn_home=/home/svn

 

svn_config=/home/svn/conf/svnserve.conf

 

if [ ! -f "$svn_bin/svnserve" ]

 

then

 

echo "svnserver startup: cannot start"

 

exit

 

fi

 

case "$1" in

 

start)

 

echo "Starting svnserve..."

 

$svn_bin/svnserve -d -r $svn_home --config-file $svn_config --listen-port $svn_port

 

echo "Successfully!"

 

;;

 

stop)

 

echo "Stoping svnserve..."

 

killall svnserve

 

echo "Successfully!"

 

;;

 

restart)

 

$0 stop

 

$0 start

 

;;

 

*)

 

echo "Usage: svn { start | stop | restart } "

 

exit 1

 

esac

 

:wq! #保存退出

 

chmod +x /etc/init.d/svn #添加执行权限

 

chkconfig svn on #开机自启动

 

service svn start #启动

 

六、配置svn支持http访问

 

1、创建账号密码认证文件

 

htpasswd -cm /home/svn/conf/http_passwd osyunwei

 

htpasswd -m /home/svn/conf/http_passwd osyunwei1

 

htpasswd -m /home/svn/conf/http_passwd osyunwei2

 

htpasswd -m /home/svn/conf/http_passwd osyunwei3

 

根据提示输入2次密码即可。

 

注意:

 

/home/svn/conf/目录下面passwd文件是svnserve独立服务器使用的认证文件,密码没有加密,明文显示。

 

/home/svn/conf/目录下面http_passwd文件是Apache的http模式使用的认证文件,密码使用MD5加密。

 

passwd和http_passwd文件中,账号密码必须设置相同。

 

2、设置Apache配置文件

 

vi /etc/httpd/conf.d/subversion.conf #编辑,在最后添加以下代码

 

 

DAV svn

 

#SVNPath /home/svn

 

SVNParentPath /home/svn

 

# # Limit write permission to list of valid users.

 

#

 

# # Require SSL connection for password protection.

 

# # SSLRequireSSL

 

#

 

AuthType Basic

 

AuthName "Authorization SVN"

 

AuthzSVNAccessFile /home/svn/conf/authz

 

AuthUserFile /home/svn/conf/http_passwd

 

Require valid-user

 

#

 

 

:wq! #保存退出

 

3、设置目录权限

 

chown apache:apache /home/svn -R #设置svn目录所有者为Apache服务运行账号apache

 

4、重启Apache服务

 

service httpd restart #重启

 

七、测试svn

 

Windows下安装svn客户端TortoiseSVN。

 

TortoiseSVN下载地址:http://tortoisesvn.net/downloads.html

 

安装完成之后,桌面-右键单击,选择TortoiseSVN-版本库浏览器

 

 

URL输入:svn://192.168.21.134/project1

 

用户名:osyunwei1

 

密码:123456

 

勾选:保存认证

 

确定

 

 

可以进入project1版本库目录,右键单击之后,可以选择创建文件夹等操作。

 

 

URL输入:http://192.168.21.134/svn/project1

 

用户名和密码跟上面一样,可以进入project1版本库目录,右键单击之后,可以选择创建文件夹等操作。

 

 

project1访问:

 

svn://192.168.21.134/project1

 

http://192.168.21.134/svn/project1

 

用户名:osyunwei1

 

密码:123456

 

project2访问:

 

svn://192.168.21.134/project2

 

http://192.168.21.134/svn/project2

 

用户名:osyunwei2

 

密码:123456

 

project3访问:

 

svn://192.168.21.134/project3 #svnserve独立服务器模式

 

http://192.168.21.134/svn/project3 #Apache的http模式

 

用户名:osyunwei3

 

密码:123456

 

扩展阅读:

 

1、Apache htpasswd命令选项参数说明

 

-c 创建一个加密文件

 

-n 不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上

 

-m 默认apache htpassswd命令采用MD5算法对密码进行加密

 

-d apache htpassswd命令采用CRYPT算法对密码进行加密

 

-p apache htpassswd命令不对密码进行进行加密,即明文密码

 

-s apache htpassswd命令采用SHA算法对密码进行加密

 

-b 在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码

 

-D 删除指定的用户

 

2、SVNPath 与 SVNParentPath区别:

 

SVNParentPath:支持多个相同父目录的SVN版本库。

 

SVNPath:只支持一个主目录的SVN版本库,如果在主目录下面建新项目,则提示无权访问。

------分隔线----------------------------