关于部署传统的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上没有值. 我开始以为 ...
随机推荐
- Aptana在Eclipse的安装
1.下载 com.aptana.rcp.product-3.4.2.zip文件 https://pan.baidu.com/s/1sl81Vit 2.安装 接着Next.直到成功 3.怎么判定安装成功 ...
- Oracle 存储过程例子返回记录集
转载:https://www.cnblogs.com/mikalshao/articles/1454134.html Oracle 不支持批量查询,因此无法从一个命令返回多个结果集.使用存储过程时,返 ...
- java面试题:数据库mysql
Web后端数据库一般用mysql. 数据库基础 Q:数据库三范式是什么? 第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范 ...
- websocket搭建错误
用一下版本: gevent == 1.2.2 Eel == 0.9.7 gevent-websocket == 0.10.1 greenlet == 0.4.13 PyInstaller == 3.3 ...
- 游戏行业的女性拥有强大的新盟友:Facebook
据外媒 TheNextWeb 报道,Facebook 本周宣布其新的游戏行业女性倡议,致力于鼓励更多的女性加入游戏行业.这家社交媒体公司专注于提供榜样和成功故事,而这实际上是一种令人愉快的方式.虽然游 ...
- tcp/ip通信第5期之客户机端程序
/*此程序是tcp/ip通信的客户机端程序, 测试运行在redhat6系统上 重构readline函数,解决粘包问题——利用“\n”识别一个消息边界 */ #include<stdio.h> ...
- 微信小程序开发——获取小程序带参二维码全流程
前言: 想要获取微信小程序带参数二维码,如这种: 官方文档只说了获取小程序码和二维码的三种接口及调用(参考链接:https://developers.weixin.qq.com/miniprogram ...
- load balancer does not have available server for client: provider
Ask Question up vote6down votefavorite 4 I'm trying to use Feign client. Below is my feing client: i ...
- SpringCloud 启动时报No active profile set, falling back to default profiles default
这在Spring程序启动时没有找到默认的配置文件所引发的错误,默认文件application.yml如下图: 一般在项目中都会有多个,如有正式环境.测试环境等.如下图: 根据上面这种多个配置的只需要 ...
- [leetcode]449. Serialize and Deserialize BST序列化与反序列化BST
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...