主要是nginx的安装使用, 至于原理
1. 安装nginx(以及两个tomcat)
2. 使用nginx(测试负载均衡)
想要搭建的测试环境,
1.两个tomcat, 端口分别是80和8090(因为之前安装过一次端口为80的tomcat)
2.nginx端口为8088
-
nginx安装(linux为例)
安装目录都在/usr/local
下.
-
tomcat安装
-
下载tomcat安装包, 建议安装8版本的 Apache Tomcat 8 Software Downloads
-
解压重命名指令同nginx
-
第一个端口为80的tomcat目录为tomcat
-
修改端口: vim ./tomcat/conf/server.conf
<!-- 将8080改成80 -->
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-
启动80的tomcat, ./tomcat/bin/start.sh
-
第二个端口为8090的tomcat目录为tomcat8090
(再次解压一个新的)
-
修改端口: vim ./tomcat8090/conf/server.conf
主要修改 Server中的port 和 Connector中的port (如果启动失败可百度启动两个不同端口tomcat自行查找问题或者更改更多参数令其完全不同)
<!-- 指定关机时候的端口 8005改成8006 -->
<Server port="8005" shutdown="SHUTDOWN">
<!-- AJP协议端口: 将8080改成8089 -->
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-
启动8090的tomcat: ./tomcat8090/bin/start.sh
-
创建一个测试项目
创建一个只有一个接口的demo项目(maven构件为例)
-
pom
: 因为使用tomcat运行, 我们打包方式改成war
, 添加上打包插件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- web必要依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.5</version>
</dependency>
<!-- hutool工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.9</version>
</dependency>
</dependencies>
<build>
<!-- 指定打包出来的文件名 -->
<finalName>test-api</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
-
yml
: 建两个配置文件test
和prod
, 配置不同的参数, 测试负载均衡
# 其实一个配置文件打包时候改参数内容就行, 意思都一样,
# 只是模仿, 分文件还可以通过日志查看哪个配置文件生效了
# application.yml
spring:
profiles:
active: test
# application-test.yml
name: test
# application-prod.yml
name: prod
-
Application
: 启动类, 配置自动启动
package org.example;
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;
/**
* @author codor
* @date 2023/03/13 14:22
*/
@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestApplication.class);
}
}
-
controller
: 写一个接口读配置文件信息
package org.example.controller;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @author codor
* @date 2023/03/13 14:24
*/
@RestController
@RequestMapping("/test")
public class TestController {
@RequestMapping("/time")
public String time() {
return SpringUtil.getProperty("name") +
": " +
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN);
}
}
-
修改application.yml
中激活文件打test
和prod
的两个包修改两个tomcat中的webapps
下, 会自动解压部署.
-
访问各自端口下返回的内容中分别对应着test
和prod
即为正常
-
测试nginx
-
访问http://127.0.0.1:8088/test-api/test/time
-
反复刷新得到结果中有test
和prod
即为正常, 默认的负载均衡机制应该是轮播.
-
关闭8090的tomcat: ./tomcat8090/bin/shutdown.sh
-
再次刷新, 结果只有test
的结果为正常.
-
再次启动8090的tomcat
-
刷新结果中则恢复之前的情况
如果tomcat8090中的包关闭后, 刷新会导致一次test
一次404
此次记录只是nginx入门简单使用, 作为笔记记录.
原理, 安装, 整合