趁着这波比较闲的时候来划一波水,想起自己那都快生会的腾讯云服务器 到现在还不能通过版本控制系统上传文件,于是趁这波功夫在服务器上安装个svn来管理代码。
首先就简单的介绍一波 svn :
首先svn不同于GIT它是集中式的,即只有一条主线并没有分支,Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。(来自百度)
他的常用命令有
Commit(提交): 当你已经修改了代码,你就需要Commit到线上仓库
Update (更新): 当你很久没更新代码后,使用update更新下 你的打码就会与线上同步
哦豁,差点跑题了,这里我要写的是在服务器上安装svn,好吧 ,下面我们就进入正题了 ,下面的步骤我就当我们已经配置好服务器环境了 (在这里我是基于 CentOS 6.8 64位 php + apache搭建的服务器环境)
你可以用xshell 操作linux系统 这里我是用腾讯云自带linux登录,登录linux实例操作的
1. 首先我们在全局输入 yum -y install subversion (安装svn)
2. 安装成功后我们就开始配置svn
2.1 首先建立一个线上的版本库
使用 mkdir /svn (这里我在根目录上建立一个svn目录)
2.2 使用 svnserve -d -r /svn (启动svn服务 其中svn是目录位置)
svnserve -d -r 目录 --listen-port 端口号 其中端口号可以省略(不填默认3690)
2.3 然后在建立一个版本库 svnadmin create /svn/www
2.4 配置允许用户rsync访问
使用 cd /svn/www/conf 找到conf文件
通过 vi svnserve.conf 进入配置编辑(将箭头指向的位置注释解了,且修改的文件前面不能有空格,否则启动svn server出错)
2.5 保存完上面步骤后 再使用vi authz配置用户权限以及那些用户可以使用
2.6 保存完上面步骤后 再使用vi passwd配置用户上传下载密码
2.7 使用 svn checkout svn://IP地址/svn所在的文件夹例如上面的www --username=配置的用户名
2019/08/13-----------------补充----------------------------
checkout的时候出现 svn: Can't connect to host '123.x'x'x'x.xxxx.180': Connection timed out 无法响应 可能原因有
1.检查各项配置文件是否有空格存在 ------这个问题出现的可能比较少
2.服务器防火墙拦截了3690端口这是需要配置
进入 vi /etc/sysconfig/iptables 编辑
在文件内加上一条允许3690端口通过的代码
最后使用 service iptables restart 重启防火墙
3.云服务器设置了上安全组 这事需要在阿里/腾讯云平台安全组面板出口处添加规则 让TCP:3690通过即可(最好入口处也添加相同规则)
-------------------------------补充----------------------------
2.8 现在你可以试试下载文件到桌面(这里还没用 将svn 与web项目挂起钩子 所有拉下来的文件是空的,这里我使用svn小乌龟下拉的 svn://ipdi地址/文件目录例如www)
2.9 将svn 与web项目关联起来就是钩子(首先需要进入svn 库下的 hooks文件夹)
例如我的svn库是在 --- /svn/www/hooks
hooks文件夹下有现成的配置模板我们使用如下语句 copy一份至配置文件即可
cp post-commit.tmpl post-commit
复制创建文件夹后开启 755权限(可自行找度娘)
sudo chmod -R 755 post-commit (授权语句)
之后vim post-commit进入文件如下配置
以上就是svn的配置以及挂钩过程 ,之后你可以测试下 使用 svn co svn://IP/www --username jzq --password 密码 查看到有些什么文件上传了上来