在linux服务器上装svn版本管理,自动部署代码到项目

在linux服务器上装svn版本管理,自动部署代码到项目

http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw3X&pos=1

http://v5sheji.com/archives/setupsvnonlinux.html

1.安装svn服务器端 

yum install subversion   

从镜像下载安装svn服务器端

中间会提示是否ok,输入y,确认 
安装成功提示:.....complete! 
依次执行如下命令:

cd /usr/local/              //进入目录,准备创建svn目录 

mkdir svnRepo                   //创建一个svn目录 

chmod -R 777 svnRepo            //修改目录权限为777 

svnadmin create /usr/local/svnRepo/first  //创建一个svn版本仓库first(first可以随便起名字) 

cd first/conf               //进入first版本仓库下的配置文件目录 

2.下面要修改这个目录下的三个配置文件 

(1) svnserve.conf    //配置版本库信息和用户文件和用户密码文件的路径、版本库路径

anon-access = none       //默认是只读read
auth-access = write      //认证后有写入权限
password-db = passwd     //帐号密码配置文件
authz-db = authz         //权限配置文件
realm = first            //改成自己的版本库 生效范围
             

(2) authz     //文件,创建svn组和组用户的权限

[group]
first = ddl,shl       //创建一个first的组,并制定两个用户ddl和shl 

[/]                   //制定根目录下的权限
@first = rw           //first组用户权限为读写
* = r                 //其他用户只有读权限 

(3) passwd   //创建或修改用户密码

[users] 

ddl = 123456    //用户名 = 密码
shl = 123456    //。。。 

3.然后要设置自启动 

打开自启动文件  /etc/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff. 

touch /var/lock/subsys/local 

添加下面一行

svnserve -d -r /usr/local/svnRepo/first 

svn命令:

lsof -i :3690   查看svn是否启动 

ps aux |grep ‘svn‘  查找所有svn启动的进程 

kill -9 2505    杀死2505这个查找到的svn进程 

svnserve -d -r /usr/local/svnRepo/first 启动svn(可以把这个放到/etc/local/rc.local文件中,实现开机自启动)

netstat -anp|grep svnserve查看一下SVN信息

SVN版本库起动方式,现在svnRepo下面有 first、test 两个版本库

1:单版本库起动    svnserve -d -r /usr/local/svnRepo/first 
2:多版本库起动    svnserve -d -r /usr/local/svnRepo 
区别在于起动svn时候的命令中的启动参数-r指定的目录。 
 
4.限制不同的用户对不同的版本库操作权限

修改版本库中的conf目录下的 authz文件 
以配置 first 版本库为例:
 
authz 

[groups] 

company = user1,user2 

[first:/]             //指定版本库跟目录下的权限 

@company = rw     //company组用户权限为读写 

* = r           //其他用户只有读权限 

passwd 设置组中用户的账号和密码

[users] 

user1  = 123456
user2 = 123456 

5.客户端访问 

假设客户端使用tortoiseSVN 
打开资源库浏览器输入地址, svn://你的svn服务器ip:3690 
输入用户名ddl 密码12345 
因为没有网资源库里放文件所以需要你用客户端右键【create forder】,然后【add forder】

6.使用post-commit实现自动部署

搭建svn都不是仅仅为了把代码存到仓库,而是同步部署到对应的项目。

在 svn 目录的 /hooks里面有一堆tmpl,这些tmpl可以做很多事情,不过今天我们就说一下自动部署post-commit.tmpl

tmpl文件是模版文件,我们要用post-commit需要手动复制对应tmpl里面的内容到新的post-commit里面

cp post-commit.tmpl post-commit

step.1:

然后打开文件清空内容,修改为以下代码:

#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username **** --password **** /var/www/test

其中第一行意思是:用sh来解析这个脚本,因为各种shell的语法有细微的差别

第二行是编码格式:这里我使用的是UTF-8

最后一行/usr/bin/svn 是svn的路径,不是项目路径,应该都是一样的,后半句分别是用户名、密码、和项目路径--username这个比较坑了,网上搜出来的很多都搞错了,前面其实是两个减号,英文输入法下的。

step.2:

修改post-commit的可执行权限

chmod 755 post-commit

step.3:

在服务器进入项目目录/var/www/test checkout 整个项目。

注意此处不要checkout文件夹,正确代码应该是这样:

svn checkout svn://{您的服务器地址}:{端口号}/test .   //注意目录后面还有一个点

至此,如果按照此步骤搞下来,应该已经没有问题了,你可以本地commit代码,自动同步到项目了。

6.常见错误,我遇到的

  1. 255错误:post-commit没有给执行权限 或者 头部没有执行用sh执行,就是没有#!/bin/sh
  2. 提示跳过目录:服务器目录没有checkout代码,记得一定要先checkout一次,才能同步
  3. 什么提示也没有:这种情况出现在用工具commit的时候,成功了,但是就是没有同步,建议你到linux下,使用./post-commit手动执行看报什么错误。如果乱码,请将文件内编码格式修改为GBK
  4. 提示**** is a direcitory:/usr/bin/svn你把这个搞错了,他不是一个目录,是svn的路径
