关于部署传统的Dynamic Web项目
现在大部分都是采用maven构建的项目,但是偶尔也会遇到一些较老的项目,采用的是传统的动态Web项目。
我最近碰到这样一个项目,项目用的jar包都放在了WEB-INF/lib目录下。之前的人采用的部署方式是这样,首先在服务器上面安装好tomcat,然后将项目编译后的文件夹放到服务器某目录,假设在/home/project中,然后通过tomcat配置<Context path="/" docBase="/home/project" debug="0" reloadable="true"></Context>将编译后的文件夹映射到tomcat中,启动tomcat,项目也随之启动。
如果有代码更新,那么先在eclipse中将项目进行编译,然后本地编译好的文件和服务器上的文件进行比对,比对软件是Beyond Compare,如果有不同就将本地的文件覆盖服务器的文件。
这种部署和更新方式确实很麻烦,这种方式一旦遇到团队较大或者更新内容较多,无疑是十分麻烦的。
后面思考如何自动化部署,首先想到的是jenkins,但是jenkins一般用于maven项目的构建,因而否决了。然后想到不管采用什么方法,肯定是先要通过git将项目从仓库拉取到服务器,然后再服务器上编译好,然后再重启tomcat就可以了。沿着这个思路想到了其实可以采用javac命令编译项目,然后发现了ant,ant可以构建传统的项目,现在已经被maven取代了。不过老的项目还是只能用ant构建,解铃还须系铃人。在服务器上面安装好git后,拉取了最近的代码。然后安装了ant,编译好项目。重启tomcat即可。
至此采用自动化的方式,不是人工手动比对文件是否修改。但是过程依然很多,然后采用shell脚本,将 git拉取代码 ant编译项目 tomcat重启等步骤全部写在一个shell脚本。每次有代码提交后,只需要运行这个脚本即可。
后面发现jenkins其实是支持ant的,绕了一圈 :(
后面决定重新采用jenkins,首先配置好jenkins,将ant的build.xml文件放在源码的根目录,然后jenkins调用内置的ant执行build.xml的脚本。原本都很顺利,但是又出现了一个新的问题,ant的build.xml文件中有个步骤是将编译好的文件复制到特定文件夹,但是这一步遇到了一个错误提示”未知原因“,当时我就在思考可能是权限问题。linux系统对权限控制较好,root用户和普通用户的权限区分的很明显。虽然有思考是这个原因,但是无法验证,也没有思考到如何去查询。后来我将需要复制的文件通过root用户身份复制一遍,但是jenkins在构建后执行shell脚本时又出现了问题,明确显示”权限不足“。这样验证了我的想法,然后根据提示信息,查询到了原因。大意是jenkins在执行shell脚本时,会在系统中以一个名为jenkins的用户去执行脚本,而有些文件需要较高的权限,因而会遇到之前的问题。需要在jenkins配置文件中修改一些配置。然后解决了问题。
经过这一系列的过程,虽然大致能跑通,但是肯定有优化的地方,也或者没有。但是中间遇到很多问题,网上查询这些问题花费了较多时间,而且网上的文章参差不齐,找到完全契合你的需求的更加少。其实一般某个软件或者框架,官网的文档应该是最优最好。网上查了那么多的资料,感觉学会如果想快速搞懂一个软件或框架,需要先理清其中的一些概念,然后建立一个大概的模型,然后再学习细节,完善内容。毕竟要学的东西太多,而且这家公司学习的东西,在别家的公司不一定能复用。因此学会如何快速掌握一门新的技能或知识也是急需解决的问题,当然没有银弹,需要根据不同的情况制定不同的思考方式。
关于部署传统的Dynamic Web项目的更多相关文章
- 在linux上部署自己开发的web项目
在linux上部署自己开发的web项目 前言:相信有很多做开发的小伙伴和我之前一样,只会在windows环境下,利用开发工具开发运行web项目,但是却不知道怎么把开发好的项目部署到linux服务器上去 ...
- 部署Eclipse中的Web项目到Tomcat服务器运行
用Eclipse开发Web项目时,可以通过Tomcat服务器运行Web项目,此时Web项目被部署在[WorkSpace]\.metadata\.plugins\org.eclipse.wst.serv ...
- Eclipse中如何将项目转成Dynamic Web项目
项目接手前的同事是使用MyEclipse写的,拿SVN将项目导入eclipse时,web项目就会变成java项目,这时就需要修改配置文件将项目转成web,步骤如下: 1.修改项目配置文件. 要修改的项 ...
- ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...
- IDEA热部署基于maven的web项目
第一步:首先先创建web项目 按照向导一步一步完成项目创建,我创建的示例项目为hotdeploddemo 第二步:设置项目的web资源 下图中的路径要修改正确,指向src/ma ...
- k8s环境部署本地.net core web项目
上一篇文章,我们部署了docker+k8s环境,简单测试通过,但是,还没能将我们自己的项目部署上去,继续记录部署踩坑过程. 一.准备工作 1.当然是docker+k8s环境了,详情请看上一篇文档 ht ...
- 一个tomcat部署俩个java web项目
2.发布的时候可以发布成war包,用项目名称右键export,选择项目名称,还有发布的路径,即tomcat下的路径,参考http://zhidao.baidu.com/link?url=imOu0Uu ...
- 部署和编写简单web项目
初学的时候,使用默认的Web应用和默认的Servlet URL.对于正式的应用,则应使用定制的Web应用和URL(在部署描述文件web,xml中指定) 仿照默认Web应用的目录结构,创建目录 HTML ...
- linux 上部署tomcat的java web项目,会出现post提交request.request.getParameter()的得不到值的情况
有时候明明在windows上非常的正常,而在linux上就不正常了,在windows上post提交request.request.getParameter()有值,而在liunx上没有值. 我开始以为 ...
随机推荐
- Ext.require 的作用(转)
Ext.require:用到哪些组件,然后就预先加载,多余不用加载的组件 在实际环境中我们都会用 ext-all.js, 但是在开发调试的时候,我们使用 require 的话它可以动态加载单个的 js ...
- Django常用的模板标签
django 目前了解的各个文件的作用: manage.py: 运行服务 urls: 路由 views: 处理数据 传递给 html模板 html文件: 通过 {{变量名}}接收变量 通过 模板标 ...
- cetnos 7 增加新的硬盘
fdisk -l 查看新的硬盘是否挂载 如没有挂载 ls /sys/class/scsi_host/ 查看设备列表 echo "- - - " > /sys/class/sc ...
- C# 关于委托
例如: public class test:Form { //定义委托 public delegate void GetSql(string sql); //定义装载委托的属性 public GetS ...
- 宋体freetype16和12号字无法正常显示
在使用freetype过程中发现,从window下拷贝来的simsun.ttc, simkai.ttf两个字体, 在调用 FT_Set_Pixel_Sizes(face, 12, 0): 将字体大小设 ...
- Python: 高阶函数与lambda表达式
缘由: python语法简单一看就会,但用在实处,想因为少于实战,总感觉有些捉襟. 翻阅跟踪youtube_dl源码,看到filter()函数用法,及其中lambda表达式,感觉好有意思,就补下课,记 ...
- Springboot学习02-webjars和静态资源映射规则
Springboot学习01-webjars和静态资源映射规则 前言 1-以前我们在IDEA中创建一个项目,添加web依赖包,我们现在是一个web应用,应该在man目录下面有一个webapp文件夹,将 ...
- 项目总结06:Java Excel文件导入功能HSSFWorkbook(xls)和 XSSFWorkbook (xlsx)
项目中碰到Excel文件打入数据功能Mark一下 package com.blue.pem.client.util; import java.io.File; import java.io.FileI ...
- day 19 类的名称空间,组合,派生
对象的属性: 不仅在__init__里面添加,还可以在其他方法或者类外面添加 class Game: def __init__(self,name,age): self.name = name sel ...
- Django xadmin后台添加富文本编辑器UEditor的用法
效果图: 步骤: 1.利用命令:pip install DjangoUeditor,安装DjangoUeditor,但由于DjangoUeditor没有python3版本的,从的Github上把修改好 ...