【腾讯云的1001种玩法】在QCloud的 CentOS 下搭建一个适用于个人的 SVN 环境

安装 SVN

检查是否安装

rpm -qa subversion

卸载旧版本

yum remove subversion

安装最新版本

yum install subversion

检查是否安装成功

svnserve --version

创建项目仓库

创建目录

mkdir -p /var/svn/svnrepos

创建项目仓库

svnadmin create /var/svn/svnrepos

检查是否创建成功

cd /var/svn/svnrepos

之后使用 ll 查看是否多了一些文件夹(如果成功)

配置项目库

进入 conf 目录,了解配置文件:

authz 是权限控制文件

passwd 是账号密码文件

svnserve.conf 是 SVN 服务配置文件

配置 passwd

根据 users 标签中的提示进行配置即可,等号左边是用户名,右边是密码

配置 authz

只有自己用,所以只是限定自己的用户有 rw 权限即可,在文末加入用户名和读写权限就可以了

#example
[/]
abc(your username) = rw

配置 svnserve.conf

anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz # 访问控制文件
realm = imagine's svn server # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

开放 SVN 端口

修改 iptables

iptables -I INPUT -p tcp --dport 3690 -j ACCEPT

保存 iptables 配置

/etc/rc.d/init.d/iptables save

重启 iptables

service iptables restart

查看 iptables 状态

/etc/init.d/iptables status

启动 SVN 服务

svnserve -d -r /var/svn/svnrepos

-d: 守护进程 -r:svn 根目录

连接 SVN

使用 TortioseSVN 连接到 svn://我的 ip 地址/

输入前面设置的用户名密码即可访问

配置开机启动

编写脚本 svn_startup.sh,放在/root/svn_startup.sh,代码如下

#!/bin/bash
export LC_CTYPE="zh_CN.UTF-8"
/usr/bin/svnserve -d -r /var/svn/svnrepos

(关于绝对路径:在启动的时候环境变量可能没有加载,所以采用绝对路径比较保险,可以使用 which svnserve 命令来查询绝对路径)

修改脚本权限

chmod ug+x svn_startup.sh

或者

chmod 777 svn_startup.sh

添加自启动

vim /etc/rc.d/rc.local

在文件末尾添加命令行脚本

/root/svn_startup.sh

重启之后确认启动成功

ps -ef|grep svnserve

checkout 网站工作目录

svn co svn://localhost /var/www/html/ --username user --password passwd

使得 SVN 可以自动同步网站代码

将工作目录转移到钩子文件夹

cd /var/svn/svnrepos/hooks

添加配置文件

cp post-commit.tmpl post-commit
chmod 777 post-commit

修改 post-commit 文件,加入以下代码

export LANG=zh.CN.UTF-8
cd /var/www/html/
/usr/bin/svn update --username usrname --password passwd --no-auth-cache
echo `date`,`whoami`,$REPOS,$REV >>/var/svn/svnrepos/hooks/svn_hook.log

SVN 同步时注意

工作目录需要先 checkout(前面已经 checkout 过了)

先切换到工作目录 再用 SVN 的 co 或者 checkout 命令进行 checkout

如果工作目录有更改,需要 commit

先切换到工作目录 再用 SVN 的 commit 或者 ci 命令进行同步

可能需要—message 或者-m 参数,后面跟上这次修改的一些信息即可

如果工作目录中有新的文件,需要先添加到 SVN 中在同步

使用 SVN 的 add 命令进行添加文件或者文件夹 如果需要添加的文件很多,可以使用 Linux 的 通配符: svn add /

批量添加/删除 SVN 同步的文件

使用 bash 命令 添加

svn status|grep ? |awk '{print $2}'|xargs svn add

删除

svn status|grep ! |awk '{print $2}'|xargs svn del

可以添加到 PATH 中,如/usr/local/bin,命令叫做 svnaddall 和 svndelall

如果 SVN 同步目录中出现中文,钩子无法正常运行需要修改系统的 locale

export LC_CTYPE="zh_CN.UTF-8"

之后可以用 locale 命令检查 (添加 locale 的命令已经包含在自启动文件中了)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

边子政的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自动化测试实战

《selenium2 python 自动化测试实战》(11)——selenium安装版本

36010
来自专栏王二麻子IT技术交流园地

Linux服务器上安装vsftpd

1、首先判断你服务器上是否安装了vsftpd rpm -q vsftpd 2、安装vsftpd yum -y install vsftpd 3、重启vsftpd...

3949
来自专栏IT综合技术分享

一、ovs安装与第一个bridge创建

[ ok ] Restarting networking (via systemctl): networking.service.

2425
来自专栏ytkah

dedecms数据库内容替换安全确认码不显示怎么解决

  ytkah今天在网站迁移服务器时发现,dedecms数据库内容替换安全确认码无法显示,这个安全码的位置是在核心 - 批量维护 - 数据库内容替换,有个安全码...

3025
来自专栏静下来

linux常用管理命令(一)

Linux都是用命令来操作,但是命令又特别多。不过也还比较好记了。 自己也简单记录下一些常用命令吧。 1:cd cd这命令一般用来进什么文件夹之类 2:文件路径...

34514
来自专栏HadesMo

调用对象存储Put Object接口创建空目录

注意:生成签名时的【HttpURI】参数必须在末尾加【/】,否则是无法创建目录的。

1475
来自专栏编程

如何优雅的用Python做接口自动化测试

直接上硬货,请接收~ 框架结构如下: Test_Api_Project | |---base.py |---base_api ||---register_api...

3096
来自专栏IMWeb前端团队

web前端安全机制问题全解析

web前端安全方面技术含有的东西较多,这里就来理一理web安全方面所涉及的一些问题。 一、xss与sql攻击 入门级的安全知识,攻击手段和防范方法这里略过,不...

2160
来自专栏北京马哥教育

linux杂谈 :ftp的企业应用级配置

这次我们来讲解黑名单,白名单以及内网和外网的ftp的访问的不同设置。 1.黑名单 有的时候我们不想让某些本地用户登录,这个时候就要设置黑名单了,它在/etc/v...

2935
来自专栏数据库

Redis安全加固

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上, 如果在没有开启认证的情况下,可以导致任意用户在可以访问目...

3056

扫码关注云+社区