linux系统部署微服务war包
- 如果因为MySQL的问题参考
- war打包比较jar打包麻烦一点
- 我们微服务会有一个父工程,父工程打包的名字跟子包打包的名字不太一样
- 这里是代码
-
<packaging>pom</packaging>
-
我们还需要将父工程存放到maven仓库中
-
然后打包成功,在子模块的pom文件里引用即可
-
我们来看一下子模块如何打包
-
pom文件
-
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.zhiyou100</groupId> <!--这里是父工程的名字--> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.zhiyou100</groupId> <artifactId>weather-eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>weather-eureka</name> <description>服务注册中心</description> <dependencies> <!--这里是将内置的tomcat关掉--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!--这里是服务注册中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <!--这里是web启动器,一定要加上--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.zhiyou100</groupId> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
-
然后我们来配置服务注册中心
-
#这里是防止端口号冲突所以改为8000 server.port=8000 #这里是服务中心的名字 spring.application.name=weather-eureka #这里是本机的名字 eureka.instance.hostname=localhost #这里是不将本服务注册到服务中心 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false #这里是服务注册中心的核心配置 eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
主类这里继承SpringBootServletInitializer,还实现SpringApplicationBuilder方法
-
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class WeatherEurekaApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // TODO Auto-generated method stub return builder.sources(this.getClass()); } public static void main(String[] args) { SpringApplication.run(WeatherEurekaApplication.class, args); } }
接下来进行打包,双击package即可
-
这样我们的服务注册中心打包完成了
-
然后我们这里写一个提供者
-
第一步pom文件
-
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.zhiyou100</groupId> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.zhiyou100</groupId> <artifactId>city-data</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>city-data</name> <description>城市数据获取</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.zhiyou100</groupId> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--导入mybatis依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <!--导入mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--eureka-client启动器--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies> </project>
然后配置文件
-
#这里是开启Redis虚拟机的ip地址 spring.redis.host=139.224.66.202 #这里是Redis端口号6379 spring.redis.port=6379 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #这里是数据库的账号,一般都是root spring.datasource.username=root #这里是数据库密码 spring.datasource.password=这里是你的mysql密码 #这里是数据库链接池,我的外网服务器的ip是139.224.66.202,数据库名是pan spring.datasource.url=jdbc:mysql://139.224.66.202/pan #这里是扫描mapper下的xml文件 mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml #为了防止端口号冲突,这里我们修改一下端口号 server.port=8321 #提交时的名字 spring.application.name=city-data #提交到服务注册中心,我的外网服务器的ip地址是139.224.66.202,tomcat端口号是8080,注册中心打包的名字是weather-eureka, #注册中心的名字是eureka eureka.client.service-url.defaultZone=http://139.224.66.202:8080/weather-eureka/eureka/
主类上同样
-
extends SpringBootServletInitializer
方法
-
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // TODO Auto-generated method stub return builder.sources(this.getClass()); }
controller层来一个可以被访问接口
-
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class Hello { @RequestMapping("gethello") public String gethello(){ return "Hello word"; } }
然后打包
-
这样我们的提供者就打包完成了
-
再写一个消费者就ok了
-
同样第一步pom文件
-
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.zhiyou100</groupId> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.zhiyou100</groupId> <artifactId>city-wather</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>city-wather</name> <description>展示</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.zhiyou100</groupId> <artifactId>server-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--feign依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.0.0.RELEASE</version> </dependency> <!--client依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> </project>
然后配置文件
-
#这里是端口号为了防止端口号冲突改为了8312 server.port=8312 #这里是本服务的提交名字 spring.application.name=city-wather #提交到服务注册中心,我的外网服务器的ip地址是139.224.66.202,tomcat端口号是8080,注册中心打包的名字是weather-eureka, #注册中心的名字是eureka eureka.client.service-url.defaultZone=http://139.224.66.202:8080/weather-eureka/eureka/ #这里是熔断器可以考虑加或者不加 feign.hystrix.enabled=true
创建一个service层这里要调用提供者服务
-
因为我这个是在外网上部署的所以url地址思考一下是否要加
-
如果出现http//city-wather/gethello可以考虑加上
-
然后我们在写一个controller层用来调用service层
-
import com.zhiyou100.citywather.service.ICityService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController public class Hello { @Resource private ICityService iCityService; @RequestMapping(value = "hello") public String hello(){ return iCityService.gethello(); } }
这里的主类也是一样的
-
extends SpringBootServletInitializer
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // TODO Auto-generated method stub return builder.sources(this.getClass()); }
-
然后我们就可以去linux部署了
-
上来二话不说先复制3个tomcat
-
我这里用了一下工具,毕竟window系统上好复制
-
这样我们的三个tomcat就弄好了,前提是Linux系统上已将安装了Java和配置了Java的环境变量
-
然后我们来修改一下tomcat的端口号防止冲突,我们这里只修改两个就好
-
然后我们来编辑一下server.xml这个文件
-
vi server.xml
-
我们这里一共修改了五处
-
接下来我们修改下一个tomcat
-
也是修改server.xml文件
-
vi server.xml
-
同样这里也是五处
-
接下来我们就将大好的包传输到相应的tomcat下的webapps下
-
弄完以后我们需要运行tomcat,运行的话需要到bin目录下
-
这里是我的tomcat的路径
-
cd /usr/local/tomcat/apache-tomcat-9.0.0.M13/bin/
这里我们还需要加上一句话,不然没法运行
-
chmod u+x *.sh
然后
-
./startup.sh
其他的两个tomcat也是一样的
-
运行完成以后我们看一下服务注册中心
这样算是运行成功了
上一篇: kafka-自定义分区器(partitioner)_06
下一篇: mysql必知必会