通过SVN上传war文件至服务器并解压

本文主要通过SVN把文件上传至服务器实现一键部署:
首先,需要安装SVN服务器。服务器采用ubuntu,而安装SVN服务器有2种方式:

  1.独立服务器 (例如:svn://88181.com/88181);

  2.借助apache(例如:http://svn.88181.com/88181)。

  两种方式各有利弊,使用独立服务器的方式更加容易一下,在此就使用第一种方式部署。

通过7步部署SVN服务器:

1、首先需要安装Subversion软件:
sudo apt-get install subversion 

2、创建仓库
svnadmin create /home/administrator/svn
 /home/administrator/svn 为所创建仓库的路径,理论上可以是任何目录


3、修改配置文件 /home/administrator/svn/conf/svnserve.conf
[general]  
#匿名访问的权限,可以是read,write,none,默认为read  
anon-access = none 
#认证用户的权限,可以是read,write,none,默认为write  
auth-access = write 
#密码数据库的路径,去掉前面的#  
password-db = passwd 
注意:所有的行都必须顶格,否则报错。 建议:为了防止不必要的错误,建议你直接用我上面的内容覆盖掉文件原来的内容.

4、修改配置文件passwd
[users]  
admin = admin
注意:

◆一定要去掉[users]前面的#,否则svn只能以匿名用户登录,客户端不会出现登录窗口,除非你的anon不为none,否则将返回一个错误。
◆这里的密码都是没有加密的,我按照一些教程所说的用htpasswd生成的密码无法使用。
◆格式为【用户名】=【密码】,这里即为客户端采用该用户名和密码登录,及用户名为admin,密码也为admin。

5、停止Subversion服务器:
killall svnserve 


6、启动Subversion服务器 对于单个代码仓库,启动命令:

svnserve -d -r /home/administrator/svn
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接 用svn://服务器ip来访问了。

7、扩展
如果服务器有多ip的话–listen-host来指定监听 的ip地址. www.linuxidc.com我们可以在Subversion客户端中通过svn://10.19.3.103来访问Subversion服务器 对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时 需要写上每个仓库相对于svn根目录的相对路径. 比如,我们有两个代码仓库/var/vss/repo1 和/var/vss/repo2,我们用 svnserve -d -r /var/vss –listen-host 10.19.3.103来启动,那么在客户端访 问时可以用svn://10.19.3.103/repo1和svn: //10.19.3.103/repo2来分别访问两个项目。


在部署完成SVN服务器之后,接下来需要做的就是修改SVN的钩子(hooks)之一——post-commit,该钩子其实就是一个shell脚本,用于当上传完毕之后执行的。注意,此shell脚本为来保证安全,不能使用环境变量。

执行以下命令:

#cd /home/administrator/svn/hooks
#cp post-commit.tmpl post-commit #复制原来的示例文件,并且改名为post-commit
#vim post-commit

然后修改post-commit文件的内容如下:

exec >/tmp/svn-up.out 2>&1 #将调试信息输出至/tmp/svn-up.out文件中,这对于调试很重要

echo "$@" #可以看到svn调用该shell脚本时所传递进来的所有的参数

export LANG="zh_CN.UTF-8" #设置传给SVN服务器中可以含有中文

svn export --username admin --password admin svn://10.23.0.119/repo1 /home/administrator/ProgramFiles/apache-tomcat-6.0.28/webapps --force #使用svn export命令将文件仓库导出至文件夹下,也可以使用svn update命令,该命令貌似是只导出更新的一部分,这我没有尝试。

cd /home/administrator/ProgramFiles/apache-tomcat-6.0.28/webapps

#对每个war文件建立相应的文件夹并解压
for file in *.war
  do
        dirname=${file%%.*} #获取相应的war文件的文件夹名,如如果上传的testSVN.war文件,则dirname为testSVN;
        echo $dirname
        echo $file
        rm -rf $dirname
        mkdir $dirname
        cp $file $dirname
        cd $dirname
        /home/administrator/ProgramFiles/jdk1.6.0_31/bin/jar -xf $file #在该文件夹中将war文件解压出来;
        rm -rf $file
        cd ..
  done

至此,该war文件一旦通过svn客户端,使用用户名admin,密码admin将war文件上传至svn服务器时,就会相应的部署到tomcat服务器下。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值