‘壹’ Jenkins 自动构建部署tomcat项目
Jenkins 是一个开源的、功能强大的应用程序,可持续集成并且持续交付项目。Jenkins自动构建项目的流程原理如下图所示:
用户通过将源码push到svn或者git等仓库上,然后Jenkins会定期pull检查仓库中的源码是否有变化。如发生变化则会重新构建测试项目并打包生成相应的文件存放在指定的目录,这过程中的完成情况可设置以邮件的形式反馈给管理员,并且管理员可登陆到Jenkins上查看相应项目的构建情况。接着项目构建成功后,Jenkins会把相应的项目包推送到指定的服务器上的指定目录下, 然后执行相应的命令进行项目的部署。
接着我们就来看看如何使用Jenkins完成tomcat项目的自动构建部署。
Jenkins的安装可参考: https://www.jianshu.com/p/f2da45e2bac7
在Jenkinsweb界面中的系统管理->系统配置 添加相应的SSH Servers:
如上图所示,添加相应的SSH Server的Ip、用户密码等信息,并设置远程主目录为根目录,也可以配置SSH key 实现免密认证访问。
因为本次实验中我需要构建 https://github.com/charliewch/game-of-life 此项目,因此在构建之前需要保证Jenkins能够连接上GitHub。此实验中,我的Jenkins运行在tomcat应用上,因此其运行用户为tomcat,所以需要使用tomcat用户生成相应的ssh key 然后设置到github 的 setting中。
把上述的id_rsa.pub内容复制粘贴到github的setting中的SSH and GPG keys上:
配置完成后,能够出现下述信息,说明tomcat 用户连接到github已经成功。
在系统管理->系统设置中找到下图的设置,并配置相关的邮件服务器信息
点击新建任务,输入项目名后选择构建一个自由风格的软件项目并确定保存。
在源码管理中添加git作为源码仓库。
设置轮询SCM为每15分钟轮询一次,此处的编写规则遵循crontab 任务的周期编写规则。
在构建增加调用顶层Maven模板的步骤,添加目标为clean package,用于将相应的java项目打包成war包,存放在target目录下。
在构建后的步骤中,新增Editable Email Notification,并在高级中配置触发邮件报警的条件:
此处设置的recipient List 为上一步设置的收件人列表
继续在构建后操作添加步骤:Send build artifacts over SSH
配置完成后点击保存即可
在Gameoflife任务的工作空间中,点击立即构建按钮触发新的构建,点击Build history可查看相应的构建情况:
另外在相应的构建任务中点击查看控制台输出,能够查看构建的结果及相应信息输出,有助于排查错误。
从下图看到,报警邮件也触发成功了。
最后,此时如果用户对修改相应的git仓库的中源码,在下一次git轮询Jenkins会自动触发相应的项目构建并进行推送部署,用户可查看相应的git轮询日志来查看轮询的情况。
‘贰’ 命令行启动tomcat,怎么配置
需要进行如下配置:
1、新建文件夹,依次放入jre,tomcat与其他所需文件,其中tomcat中需要放入部署的war。
tomcat的启动配置小结
tomcat的启动脚本在tomcat的bin目录下,启动脚本start有两个,分别时startup.bat和startup.sh两个,在windows环境下使用startup.bat启动tomcat,在linux下使用startup.sh启动tomcat,
同理关闭的脚本也有两个shutdown.bat和shutdown.sh两个,分别是在windows下关闭tomcat和linux下关闭tomcat使用。
总结如下:
startup.bat windows下启动
shutdown.bat windows下关闭
startup.sh linux下启动
shutdown.sh linux下关闭
另外还有一个tomcat.exe,这个是在windows下的可执行程序,需要在服务器上安装对应的服务后可以通过tomcat.exe启动tomcat。
‘叁’ 如何在Linux下使用Tomcat部署Web应用
一般都在windows下开发的,现在部署到linux下:
1,将项目达成war包(用eclipse,项目右键--Export--选择warfile)
2,将tomcat(用winSCP当然你也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用puttomcat命令)考到ilunx对应的目录下
3,然后将项目的war包放到tomcat的webapps目录下
4,启动tomcat(命令:./startup.sh(linux下启动tomcat是.sh文件而非.bat文件))遇到问题如下:运行./startup.sh是报错-bash:./startup.sh:Permissiondenied原因:没有运行.sh的权限解决:chmod777*.sh755代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。777代表,user,group,others,都有读写和可执行权限。获得权限后再运行./startup.sh命令时报错:原因:该文件需要一个运行环境(即配置jdk环境变量)解决:JAVA_HOME=/usr/java/jdk1.6.0_25/(当然这个目录根据自己的jdk安装目录)然后在运行./startup.sh提示:UsingCATALINA_BASE:/usr/local/sarft/apache/apache-tomcat-6.0.29UsingCATALINA_HOME:/usr/local/sarft/apache/apache-tomcat-6.0.29UsingCATALINA_TMPDIR:/usr/local/sarft/apache/apache-tomcat-6.0.29/tempUsingJRE_HOME:/usr/java/jdk1.6.0_25/UsingCLASSPATH:/usr/local/sarft/apache/apache-tomcat-6.0.29/bin/bootstrap.jar如果提示以上信息表明tomcat启动成功!大功告成,运行项目,正常跑起!PS:这个应该属于很初级的,不过对于本人来说,毕竟是第一次,从发现问题,到解决问题也许到了一些。
‘肆’ SpringBoot项目部署到tomcat
一、修改maven.xml
1、添加<.packaging>war</.packaging>,打包为war包
2、不使用SpringBoot内置的Tomcat,添加
二、修改application.properties文件,添加 content-path
三、修改启动文件main方法,让该方法继承自SpringBootServletInitializer,并且重写configure方法:
修改后的启动文件为:
SpringBoot项目部署到tomcat
四、打包
1、在项目的根目录下面执行命令:
mvn clean package
打包成功后,在项目的根目录下面会多出一个target目录,该目录下面有一个war包,名为:fileupload-0.0.1-SNAPSHOT.war。
2、将fileupload-0.0.1-SNAPSHOT.war改名为yml文件中context-path的名字MyProject
注:此时访问的端口以tomcat的端口为准。
http://localhost:8080/MyProject/register.html
‘伍’ tomcat部署项目的几种方式
一、静态部署
1、直接将web项目文件件拷贝到webapps 目录中
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse等。也可以用 cmd 命令:jar -cvf mywar.war myweb
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
将appBase修改即可。
2、在server.xml中指定
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。
在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
<Context path="/hello" docBase="D:\ workspace\hello\WebRoot" debug="0" privileged="true">
</Context>
或者
<Context path="/myapp" reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>
或者
<Context path="/sms4" docBase="D:\workspace\sms4\WebRoot"/>
说明:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
3、创建一个Context文件
在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(hello.xml),该xml文件的内容为:
<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true"></Context>
tomcat自带例子如下:
<Context docBase="${catalina.home}/server/webapps/host-manager"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
这个例子是tomcat自带的,编辑的内容实际上和第二种方式是一样的,其中这xml文件名字就是访问路径,这样可以隐藏应用的真实名字。
4、注意:
删除一个Web应用同时也要删除webapps下相应的文件夹和server.xml中相应的Context,还要将Tomcat的conf\catalina\localhost目录下相应的xml文件删除,否则Tomcat仍会去配置并加载。。。
二 动态部署
登陆tomcat管理控制台:http://localhost:8080/,输入用户名和密码后便可管理应用并动态发布。
在Context Path(option):中输入/yourwebname ,这代表你的应用的访问地址。
XML Configration file URL中要指定一个xml文件,比如我们在F:\下建立一个hmcx.xml文件,内容如下: <Context reloadable="false" />其中docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在WAR or Directory URL:中键入F:\hmcx即可,然后点击Deploy按钮,上面就可以看到了web应用程序,名字就Context Path(option):中的名字。
如果部署.war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择.war文件,然后点击Deploy也可以。
‘陆’ tomcat部署问题
tomcat部署总结如下,
第一步:环境资源
1、服务器----tomcat(版本5.5) JRE----jdk(版本1.6) 2、数据库----(oracle10g)
3、应用程序war包、dmp文件、安装说明
第二步:安装并配置jdk、tomcat环境
1、 安装jdk以后,需要配置以下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变
量(假定你的jdk安装在C:\Program Files\Java): JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径) path=%JAVA_HOME%\bin
2、 安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量
(假定你的tomcat安装在D:\tomcat5.5): CATALINA_HOME:D:\ tomcat5.5 CATALINA_BASE:D:\ tomcat5.5 TOMCAT_HOME: D:\ tomcat5.5
3、 接着启动tomcat中D:\ tomcat5.5\bin中的startup.bat命令,在IE中访问http://localhost:8080,如果看到
tomcat的欢迎页面的话说明安装成功了。
第三步:数据库配置
1、 创建表空间。
OA系统一般默认在ORACLE数据库中创建四个表空间(具体每个项目所需创建的表空间及需分配的大小,根据开发人员提供的安装手册中的要求确定): codrp.dbf
codrp_attachment.dbf codrp_archive.dbf
codrp_attachement_archive.dbf
创建表空间的示例命令如下: create tablespace codrp
datafile 'E:\oracle\proct\10.2.0\oradata\orcl\codrp.dbf' size 1024M autoextend on next 32m
maxsize unlimited;
2、创建用户并分配相关的权限
OA系统中一般创建两个用户hzoa,hzoa_archive用户的权限一般分配为下图中的权限(具体每个项目所需创建的用户及需分配的相关权限,根据开发人员提供的安装手册中的要求确定)。
3、 导入数据库文件
在windows命令行模式,执行imp hzoa/1234@orcl file=d:\vss\gwjh.dmp full=y (其中,‘hzoa’是数据库用户名,‘1234’是密码,‘orcl’是数据库实例名称,‘file=d:\vss\gwjh.dmp’是导入数据库文件路径及数据文件名称,上述信息请根据本人安装的具体情况填写),按照系统提示导入数据文件。
4、 数据源
新建数据源,用新建的数据库用户连接到数据库,测试连接成功,生成数据源。
第四步:应用程序配置
1、 将在“\服务器端程序\”目录下的war包(如:hzoa.war文件)拷贝到tomcat 目录下的webapps目录
下,启动Tomcat,这时Tomcat会自动解压war包,也许会报错误信息,没有关系。关闭Tomcat,到webapps下,然后将原War包删除。
2、 替换license文件
要把license.xml(必须是该名称)放到D:\ tomcat5.5\webapps\hzoa\WEB-INF\license的目录下。
‘柒’ 如何将tomcat部署到linux
首先,登录tomcat官方网站。下载tomcat软件,一定要下载解压缩版本的。
2
使用Xftp将Tomcat压缩包上传到服务器中。
解压tomcat服务器压缩包
等待解压缩成功。
tomcat服务器运行时是需要JDK支持的,所以必须配置好JDK用到的那些环境变量
编辑/etc下的profile文件,加上如下内容:
输入vim profile
修改tomcat服务器的启动端口
修改将Tomcat服务器启动时使用的端口,例如改成9999
进入tomcat服务器的bin目录,然后执行"./startup.sh"命令启动Tomcat服务器,如下图所示:
查看tomcat服务器的Log信息,看看tomcat服务器是否已经正常启动,进入tomcat服务器下的logs目录,打开catalina.out文件进行查看,如下图所示:
访问Tomcat服务器,如下图所示
可以正常访问了,说明Tomcat服务器已经正常启动成功了。
如果tomcat启动不了,那么最有可能就是启动时使用的端口被其他应用程序占用了,那么可以通过如下的办法进行排查,例如查看9999端口被哪个应用程序占用了。
‘捌’ 用apache或tomcat部署网站(静态的网页)怎么部署,需要详细步骤,谢谢!
一、下载Tomcat
1、打开浏览器输入网址apache.org。
2、点击“Download”进入下载页面,搜索到“Tomcat”。
3、选个稳定的版本下载,这里选择7.0。
4、根据操作系统情况选择相应的版本的二进制压缩文件(好处在于免安装,拿来就能用),这里以Windows 64位机器为例,下载压缩包。
5、下载完成后解压到指定目录下,比如F盘根目录。到此Apache Tomcat的安装就已经完成了。
二、使用Tomcat发布网站
1、将生成的war包,拷贝到webapps目录下即可(Tomcat会自动进行war包的解压操作)。
2、运行“cmd”命令行。
3、进入到tomcat的bin目录下执行命令startup.bat。
4、执行上述命令会掉出Tomcat的执行窗口,看到“Server startup in XXXX ms”就代表Tomcat启动完成,可以使用浏览器访问发布的站点了。
5、使用浏览器访问已发布的网站,效果如下图所示,至此Tomcat发布网站就已完成。
三、关闭Tomcat服务
1、运行“cmd”命令行
2、进入到tomcat的bin目录下执行命令shutdown.bat
3、Tomcat窗口关闭,命令行输出如下信息,代表Tomcat成功关闭
PS:确保Tomcat使用的端口未被占用
‘玖’ Tomcat热部署
我们需要实现热部署,自然就需要通过maven操作tomcat,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限.
在tomcat的安装目录下,修改conf / tomcat-user.xml文件,在<tomcat-users> 节点下面增加如下配置:
进入tomcat欢迎页,点击Maneger App按钮,体统会提示输入用户名和密码(第一步配置的)。
初次部署可以使用 "tomcat7:deploy" 命令
如果已经部署过使用 "tomcat7:redeploy" 命令
‘拾’ 使用Tomcat和Nginx部署前端项目
第一种方式,将我们的前端项目放置在webapps目录下
进入tomcat安装路径下的conf目录,在server.xml文件中<Host>标签内配置虚拟路径
简单的解释一下参数
path 对应用户请求过来的url路径, /static 匹配所有以 /static 开头的请求
docBase 表示实际匹配到的路径,这里可以使用绝对路径,也可以使用相对路径
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化。(对于静态资源来说,个人觉得这个配置用处不大)
总结起来就是,对于ip:8080/static的资源请求,会通过虚拟路径匹配到我们实际的资源路径music_client/static。
配置好后重启,我们可以发现已经能够看到我们的前端项目了
对于ROOT目录下的资源,tomcat可以直接在根目录下进行访问。通过这种方式,我们可以让项目的路径去适配tomcat访问的路径。
但是这种方式不是特别推荐,当有多个项目在同一个tomcat服务器上的时候,会不方便管理。
Nginx是当下热门的服务器,使用起来只需要进行简单的配置即可。对于Nginx的安装大家可以自行网络解决。
我们先进入到usr/local/nginx(具体以实际nginx安装目录为准)下的conf目录,vim编辑nginx.xml。主要进行下面的配置
简单的解释一下
listen 表示nginx监听的端口号,也就是你希望暴露哪个端口给用户进行访问
server_name 表示nginx接受请求的域名,一般默认localhost就行
location 模块用于响应请求,这里的 / 表示匹配8082端口的所有请求
root 表示静态资源/项目的路径
index 表示默认的访问资源
配置完成后,进入 sbin 目录下,通过 ./nginx -t 检查配置文件的格式是否正确
如正确 ./nginx 进行启动或者 ./nginx -s reload 进行重启
启动完,我们就可以直接ip:8082直接访问我们的前端项目啦
开启nginx的反向代理也比较简单,只需要加上proxy_pass 配置即可
出现这个问题的原因是: 在history模式下,只是动态的通过js操作window.history来改变浏览器地址栏里的路径,并没有发起http请求,但是当我们直接在浏览器输入这个地址的时候,就会对服务器发起http请求,但是这个目标在服务器上又不存在,所以会返回404。
我们可以通过把所有请求都转发到首页上来解决这个问题。只需要在 Nignx 中的配置文件加入如下配置:
事实上,上面的解决方式也是Vue-Router官方推荐的解决方式( https://router.vuejs.org/zh/guide/essentials/history-mode.html#nginx )。
那上面的 try_files 为什么能帮助我们解决这个问题呢?我们可以看一下这个属性的作用
try_files :按选项所指定的顺序去检查用户请求的文件是否存在,如果本地存在的话则返回该请求;不存在的话将该请求转发到指定的其它路径。也就是说,比如我们当前的前端项目部署在 /usr/myproj 目录下,现在我们在浏览器发起 ip:port/testApi 请求,那么此时 uri 为testApi,nginx会先去 $root/testApi (即/usr/local/myproj/testApi)找是否存在该静态资源,若不存在,则继续寻找 $root/testApi/index (即/usr/local/myproj/testApi/index)文件是否存在,如果还是不存在,则会把请求转发到首页。
而我们的项目本事就是由Vue-Cli创建的 单页面应用 ,当index页面接收到请求的时候,对应的history模式路由就可以发挥作用了,根据浏览器的路由跳转到对应的页面,这也就保证了我们的路由请求都能够转发给index页面来进行处理。
这种问题一般是出现在服务器一开始安装Nginx的时候,没有安装SSL模块。在不重装Nignx的情况下,可以安装如下方式进行操作:
执行如下命令
这一步只是以防万一,可以省略
也可以直接执行 ./usr/local/nginx/sbin/nginx -t 看还会不会报错就行
nginx报错: [emerg] https protocol requires SSL support in /usr/local/nginx/conf/nginx.conf:50