之前想的不加功能了,之前已经实现了redis。因为前两天看了nginx的负载均衡,虽然也配过实例,但没有将我做过的项目进行整合,我想这也是一种成长过程,也是一个实操锻炼过程
话不多说整活!!!
不只针对我的这个项目,你如果有spring boot项目也可以试试。方法都是一样的,最后效果是通过访问一个网址或者ip达到访问不同端口的目的。负载可以负载端口也可以负载IP,在于你怎么配置。先附一张实现效果图

首先就是打包
将你的项目打成jar包
下面是关于idea如何打包的,会打包的自行跳过
eclipse就不贴了,都2020年了,还在用eclipse吗……这也没有鄙视的意思,觉得谁好用就用谁吧(doge保命)
- pom文件中添加打包插件
- 增加所打的包的方式,jar就写jar,war就写war
- 利用maven自带插件打包(建议先clean)
1、pom文件中添加打包插件
1 2 3 4 5 6 7 8
| <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
|

不加这个插件的的后果,都是亲身试验过的坑啊
2、增加所打的包的方式,jar就写jar,war就写war
1
| <packaging>jar</packaging>
|
3、利用maven自带插件打包(建议先clean)

4、jar包所在位置

最后提一下,我用过idea自带的打包工具就是那个build,然后运行的时候报的信息一大堆看不懂的,当然项目最后启动不了,可能是我方式不对,但我还是极力的不推荐,一是麻烦,二是需要注意的地方太多,用我上面这种就可以了。

这个是idea的自带打包方式

这个是自带打包方式出现的报错信息
——————————-打包完,下来说正事————————–
1、为了观察效果,可以控制器中设置一个方法返回各自的端口(就是我演示中的效果)


2、将项目打包,分别定义不同的端口8080,8081,8082

3、将打好的包用名字进行区分,放入Linux中

4、进入nginx的conf目录下修改nginx.conf

5、启动nginx.
6、依次启动jar包(也可以使用一键启动脚本,后面说)
1
| nohup java -jar xxx(nohup表示后台运行)
|
7、访问路径验证效果,一直刷新会观察到端口的变化
http://192.168.11.130/port
下面为一键启动脚本的代码,直接cv就可以用了
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| #!/bin/bash
APP_NAME1=computer8080.jar APP_NAME2=computer8081.jar APP_NAME3=computer8082.jar
usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]" exit 1 }
is_exist1(){ pid1=`ps -ef|grep $APP_NAME1|grep -v grep|awk '{print $2}' ` if [ -z "${pid1}" ]; then return 1 else return 0 fi }
is_exist2(){ pid2=`ps -ef|grep $APP_NAME2|grep -v grep|awk '{print $2}' ` if [ -z "${pid2}" ]; then return 1 else return 0 fi }
is_exist3(){ pid3=`ps -ef|grep $APP_NAME3|grep -v grep|awk '{print $2}' ` if [ -z "${pid3}" ]; then return 1 else return 0 fi }
start(){ is_exist1 if [ $? -eq "0" ]; then echo "${APP_NAME1} is already running. pid=${pid1} ." else nohup java -jar $APP_NAME1 > /dev/null 2>&1 & fi
is_exist2 if [ $? -eq "0" ]; then echo "${APP_NAME2} is already running. pid=${pid2} ." else nohup java -jar $APP_NAME2 > /dev/null 2>&1 & fi
is_exist3 if [ $? -eq "0" ]; then echo "${APP_NAME3} is already running. pid=${pid3} ." else nohup java -jar $APP_NAME3 > /dev/null 2>&1 & fi }
stop(){ is_exist1 if [ $? -eq "0" ]; then kill -9 $pid1 else echo "${APP_NAME1} is not running" fi
is_exist2 if [ $? -eq "0" ]; then kill -9 $pid2 else echo "${APP_NAME2} is not running" fi
is_exist3 if [ $? -eq "0" ]; then kill -9 $pid3 else echo "${APP_NAME3} is not running" fi }
status(){ is_exist1 if [ $? -eq "0" ]; then echo "${APP_NAME1} is running. Pid is ${pid1}" else echo "${APP_NAME1} is NOT running." fi
is_exist2 if [ $? -eq "0" ]; then echo "${APP_NAME2} is running. Pid is ${pid2}" else echo "${APP_NAME2} is NOT running." fi
is_exist3 if [ $? -eq "0" ]; then echo "${APP_NAME3} is running. Pid is ${pid3}" else echo "${APP_NAME3} is NOT running." fi }
restart(){ stop start }
case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac
|