在window下面安装了svn后,可以在服务器进行版本控制、协作项目等,重点是还可以直接用GitHub提供的库地址进行svn版本控制,打算在linux服务器安装一个svn,用来同步我的代码以及版本控制。好习惯还是必要的,之前用git控制版本,可是换系统后git安装有点慢,所以打算用SVN试试,不喜欢再换成git吧。再Windows(win7-64)安装了svn后我在Ubuntu server安装一个svn。下面是在我的Ubuntu server下安装过程:
1.安装svn,我是管理员权限(su):
apt-get install subversion
2.安装后创建一个版本目录
mkdir /svn/test svnadmin create /svn/test
3.配置svn服务器
上一步执行svnadmin后会在svn目录下面生成4个文件夹和2个文件,如下:
conf db format hooks locks README.txt
进入到conf文件夹,里面有几个配置文件:
authz passwd svnserve.conf
3.1修改svnserve.conf文件:
[general] anon-access = none auth-access =write password-db = passwd authz-db = authz
3.2修改passwd文件,设置用户和密码:
[users] usernamea = userpwd #用户在下面讲到
3.3 配置authz权限 (配置用户和配置权限)
[groups] admin = usernamea,usernameb [/] usernamea = rw #读写 usernameb = r #只读权限 @admin = rw #整个用户组权限
这样就完成配置了,然后监听一下目录
svnserve -d -r /svn/test --listen-port 123456 #监听123456这个端口,需要提前从服务器放出来
-d表示守护线程后台运行,-r表示指定目录。注意:不要写成svnserve -d -r /svn/test,否则虽能启动服务,但是只是启动一个项目,假如有多个不同的项目(比如project1,project2等)启动上一个目录可以包括下面的全部项目,多方便啊。
查一下服务是否启动了:
ps -ef |grep svnserve
root 1908 1 0 02:29 ? 00:00:00 svnserve -d -r /svn/test root 1910 1778 0 02:29 pts/0 00:00:00 grep --color=auto svnserve
可以看到两个进程,那么表示运行正常了。
往往还需要进行网站内容同步,也就是hook钩子配置
进入 /svn/test/hooks
编辑post-commit 文件(vi post-commit),填写以下内容(根据实际情况修改)
#!/bin/bash export LANG="zh_CN.UTF-8" #防止乱码 svn update /web/test --username usernamea --password userpwd #监控有更新时自动同步到/web/test 网站目录 chown www:www /web/test -R #更新后将网站目录重新分配拥有者和权限,www:www比较安全,默认是root:root
然后保存post-commit文件,赋予775可执行权限
chomd 775 post-commit
建好仓库后需要在服务端检出一下
svn checkout svn://xx.xx.xx.xxx:123456/web/test /www/web/xxx(网站目录) --username usernamea --password userpwd
4. 客户端连接(我的服务器地址172.168.128.128)
在电脑资源管理器中右键,选择SVN checkout,在弹出的窗口的Url处填写SVN服务器上版本库的访问地址,之后直接点确定。
svn地址:svn://192.168.128.128/svn 然后输入用户名lan和密码lan123确认。
如果没有连上,那么清理旧的数据信息。
清除旧数据方法:右键->tortoisesvn->setting->Saved Data,都清理掉。
连接成功后在文件夹里面有一个隐藏的.svn文件夹
5. 设置开机启动svn:
编辑rc.local文件(centos是这个文件)
sudo vi /etc/rc.local
加入下面的代码
/usr/bin/svnserve -d -r /var/svn --listen-port xxxx
上面的路径记得补全了,不能直接就是svnserve,手动启动可以这么写,但是设置开机启动要写全部路径。不知道svn安装的位置可以用whereis命令查看一下,比如:
whereis svn svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz
这样就出来了。
其实想要改变位置的时候可以直接用mv移动位置即可,很方便。
查看进程
ps aux|grep svn
杀死进程
kill xxxx (进程号)
重启
svnserve -d -r xxxx(svn 安装路径) --listen-port [端口]