前言
由于公司物理机老旧(比我小不了多少)服务器宕机,重新来了两台虚拟机以后部署数据库、svn、禅道、项目等;
现在要实现23虚拟机部署svn,24不同主机备份svn
一、安装svn
由于要实现svn在外部的http访问,所以需要安装httpd
1、安装httpd(如果安装了,则跳过)
a、查看可安装的httpd版本
[root@sdw1 /]# yum list httpd
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
可安装的软件包
httpd.x86_64
b、安装
[root@sdw1 /]# yum install httpd.x86_64
c、启动、停止、重启命令如下
[root@sdw1 /]# server httpd staart
[root@sdw1 /]# service httpd stop
[root@sdw1 /]# service httpd restart
d、查看进程
[root@sdw1 ~]# ps -ef |grep httpd
root 24770 1 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24771 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24772 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24773 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24774 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24775 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24776 24770 0 10:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 24822 24800 0 10:45 pts/1 00:00:00 grep --color=auto httpd
二、安装svn
[root@localhost svn]# yum -y install mod_dav_svn
#会自动安装mod_dav_svn及其依赖包:mod_dav_svn-1.6.11-9,neon-0.29.3-2,pakchois-0.4-3.2,subversion-1.6.11-9
安装完看此目录/etc/httpd/conf.d/subversion.conf 下是否有该目录和该文件
如果svn不是yum -y install mod_dav_svn 安装则,还需要安装mod_dav_svn 模块 如下
# yum install mod_dav_svn subversion
必须安装mod_dav_svn 模块
安装完svn后要重启apache
# service httpd restart
查看测试是否安装svn 模块
# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so
# svn --version
三、配置
1、配置svn仓库
#创建svn目录
[root@localhost svn]# mkdir -p /svn/repos1 #仓库1
[root@localhost svn]# mkdir -p /svn/repos2 #仓库2
#可以任意配置,任意指定你喜欢的目录
#建立svn版本库
[root@localhost svn]# svnadmin create /svn/repos1
[root@localhost svn]# svnadmin create /svn/repos2
#有多少个仓库就执行多少次该命令,只需要换最后的名字即可
2、修改svn版本库文件
[root@localhost svn]# vi /svn/repos1/conf/svnserve.conf
修改结果如下
【general】
anon-access = none #禁止陌生人访问
auth-access = write
password-dp = /svn/conf/pwd.conf #指向用户配置文件
authz-db = /svn/conf/authz.conf #指向权限配置文件
realm = repos1 #指向svn仓库地址
备注:其他仓库配置和该配置相同,只需要修改仓库路径。
3、配置svn用户和权限(svn默认的用户和权限配置文件在版本库的conf目录下,由于多个版本库的这两个文件可以公用,则提出来写成公用的,将原来的删除,一下会操作)
a、配置用户
#创建conf文件夹
[root@localhost svn]# mkdir conf
#进入文件夹
[root@localhost svn]# cd conf/
#用vim创建该文件,并保存退出
[root@localhost conf]# vim /svn/conf/pwd.conf
#根据提示输入密码,只有第一个用户加-c,其余用户不用-c。
[root@localhost conf]# htpasswd -c /svn/conf/pwd.conf admin
[root@localhost conf]# htpasswd /svn/conf/pwd.conf test
#修改文件,在第一行加[users]
[root@localhost conf]# vi /svn/conf/pwd.conf
备注:加[user]非常重要,因为用htpasswd的方式加用户会负载掉[users],所以每次加完用户,都需要补一下该节点。
修改完pwd.conf文件展示如下:
[users]
admin:$apr1$S/Z1cGaA$b4aPyeR464FABJpz7JDKL/
test:$apr1$FoMBTEg4$.67ICj7xw1nIBZQClCfQx/
~
~
~
~
~
~
~
格式
用户名:密码(密码是http访问自动加密)
b、配置权限
#在conf文件夹下创建authz.conf文件
[root@localhost conf]# vim /svn/conf/authz.conf
#文件内容如下:
[groups]
admin=admin,user1,user2
test= user3
[/]
@admin=rw
[repos1:/]
user3=r
[groups]是定义组,格式为:组名称=用户名称,用户名称
[/]表示:根目录下的权限定义
[repos1:/]表示:仓库下的权限定义
如果要分项目,则以此类推:
如:[repos1:/aaa]则表示仓库下的aaa项目的权限定义
@admin表示:admin这个组下的用户权限
user1=1表示:user1这个用户的权限
(注意:权限类型:r,w,rw 分别表示只读,只写,读写。如果是user1= 这种空情况则表示没有)
c、至此,svn配置完成,删除默认的配置文件
[root@localhost conf]# rm -rf /svn/repos1/conf/passwd
[root@localhost conf]# rm -rf /svn/repos2/conf/authz
(注:若为多个仓库,删除多个仓库的备注即可)
d、建立启动svn的账户
[root@localhost svn]# useradd svn #如果提示svn账户已存在,则执行以下命令
[root@localhost svn]# passwd svn #根据提示修改密码,不能过于简单,可使用常用密码
[root@localhost svn]# chown -R svn:svn /svn/ #允许用户svn访问版本库
[root@localhost svn]# chmod -R o+rw /svn #解决windows检出提交信息/svn/db/txn-current-lock的错误
e、配置svn的端口
vi /etc/httpd/conf/httpd.conf
找到如下字段:
#Listen 12.34.56.78:80
Listen 80
然后修改80,默认80,可改81等
f、配置httpd
[root@sdw1 /etc/rc.d/init.d]# vi /etc/httpd/conf.d/subversion.conf
修改结果如下
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /svn
AuthType Basic
AuthName "Authorization"
AuthUserFile /svn/conf/passwd.conf
AuthzSVNAccessFile /svn/conf/authz.conf
Require valid-user
</Location>
~
保存退出,重启httpd服务
[root@localhost svn]# service httpd restart
g、启动svn
[root@localhost svn]# svnserve -d -r /svn/
h、查看svn服务是否正常
[root@localhost svn]# ps aux|grep svn
#出现以下内容,说明svn服务启动成功
root 3072 0.0 0.1 156996 768 ? Ss 00:04 0:00 svnserve -d -r /svn/
root 3084 0.0 0.1 103252 832 pts/2 S+ 00:04 0:00 grep svn
i、进入浏览器访问
在浏览器中输入:服务器ip+端口+httpd配置中的<Location /svn>
如:http://10.xx.xx.xx:80/svn/repos1
提示用户名密码
四、我遇到的错误
internal server error
解决错误
在apache配置文件httpd.conf中搜索
AllowOverride None
然后改为AllowOverride All
然后在找到
LoadModule rewrite_module modules/mod_rewrite.so
把这个前面的“#”号去掉,就是去掉注释,如果没有则添加上,然后重启apache.搞定!
service httpd restart
参考 :https://blog.csdn.net/Liucheng417/article/details/49510557