关于部署传统的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上没有值. 我开始以为 ...
随机推荐
- logic:equal 标签的使用(转)
<logic:equal name="music" property="distrubute" value="true"> ...
- oracle数据库连接不上
Oracle数据库1521端口telnet不通 现象:服务器的ip地址可以ping通,但是安装oracle过程中的指定的“1521”端口telnet不通过 解决办法:1.确保防火墙对1521端口开启: ...
- 恶性肿瘤预测Python程序(逻辑回归)
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge,LogisticRegression from sklearn ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第1关:将字符串反转
挑战任务 将输入的字符串str进行反转. 编程要求 补全右侧vector<char> inversion(string str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数st ...
- Disruptor底层实现讲解与RingBuffer数据结构讲解
Disruptor术语 RingBuffer:被看作Disruptor最主要的组件,然而从2.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用 ...
- chrome谷歌浏览器常用快捷键搜集整理
搜集了下面比较实用的快捷键,部分不好操作的组合键就不写了:Ctrl+N:打开新窗口. Ctrl+T:打开新标签页.Ctrl+W:关闭当前标签Alt+F4:关闭chrome浏览器Ctrl+Tab:切换到 ...
- bbs项目中对反向查询和分组查询的具体的应用
我的数据库是按照下面的图片的方式设计的 然后看下model中代码 class User(models.Model): uid = models.AutoField(primary_key=True) ...
- 用django实现一个资产管理的系统
整个页面的效果如下图所示 1.登陆注册页面 2.注册的页面 3.登陆页面 4.所有设备 5.正常设备页面 6.退库设备页面 7.丢失设备页面 8.导出设备的页面,仅仅在所有设备页面才支持导出按钮 9. ...
- HW3 纠结的心得
改好的controller //yuec2 Yue Cheng package hw3; import java.io.File; import java.text.DecimalFormat; im ...
- Mac下JDK、Maven、Tomcat、Git开发安装及环境变量配置
本文主要内容: - 1.Mac OS 10.11.6 [OS X EL Captain] - 2.Mac OS 安装Java 设置环境变量 - 3.Mac OS 安装Maven设置环境变量 - 4.M ...