SVN的搭建使用,这里仅作记录,含蓄较少
环境:
| 系统 | CentOS6.5 |
| 源 | 阿里源 |
| 版本 | subversion-1.6.11-15.el6_7.x86_64 |
配置YUM源:
cd /etc/yum.repos.d;mkdir backup;mv * backup/ curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum clean all && yum makecache
安装Subversion:
yum install subversion -y ##默认已经系统已经安装,可以执行此命令进行1.6X小版本升级
创建svn目录:
创建svn的数据目录及权限目录 mkdir -p /data1/svndata ##数据目录
管理SVN:
启动svn: svnserve -d -r /data1/svndata/ 停止svn: pkill svnserve ##或者killall svnserve和kill -9 PID
配置SVN:
创建运维专用的文档库:sadoc svnadmin create /data1/svndata/sadoc 创建一个网页项目代码库:www svnadmin create /data1/svndata/www
分析目录结构:
[root@CentOS6-1 svndata]# tree -L 1 ./* ./sadoc ├── conf ##配置文件及密码权限配置 ├── db ##数据库的存储位置 ├── format ├── hooks ##钩子文件目录 ├── locks ##锁文件 └── README.txt [root@CentOS6-1 svndata]# tree -L 2 sadoc sadoc ├── conf │ ├── authz ##权限管理文件 │ ├── passwd ##用户管理文件 │ └── svnserve.conf ##sadoc中心管理库局部配置文件 ...
修改sadoc的局部配置文件(修改svnserve.conf需要重启服务生效)
[root@CentOS6-1 conf]# egrep -v "^#|^$" svnserve.conf [general] anon-access = none ##匿名用户访问不允许,默认是read可读 auth-access = write ##通过验证的用户可写 password-db = passwd ##指定密码文件位置,可以指定全局路径(/data1/svnpasswd/authz),可以多个中心库共用一个密码文件 authz-db = authz ##指定权限配置文件位置,可以指定全局路径(/data1/svnpasswd/authz),可以多个中心库共用一个权限文件 [sasl]
为sadoc中心管理库新建a1和a2用户(这一步一定注意配置文件的格式空格及位置之类,修改即可生效无需重启服务)
[root@CentOS6-1 svnpasswd]# tail -n 5 passwd ##passwd只是管理用户,并不负责权限管理 [users] # harry = harryssecret # sally = sallyssecret a1 = 123 ##密码此处弱口令,企业一定强口令 a2 = 123 [root@CentOS6-1 svnpasswd]# egrep -v "^#|^$" authz ##配置权限 [aliases] [groups] ops = a1,a2 ##多个用户可以定义一个ops组,用户间","隔开,调用时@ops即可,一定卸载groups模块下位置不可乱 [sadoc:/] ##sadoc主干的权限 @ops = rw ##ops组在主干上具备可读写权限,并且无特殊修改默认向下级目录继承权限 [sadoc:/docker] ##sadoc主干下的二级目录docker进行权限配置 a1 = r ##此处docker二级目录a1用户权限为r,a2用户对此目录rw(a2虽然没写,但是会由主干向下继承) [sadoc:/python] a2 = r
防火墙权限配置
iptables -A INPUT -p tcp -s 172.18.0.0/24 --dport 3690 -j ACCEPT iptables -A OUTPUT -p tcp -s 172.18.0.0/24 --sport 3690 -j ACCEPT
SVN管理脚本
将脚本加入到/etc/init.d/下即可
[root@CentOS6-1 ~]# cp svnd /etc/init.d/
[root@CentOS6-1 ~]# chkconfig --add svnd
[root@CentOS6-1 ~]# chkconfig svnd on
[root@CentOS6-1 ~]# cat svnd
#!/bin/bash
#
#chkconfig:345 85 15
#description: Start and stops the SVN Server.
export LANG="en_US.UTF-8"
PID=`netstat -tunlp|grep 'svnserve'|awk -F '[ /:]+' '{print $9}'`
PORT=`netstat -tunlp|grep 'svnserve'|awk -F '[ /:]+' '{print $5}'`
RUN_STATUS=`netstat -tunlp|grep 'svnserve'|wc -l`
PID_FILE="/var/run/svnd.pid"
SVNDIR="/data1/svndata"
. /etc/init.d/functions
function start(){
if [ -f ${PID_FILE} ]
then
echo "服务正在运行..."
else
/usr/bin/svnserve -d -r ${SVNDIR}
/bin/echo $PID > ${PID_FILE}
if [ $? -eq 0 ]
then
action "启动中..." /bin/true
else
action "启动中..." /bin/false
fi
fi
}
function stop(){
if [ ${RUN_STATUS} -eq 0 ]
then
echo "服务未在运行..."
else
pkill svnserve
if [ $? -eq 0 ]
then
rm -rf ${PID_FILE}
action "停止中..." /bin/true
else
action "停止中..." /bin/false
fi
fi
}
function restart(){
stop
start
}
function status(){
if [ -f ${PID_FILE} ];then
echo "服务正在运行,端口号:$PORT,进程号:$PID"
else
echo "服务未在运行.."
fi
}
function main(){
if [ $1 = "start" ];then
start
elif [ $1 = "stop" ];then
stop
elif [ $1 = "restart" ];then
restart
elif [ $1 = "status" ];then
status
fi
}
main $*==================================================================
============================= 客户端 ===============================
命令行使用
参考: https://blog.csdn.net/xujingzhong0077/article/details/49908603
https://www.cnblogs.com/liwanggui/archive/2016/06/28/5624147.html
检出: svn co svn://172.18.0.133/sadoc /tmp/sadoc/ --username a1 --password 123 --no-auth-cache 添加文件: cd /tmp/sadoc svn add salt_install.sh svn ci -m "2018年新上传的salt自动化脚本" /tmp/sadoc/salt_install.sh --username a1 --password 123 --no-auth-cache 删除文件: svn delete svn://172.18.0.133/sadoc/README --username a1 --password 123 --no-auth-cache 查看分之下的文件: svn ls svn://172.18.0.133/sadoc/
