时间: 2024-10-13 11:40:25

在linux服务器上装svn版本管理,自动部署代码到项目的相关文章

Linux Shell脚本之远程自动部署java maven项目

脚本功能: 自动从git上获取java maven项目工程源码,在机器A上build,build完成后,将Class文件和配置文件等上传到机器B,重新启动机器B上的服务以便变更生效. 脚本特点: 1.(与之前的自动部署脚本相比)全新优化了脚本代码,更friendly,结构更紧凑 2.Public header删除了无用或者不好用的有色彩显示函数,并修正了WORKDIR不是绝对路径可能导致的bug 3.修正了域名解析判断是否正常的一个bug,该bug可能导致遇到无法解析后不断尝试解析 4.全新的m

【Webhooks】使用Git的Webhooks进行服务器自动部署代码

使用Git的Webhooks进行服务器自动部署代码 本文项目地址 https://github.com/diandianxiyu/PageBlog/blob/master/%E4%BD%BF%E7%94%A8Git%E7%9A%84Webhooks%E8%BF%9B%E8%A1%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E4%BB%A3%E7%A0%81.md 如有错误,请指正~ 前言 之前一直想做自动化运

Linux服务器上的tomcat中部署web项目

首先了解一下下面几个概念,讲得不太准确: 1.JVM JVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class和jar文件.你可以通过-classpath参数指定你需要加载的jar文件 2.JDK JDK就是JAVA的命令行开发环境,内置了JVM,特征就是javac命令,这个命令允许你将.java源文件批量或者单个编译成.class文件,从而可以通过JVM的java命令执行.在编译时你可以通过-clas

apache下 使用svn自动部署代码

碰到一个问题 svn不能ftp ftp又不能svn有没有一个办法把两个联系起来呢? 其实不需要svn自带的hooks(钩子)功能足以满足你得需求 svn配置和设置可以网上直接找到.直接说怎么配置自动同步功能.在svn的目录下 /www/svn/repos/hooks  有的文件 post-commit.tmpl 这个就是需要修改的文件也就是在svn有commit的时候我们需要做的 1.设置需要更新的目录 直接在配置好的首页对应的目录里面checkout一下 2.修改 post-commit.tm

SVN版本管理与大型代码上线

SVN版本管理与大型代码上线 一.SVN简介 SVN是近年来崛起的非常优秀的版本管理工具,是一个开源的版本控制系统,开发的代码版本, 这些数据位置放置在一个中央资料档案库,很想一个普通的文件服务器或者FTP服务器 与其他服务器不用的是,SVN会备份并记录每个文件每一次的修改更新变动, 可以进行回滚操作,可以把任意一个时间点的档案恢复到想要的某一个旧的版本, 也可以浏览指定文件的更新历史记录. SVN是一个非常通用的软件系统,它常被用来管理程序源码,但是它也可以管理任何类型的文件, 如文本,视频,

window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法

摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sudo yum install svn). 2.然后在服务上创建一个版本库并配置用户及权限,这点网上的方法多的是,自行百度. 3.在linux客户端使用svn命令进行同步,具体如下: svn co svn://(ip地址)  (保存文件的文件夹)    ##检出版本库.第一次要输入用户名和密码. 将需要

Linux服务器企业集群架构部署搭建(一)----环境配置要求与系统基础优化

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 本文作者:燁未央_Estelle版权声明:测试学习,不足之处,欢迎指正.允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明 第一章 集群架构搭建部署目标1.1 本次架构部署配置概况提示,本次集群架构所使用的服务器均为VM虚拟机进行模拟搭建测试及学习. ①两台linux服务器作为负载均衡服务器(LVS-01/LVS-02),基本模式:LVS-DR+keepalived.负责分发所

用Linux服务器实现每天定时自动备份交换机配置文件

作为一名网络运维工程师,如果管理的路由.交换设备比较多的话,那么你是否也会跟我一样遇到这样的问题:设备配置经常调整,尤其是接入层交换机,万一哪天忘了保存配置,而第二天就发生了交换机掉电重启,你却又忘记了以前的配置,导致了网络恢复配置时间很长. 当你遇到这样的问题或者烦恼时,你是否也会去想:如果有一种方法,可以让交换机每天自动保存一下配置该多好.你进一步去考虑,如果交换机能每天不但能自己保存配置,还能把配置上传到服务器上一份,那该多好啊. 你认真看以下内容,或许对你有些启发. 在智能化高度发达的今

linux服务器搭建svn服务器

简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库(repository) 中. 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动. 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. SVN 的一些概念 repository(源代码库):源代码统一存放的地方 Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份