Advertisement

项目部署在多个服务器上,多个SpringBoot项目部署在Tomcat服务器上

阅读量:

引言

有一段时间没有更新简书了,今天遇到些后端运维的问题,记录一下。

需求如下:

为了在现有Linux服务器上实现自己项目的部署而不影响其他服务。

有两种解决方案:

① 一个容器 多个端口发布多个项目

② 多个容器 分别发布

linux下同一个tomcat用不同端口发布多个项目

一、修改tomcat的conf目录下的server.xml

配置service 节点,有几个项目就相应的配置几个service 节点;

请对以下四个内容进行调整:更换Service名称、指定连接器端口、更新引擎名称以及配置应用Base地址。

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

connectionTimeout="20000"

redirectPort="9543" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

构建配置文件时必须完全复制server.xml中的Service节点。从本文中进行复制操作可能会遇到Tomact启动失败的问题。

按照所述配置文件进行设置后,在 tomcat 根目录中复制并重命名名为 webapps 的文件夹为 webapps1 和 webapps2,并将其重命名为 webapps1 和 webapps2(如图所示)。这些新创建的文件夹即用于部署项目。

61f9dcfb1f80?utm_campaign=maleskine

第三步:将项目配置文件拖拽到Tomcat安装目录下的conf文件夹中。随后,请将conf文件夹中的Catalina目录拖拽至临时区域进行拷贝操作。完成后,请将拷贝后的Catalina目录重新命名为Catalina1和Catalina2,并标记为[图]。

61f9dcfb1f80?utm_campaign=maleskine

配置完成后, 现在可以将项目分别部署到已经配置好的两个文件夹webapps1和webapps2中

启动tomcat,分别用不同的端口号8080和8081测试;

http://127.0.0.1:8080/项目名

http://127.0.0.1:8081/项目名

linux 上多个 tomcat 分别部署项目

一、将 tomcat 软件解压至多个 目录以供使用;例如,在本例中我们将 tomcat 服务器部署至 /opt 目录,并完成相应的解压与重命名操作。

tar -zxvf apache-tomcat-7.0.75.tar.gz

mv apache-tomcat-7.0.75 tomcat-8070

重复以上解压改名步骤,新增多个 tomcat,大致如下:

[root@vastio138 opt]# ls

apache-tomcat-7.0.75.tar.gz tomcat-8080

tomcat-8090 tomcat-8070

二、分别修改各个 tomcat 目录下的 config/server.xml 文件

server.xml 中修改如下三个端口:(vim 可以使用 / 进行查找修改)

61f9dcfb1f80?utm_campaign=maleskine

保证修改的端口号不重复!

此外,在防火墙已打开的状态下(通过命令service iptables status查看),还需对防火墙设置进行如下操作(针对CentOS 6.8版本):将Tomcat服务的端口号添加至相关配置文件中:

使用(yy 拷贝已有的端口号一行,然后 p 粘贴,最后 i 修改端口号)

[root@vastio138 /]# vim /etc/sysconfig/iptables

Firewall configuration written by system-config-firewall

Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8070 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

~

保存退出后重启防火墙service iptables restart

或者 直接关闭防火墙 : service iptables stop

对此前提到的防火墙IP白名单问题而言其出现频率并不高对此前提到的防火墙IP白名单问题而言其出现频率并不高通常情况下默认配置下会采用Nginx来进行负载均衡通常情况下默认配置下会采用Nginx来进行负载均衡无需配置过多入口地址无需配置过多入口地址

附录Spring Boot项目打包成war包,并发布在tomact容器的示例。

步骤:

配置文件(本地部署)

启动类(war包部署)

war包部署pom.xml添加

maven命令生成war包(跳过测试)

war部署到tomcat

配置文件(本地部署)

此处是我们springboot项目的配置文件所需的设置。即便看似与打包无关的重要事项也需提前做好规划。但无论如何需要强调的是,在生成war包之前必须完成必要的数据库配置工作。通常情况下,默认会执行项目测试,请务必确保在打包生成war包前完成必要的数据库配置工作。

user = name

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/mj

spring.datasource.username = root

spring.datasource.password = 123456

spring.datasource.driverClassName = com.mysql.jdbc.Driver

spring.jpa.hibernate.ddl-auto = update

spring.jpa.show-sql = true

启动类(war包部署)

接下来,请让Spring Boot项目了解我们的意图。为此,请指导我们的项目,并使其打包为war包。在此基础上,请确保我们继承Spring BootServletInitializer类并重写其configure方法以实现功能目标。同时,请说明如何启动该应用服务以及所需构建的war包相关文件的信息。

package com.job;

import org.springframework.boot.SpringApplication;

Import the default applications configuration from the downloads directory using Spring Boot.

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.ServletComponentScan;

import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication

@ServletComponentScan

public class JobManagementApplication extends SpringBootServletInitializer{

@Override

This method is designed to have access to the Spring configuration. It will be used to set up the application's settings and integrate it with other components.

return application.sources(JobManagementApplication.class);

}

public static void main(String[] args) {

SpringApplication.run(JobManagementApplication.class, args);

}

}

war包部署pom.xml添加

接下来,我们要为maven的pom.xml添加相关的依赖配置:

首先要把jar改为以下

war

必要的话可以选择打包的名字

demo

org.springframework.boot

spring-boot-maven-plugin

其次还有添加以下依赖

org.springframework.boot

spring-boot-starter-tomcat

provided

maven命令生成war包(跳过测试)

mvn clean package -Dmaven.test.skip=true

war部署到tomcat

请将WebApps配置到Tomcat中的WebApps文件夹中,并避免在WebApps目录中有与现有名称相同的子文件夹出现。

tips:云服务器上部署时确保连接数据库配置正确,否则项目跑不起来。

总结

介绍到这里,应该是整个部署流程都已走完。

衷心希望大家能少走一些弯路。

全部评论 (0)

还没有任何评论哟~