项目打包完成后,往往需要在远程tomcat中部署自己的应用,在这里把主要的步骤记录下来。
这里介绍的主要是集群形式,当然单机版也是一样的,只不过单机版只需要一个tomcat服务。
1.配置 3 个 tomcat 的 tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,admin-script,admin-gui"/>
其中的username和password根据需要自行设置,这里以admin为例
2.删除3个tomcat的webapps下的ROOT目录
3.重新启动tomcat服务器,注意最好先运行./shutdown.sh然后再运行./startup.sh
4.配置 maven 的 settings.xml文件,添加一个新的server即可
<server>
<id>ego-manager</id>
<username>admin</username>
<password>admin</password>
</server>
5.配置pom文件,添加插件的相关属性
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!--maven中关联的server-->
<server>ego-manager</server>
<!--<path>/</path>-->
<!--<port>8080</port>-->
<path>/ROOT</path>
<url>http://192.168.181.138:6060/manager/text</url>
<!--<热部署-->
<update>true</update>
</configuration>
</plugin>
</plugins>
其中6060其中之一的tomcat服务,我们还需要上传到7070和8080端口,所以一会儿需要上传三次
这里有个坑,如果使用的 toncat9 版本,可能会有报错:
Cannot invoke Tomcat manager: Protocol wrong type for socket
默认tomcat只允许本地部署,如果是要部署到远程服务器上,那么需要在远程服务器的{TOMCAT_HOME}conf/Catalina/localhost/
目录下创建一个manager.xml
文件,配置如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
这里允许所有的地址远程部署,也可以指定ip范围部署,
allow="127.0.0.1,192.168.1.*"
6.开始打包,点击deploy即可
7.修改nginx的配置文件,实现反向代理和负载均衡
注意nginx不在同一台服务器上,我们修改的配置文件如下
upstream www.taozi.com{
server 192.168.181.138:6060 weight=2;
server 192.168.181.138:7070;
server 192.168.181.138:8080;
}
server {
listen 80;
#1.请求域名
server_name www.taozi.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index0.html index.htm;
#2.找到实际路径,做转发
proxy_pass http://www.taozi.com;
}
#对静态资源放行
location ~ .*\.(ico|png|jpg|js|css)$ {
# 指定静态资源的位置
proxy_pass http://www.taozi.com;
}
}
然后重新启动nginx服务器即可,这样www.taozi.com就是以集群的形式对外提供服务
如果nginx宕机了,整个应用就没法访问,可以使用nginx+keepalive实现nginx集群