在linux下把war包部署到tomcat过程记录:
第一种:手动部署
1.官网下载tomcat安装包.gz结尾的
https://archive.apache.org/dist/tomcat/
2.上传到/usr/local/ ,并解压到tomcat目录下
3.进入tomcat/bin目录,运行./startup.sh
4.浏览器访问120.78.xxx.xxx:8080,出现tomcat主页说明成功了
5.Eclipse里面,选择项目右键Export导出到War文件,可以生成war包
或者右键项目--Maven--Maven Install 也会生成war包,目录在console中有
6.把war包拷贝到服务器的 /usr/local/tomcat/webapps 目录下
7.启动tomcat,访问120.78.xxx.xxx:8080/项目名 ,即可
/usr/local/tomcat/startup.sh
8.如果不行,需要关闭centos防火墙 ,开启阿里云服务器的端口8080,再试试
防火墙firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
第二种:使用tomcat提供的Maven Plugin插件来自动部署
访问tomcat官网可以查看:https://tomcat.apache.org/maven-plugin.html
首先保证web项目是maven项目,才能使用maven插件来部署
一共四步:
1.修改服务器上的usr/local/tomcat/conf/tomcat-usr.xml配置文件
在tomcat-usr节点下加入如下内容:
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<user username="kevin" password="123456" roles="manager,
manager-gui,manager-script,manager-jmx,manager-status"/>
如图:
2.配置maven的settings.xml的server节点
在settings.xml下加入如下内容:
<server>
<id>kensever</id>
<username>kevin</username>
<password>123456</password>
</server>
这里的username 和password要和第一步中修改的username,password一致,因为部署的时候需要用这个用户名密码来访问服务器上的tomcat。id可以自定义。
3.修改web项目的pom.xml文件,在build/plugins节点下加入如下内容
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<url>http://xxx.xx.xxx.xx:8080/manager/text</url>
<server>kensever</server> <!-- 与settings.xml文件中Server的id相同 -->
<path>/handlerdemo</path> <!-- 应用的部署位置 -->
<update>true</update>
</configuration>
</plugin>
path就是应用部署在webapps的哪个目录下,在这里就是webapps/handlerdemo,同时handlerdemo也是项目名
server就是要去maven的settings.xml下读取server节点,所以名字和server节点的id是一致的都是kenserver
4.修改tomcat/webapps/manager/META-INF/context.xml
按理来讲,这三步配置完,应该可以通过maven插件来自动部署到服务器了。
可是还是不能访问服务器的tomcat, 因为tomcat的manager页面是默认只能本机访问,所以还需要修改下usr/local/tomcat/webapps/manager/META-INF/context.xml 配置文件
将Context节点下的Value节点注释即可 , 如下图:
或者加入你的本地机器的ip:101.71.45.321,如下图:
OK,然后重启一下tomcat
Eclipse上运行Run as-->Maven build--->输入 tomcat7:deploy 就能自动的把本项目部署到tomcat上,而且不需要重启tomcat
同时tomcat的webapps目录下也已经多出了两个文件: handlerdemo文件夹 和handlerdemo.war 包
第三种:使用tomcat的manager页面来部署
在上面第二种方法中,只需要做第一步和第四步,既修改服务器的tomcat配置文件,使外网能够访问到tomcat的管理页面,然后通过管理页面也可以部署war包。
访问:http://serverip:8080/manager/html
通过这个页面下的
出现的问题:
1.阿里云服务器ECS 启动tomcat ./startup.sh后无法立刻访问,浏览器会一直在转圈圈,要等好几分钟之后才能访问?这是什么原因?
原因不详,但是解决方案如下:
打开$JAVA_PATH/jre/lib/security/java.security这个文件
找到下面的内容:securerandom.source=file:/dev/random
替换成securerandom.source=file:/dev/./urandom
2.修改tomcat/conf/server.xml 把其中的8080改成22 好像不生效,不管8080还是22都无法访问了?
3.Eclipse使用mvn命令tomcat7: deplloy报错:
Could not find goal '' in plugin org.apache.tomcat.maven:tomcat7-maven-plugin:2.2 among available goals exec-war-only, deploy-only, redeploy-only, help, shutdown, run-war-only, standalone-war-only, run, deploy, standalone-war, undeploy, run-war, redeploy, exec-war -> [Help 1]
原因是:tomcat7: 和 deploy之间多了一个空格,是不允许有空格的。删掉空格即可
tomcat 多个实例配置端口:
我们可以在一个tomcat下放置多个war包,启动多个web应用程序
也可以复制多个tomcat实例,每个tomcat中放置对应的web应用程序,便于管理。那么需要为每一个tomcat配置端口,否则会引起冲突
找到tomcat/conf/server.xml ,要修改三个地方的端口。
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8082" protocol="HTTP/1.1"
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
这里的三个port 都需要修改成和默认值不同。
tomcat查看日志:
进入/usr/local/tomcat/logs目录:
tail -f catalina.out
tomcat常见问题:
1.在eclipse下运行tomcat,明明eclipse已经关闭,但是却依然能访问web服务
原因是该服务进程还没有关闭
打开cmd查看该服务端口8080:netstat -ano|findstr 8080
发现还有进程存在,直接杀死进程即可 taskkill /pid {pid}