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/