_little-star_

学习的博客

0%

ssm+maven项目的远程部署

一、环境

本教程使用的环境如下

  • idea 2017

  • tomcat 8.5

  • centos 7

  • maven 3.5

    注意:tomcat6 和 tomcat7、8、9会有一些区别,下面会详细介绍

二、配置【只需完成下面三步】

1、Tomcat 服务器配置

如果不了解 Tomcat 的安装,参考 http://blog.csdn.net/android_ztz/article/details/79249467

找到[tomcat安装的根路径]/conf/tomcat-users.xml 文件,编辑如下:

1
2
3
4
5
6
7
8
9
10
11
12
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>

role标签都是定义权限,user标签定义的是用户,usernme和password都是自定义的,roles是赋予该用户的权限。

测试配置是否成功

在浏览器中访问 http://yourIp:port/manager/text (tomcat 7、8、9) ;
http://yourIp:port/manager/html (tomcat 6)
如果出现输入账户和密码的弹框,表示成功。

但是有可能会出现 【管理页面403 Access Denied】错误,详情见下面问题2:

【修改Tomcat端口号-默认是8080】
如果需要修改,找到[tomcat安装的根路径]/conf/server.xml ,找到这一段。

1
2
3
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

只需修改port的值即可。

二、配置Maven

打开[Maven的安装路径]/conf/setting.xml文件 ,找到这一段

1
2
3
4
5
6
7
<servers>
<server>
<id>tomcat8</id>
<username>tomcat</username>
<password>tomcat</password>
</server>
</servers>

id : tomcat+版本号
username : 在Tomcat配置的用户名
password : 在Tomcat配置的密码

三、使用idea新建一个Maven项目,打开自动生成的pom文件,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ztz</groupId>
<artifactId>deploy-project</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>deploy-project Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<finalName>deploy-project</finalName>
<plugins>
<!-- maven项目插件运行配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- maven远程项目部署插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 填写自己服务器的IP地址和端口号,并且其他的不变,Tomcat7、8、9使用这个,Tomcat6使用另一个-->
<url>http://192.168.199.133/manager/text</url>
<server>tomcat8</server>
<!-- 这个账户和密码是自定义的,和Maven,Tomcat中配置要保持一致-->
<username>tomcat</username>
<password>tomcat</password>
<port>80</port>
<!-- 若tomcat项目中已存在,且使"mvn tomcat7:deploy"命令必须要设置下面的代码 -->
<!-- 更新项目时,仅需要执行"mvn tomcat7:redeploy"命令即可 -->
<!-- 上述命令无论服务器是tomcat7、8或9,均是使用"mvn tomcat7:deploy"或"mvn tomcat7:redeploy" -->
<update>true</update>
<!-- 项目路径 -->
<path>/deploy-project</path>
</configuration>
</plugin>
</plugins>
</build>
</project>

最主要的配置就是标签中,关于详解:
finalName:项目名
server: 服务器名和版本
username: 和tomcat、maven中保持一致
password:和tomcat、maven中保持一致
port:需要部署到的端口,要和服务器配置的端口一致
path:访问项目的路径

其他就可以和上面保持一致。

现在已经完成了所有的配置,那么就开始测试一下能否部署成功,在idea 中点击右栏[Maven标签]

双击【tomcat7:deploy】完成部署,查看控制台信息
2

—————————————- 华丽 ——————————————–

遇到的问题1:

  • Tomcat已启动,内网可以访问,但是外网不可以访问。

    答 : 这很有可能是防火墙阻止了浏览器的访问。

  • 解决方式:

    centos7使用的防火墙是 firewall 而不是 iptables 可以开要访问的端口,先查看一下防火墙状态: firewall-cmd –state , 结是running 或者 not running , 建议running状态下添加开放端口。 比如需要访问的是8080端口,则可以这样

1
2
3
4
firewall-cmd --permanent --zone=public --add-port=8080/tcp     # --permanent 表示永久添加;去掉标识临时,重启后恢复 
firewall-cmd --reload # 加载配置,使得修改有效。
查看端口是否开放成功?
firewall-cmd --permanent --zone=public --list-ports #查看开启的端口

如果出现 8080/tcp 表示成功 。

需要了解firewall更多,点击这里。


  • 遇到的问题2:

    管理页面403 Access Denied

    这说明你没有权限访问,

  • 解决方式:

    打开/webapps/manager/META-INF/目录下context.xml文件,将下面这段注释掉或者修改为下面这段。

1
2
<Valve className="org.apache.catalina.valves.RemoteAddrValve"  
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />12

原因是: \d+.\d+.\d+.\d+ 标识任访问,如果不添加这个,则只允许前面两种类型IP访问,allow中是用正则表达式来表示的。


  • 遇到的问题3 :

    [ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]

该错误是在部署时出现的,是由于权限问题,可能是你的 tomcat-users.xml中user的权限不够,也可能是你的idea中pom文件的用户名和密码错了。

转载自:https://blog.csdn.net/android_ztz/article/details/79249335