LNMP创建svn版本控制
1、安装subversion服务端
yum install subversion
2、查看是否安装成功
rpm -ql subversion (可以查看到安装位置则安装成功)
3、创建svn版本库目录(下面以创建的svnrepos目录为案例)
mkdir -p /var/svn/svnrepos (目录自己指定 )
4、创建版本库
svnadmin create /var/svn/svnrepos
执行完之后生成conf、db、format、hooks、locks、readme.txt 这几个文件
5、进入conf目录
authz 文件是权限控制文件
passwd 帐号密码文件
svnserve.conf svn服务配置文件
6、设置帐号密码
vim passwd
在[users]块中添加用户和密码,格式:帐号=密码,如 myname=123
7、设置权限
vim authz
在末尾添加如下代码:
[/] #说明:用户权限从coinhello版本库目录起有效(最好 [] 内也不要有空格,有时候会报错Authentication failed)
myname=rw #说明:配置用户的读写权限 如果前面有空格存在,将会在svn checkout操作的时候报错:Invalid authz configuration
意思是版本库的根目录刚才的用户名myname对其有读写权限。
8、修改svnserve.conf文件
vim svnserve.conf
打开这几个注释:
anon-access = read (none可以看到提交信息)
auth-access = write (必须顶格写,前面不能有空格)
password-db = passwd
authz-db=authz
realm=/var/svn/svnrepos 这个修改成刚才创建的版本库
9、启动svn版本库
svnserve -d -r /var/svn/svnrepos
(多版本为启动/var/svn,即外层)
(尤其要注意不然会出现checkout时,提示:URL svn://192.**.**.**/svntest doesn't exist这一类错误)
10、利用svn的post-commit将svn服务器的文件同步到固定的目录
cd /var/svn/svnrepos/hooks
cp post-commit.tmpl post-commit
chmod a+x post-commit
编辑post-commit钩子脚本
vim post-commit 修改里面的如下内容
export LANG=zh_CN.UTF-8
SVN=/usr/bin/svn 这个是安装好的时候查看成功与否看到的那个目录(等号两边不能有空格)
WEB=/home/myweb 这个就是你每次完成提交svn自动提交到的那个目录(等号两边不能有空格)
${SVN} update ${WEB} --username myname( 你刚才设置的用户名 ) --password 123( 你刚才设置的密码)
第一次检出生成 .svn 文件夹很重要,下面有两个方法检出
windows检出:右键菜单里有“svn checkout”功能,单击然后输入地址: svn://120.77.xxx.xxx/svnrepos ,接着输入用户和密码,这样就完成了创建项目版本库和导出项目
linux检出:
方法一:就是你需要切换到/home/myweb (你指定svn自动提交的那个目录)下面手动进行一次checkout:(命令行为后面那个) svn co svn://localhost(会在刚才的/home/web生成一个localhost文件夹) (多版本库为svn co svn://localhost/svnrepos(版本库名称))
用ftp工具到/home/myweb/localhost (如果是多版本库,则为版本库名称)下面把里面的.svn放到你的/home/myweb里面这样以后只要从客户端提交代码就会自动同步到你的指定的目录了。
方法二:用svn checkout svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 检出 (下面有举例说明)
svn checkout svn://120.77.xxx.xxx/svnrepos /home/myweb/项目文件夹名(格式:svn checkout 项目版本库路径 导出项目的存放路径)
11、需要注意的地方
1.需要在安全组那里配置3690端口
2.//打开防火墙
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
service iptables save
3.所有配置文件里面的修改前面都不允许存在空格 比如 vim authz 空格[/]
4.在最后需要重启svnserve服务端
关闭svn killall svnserve
重启svn svnserve -d -r /var/svn/ (说明:-d 表示以守护进程打开,-r 指的是SVN版本库路径)
查看svn ps -ef|grep svnserve