Svn linux服务端安装及配置

时间:2020-12-11 09:43:23

Svn服务端安装及配置

安装centos7

用vmware虚拟机安装,iso镜像链接地址,http://pan.baidu.com/s/1i45AXN3

关闭selinux防火墙

vim /etc/selinux/config
将SELINUX的值设置为disabled

如果不关,日志会出现Permission denied: [client 192.168.246.1:9377] AH01620: Could not open password file: /home/svn/conf/svn-auth-conf

安装httpd

yum install httpd -y

subversion 软件安装

yum install mod_dav_svn subversion -y

Apache 配置

vim /etc/httpd/conf/httpd.conf

添加
:
ServerName localhost:80

如果配置出现异常要查日志的话,根据httpd.conf确定日志路径,默认是/etc/httpd/logs下

svn apache 配置 加载组件模块

vim /etc/httpd/conf.d/subversion.conf

复制下面内容
<Location /repos>
DAV svn
#SVNPath /svn/repos
SVNParentPath /home/svn/data
AuthzSVNAccessFile /home/svn/conf/svn-acl-conf
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /home/svn/conf/svn-auth-conf
Require valid-user
</Location>

创建svn客户端授权用户

#mkdir -p /home/svn/conf
第一次创建
# htpasswd -cm /home/svn/conf/svn-auth-conf wmf

修改密码或者添加用户
# htpasswd -m /home/svn/conf/svn-auth-conf wmf

此操作不用重启httpd服务即可生效

创建仓库

mkdir -p /home/svn/data
cd /home/svn/data
svnadmin create test

添加访问控制

vim /home/svn/conf/svn-acl-conf
添加下面内容
[test:/]
wmf=rw

启动服务并设置开机启动

systemctl enable httpd.service
systemctl start httpd.service

备份服务器配置

scp同步方法

由于有多个项目,如果采用上面的方法会很痛苦,故直接采用scp复制根目录的方法,而且还能保存一天的备份

主从机间免密码登录

#用户home目录下生成密匙对,执行指令前先ssh localhost登陆一下,确保.ssh隐藏目录生成,可以先ls -a 看下有木有
ssh-keygen -t rsa
#默认回车后检查生成的文件
ls -a .ssh
#显示 id_rsa id_rsa.pub
#将公钥添加到认证文件
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
#启用公钥认证功能
vim /etc/ssh/sshd_config
#删除选项注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service sshd restart
#本地检查无密码认证,无需输入密码即可登录成功
ssh localhost
#将本地公钥拷贝到目标服务器,即可无验证登陆目标服务器
160通过ssh localhost新建.ssh文件夹
scp id_rsa.pub root@192.168.2.160:/root/.ssh/
160上执行
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
scp -r /data/svn root@192.168.2.160:/data/
ssh root@192.168.2.160 "rm -rf /data/svnbak;cp -r /data/svn /data/svnbak;rm -rf /data/svn"

编写定时脚本

chkconfig crond on开机自启动

查看crontab服务状态:service crond status
crontab -e -编辑用户目前的crontab.

#每晚的23:30

30 23 * * * /home/svnscp.sh

crontab -l -列出用户目前的crontab.

crontab -d -删除用户目前的crontab.

svnscp.sh

#!/bin/bash
time=date '+%Y-%m-%d %H:%M:%S'
echo "$time 同步脚本开始执行" >>/home/svnlog
ssh root@192.168.2.160 "rm -rf /data/svnbak;cp -r /data/svn /data/svnbak;rm -rf /data/svn"
scp -r /home/svn root@192.168.2.160:/data/
time=date '+%Y-%m-%d %H:%M:%S'
echo "$time 同步脚本执行完毕" >>/home/svnlog