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