概述:
在做web开发的时候,存在这样的应用场景:在本地修改了代码之后,需要自己ftp到服务器www目录下才能预览线上的变化。
如:我现在index.html想调整一个字体的颜色,需要在本地改完后再手动传到线上。
太low了,完全可以本地修改完 svn commit后线上立即看到效果的好么。(注:此方案一般用于测试服务器,不建议在正式环境中这么干。)
1、登入Linux主机
Windows可以使用putty软件来登录,Linux用户
ssh -p 端口号 用户名@主机
如,使用root用户登录123.123.123.123,端口号是22
ssh -p 22 root@123.123.123.123
2、安装SVN(如果已安装,跳过)
先看主机上有没有安装svn,直接输入svn,看看命令是不是可以用,如果不可以用,装一个就好了
sudo apt-get install subversion
yum install subversion
看自己主机类型咯,ubuntu第一个,centos第二个。(打命令的时候多用tab补全,防止我手打拼写错误)
3、创建svn目录
我们举个例子吧,假设我要开发的项目叫apple(我们要开发一个叫苹果的项目,好激动)
cd /home/svn
mkdir apple
svnadmin create apple
上面三条指令就是创建了一个apple文件夹,并且使用它作为仓库
4、修改svn配置文件(设定用户和用户权限)
提醒下,如果是小白的话,操作的时候不要切换目录,我这边指令用的路径都是相对路径,简单点就是,如果你是小白,在看我教程时不要乱用cd命令,不然会很好玩的。(那我为什么不用绝对路径呢,因为敲起来太累了。)
cd apple/conf/
vi svnserve.conf
会得到下述界面(其实就是打开配置文件了)
修改圈中的地方分别为
其实就是去掉前面的#号,将第一个改为none。
什么,不知道vi怎么使用?好吧,按下I,看到右下角出现--INSERT--时候就可以像记事本一样编辑了,编辑完后,按几下键盘左上角esc,输入
:wq
保存文件更改就好了
到这里,我们修改好了一个文件,也熟悉了vi使用,接着,修改其他文件吧
vi authz
我们给 rovast用户权限为rw
再来修改
vi passwd
我们给rovast设置了一个密码,叫123123
5、创建钩子
额,钩子?好吧,我们来创建个文件
vi ../hooks/post-commit
输入i进人编辑模式,输入下述内容
#!/bin/sh
export LANG=zh_CN.UTF8
svn update --username rovast --password 123123 同步目录(如:/var/www/test)
动动脑子,把用户名、密码、同步的目录修改成你自己的,然后 esc esc :wq(要敲两次esc?)
【注意:post-commit文件是个脚本文件,所以需要被赋予执行权限,可以搜索下chmod指令】
6、重启svn服务
killall svnserve
svnserve -d -r /home/svn
7、进入到你的网站目录(想要同步代码的目录)
按照我的apple项目的话,就是
cd /home/wwwroot/apple/public_html
8、检出代码
svn checkout svn://123.123.123.123/apple ./
注意上面的主机地址和命令最后面的./ ,最后面的 ./ 表示把代码直接放到当前目录,不然他会自己创建一个apple的目录,把代码放进去的
然后按照提示,yes 输入服务器密码 输入你的svn用户名(我的是rovast) 输入你的svn密码(我的是123123)
9、结束
好了,你在自己电脑上(非服务器),上检出代码,再提交,最后看看服务器这个目录是不是会有文件变化。
注:如果出现失败情况,检查post-commit的文件是不是具有x权限,即可执行权限,是在不行,到那个目录把文件权限改成777就好了。