windows server 2012 R2部署java项目之踩坑之路

windows server 2012 R2部署java项目之踩坑之路

整个软件开发流程,个人认为最刺激的有两部分 项目规划和部署上线。中间都是无聊的板砖,项目开发完成,测试三轮后,部署上线的时候,领导给出的服务器让我一阵头大,windows server 2012 R2,最重要的是这台服务器上部署着公司的几十个.net项目,还有几个java项目,环境复杂,老项目不敢动,跟人家冲突了都得绕着走,由此开启的了我的踩坑之路,程序员的核心是解决问题,一定要有一颗强大的内心。

背景

  • 完成了一个收费系统,经过三轮测试,共计bug109个,解决完成,开始部署上线。
  • java项目嵌套在.net项目(大项目)中,java前后端分离,数据库也是跟随.net的SQL Server。
  • 公司网速很差,远程连接服务器经常性断开重连,导致无法直接上传文件。
  • 项目有微信小程序,需要提供https的API地址。

正文

一、查看Window Server环境,准备java环境

  • java版本 服务器上有装了java 8
    在这里插入图片描述

  • MySQL版本 服务器上有装5.6(java项目用了jeecgBoot,需要基础的- MySQL数据库表的支持)
    本地开发和测试一直用的MySQL 8.0,但是因为没有用到MySQL,只需要基础,5.6的也可以。
    在这里插入图片描述

  • Sql Server版本 Sql Server 2008

  • nginx版本 1.16.1

二、上传jar包,前端dist包

两个jar包,一个前端dist包,300M左右。
由于网络问题,只能通过云盘或者邮箱的方式上传

三、启动项目,开放端口(重点)

1.上传完成,查看端口占用,修改配置启动项目。

查看端口占用

windows 环境下
cmd: netstat -an|findstr 8035
cmd: netstat -an|findstr 8036
linux 环境下
netstat  -anp |grep  3305
netstat -anp|grep 8036

在这里插入图片描述
什么都不输出表示没有被占用
修改jar包配置文件

  • 端口号,数据库地址,懂得都懂我就不配图了。

  • 启动jar包。

  • 两个jar包都启动成功,一切都很顺利,

  • 将pc前端页面放到自己的目录下。
    好像没什么问题???

2.配置nginx,前端代理/prod-api

思路:因为pc端是嵌套在.net页面里的,所以是配置一个http的访问就可以了。接口平台是微信小程序的接口强制https。要了域名,nginx证书开始配置。
1.配置前端地址

http配置:
接口代理地址:
  location ^~/prod-api/ {
            proxy_pass              http://127.0.0.1:8035/jeecg-boot/;
            proxy_set_header        Host 127.0.0.1;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        //前端
   location / {
            root   前端dist路径 示例:htmlqt/parent/dist;
            index  index.html index.htm;
            #解决 Router(mode:'history')模式下,刷新路由地址找不到页面的问题
			try_files $uri $uri/ /index.html;
        }

2.检查配置文件是否正确

nginx -t 

在这里插入图片描述
3.重载配置文件
nginx -s reload

3.访问测试

通过服务器地址+端口号访问。
服务器本地访问 成功。
外网访问 失败!
小伙伴们一定知道是防火墙的问题,到防火墙开放代理端口。
点击进入教程
到此http的配置完成能成功访问并使用。

4.将前端页面嵌入.net 项目中

1.到.net上功能页面增加菜单和访问url
添加成功→分配权限给管理员→访问新菜单→空白
在这里插入图片描述

查看前端控制台:console
在这里插入图片描述
意思是在https的页面就不支持http的访问了。
那好,那我配置https的去。打开nginx.conf 配置https访问。

server {
	listen       443 ssl;
	server_name  xxx;
	#ssl          on;
	ssl_certificate xxx/xxxx.pem;
	ssl_certificate_key xxxxx/xxx.key;
	ssl_session_timeout 5m;
	ssl_protocols TLSv1 TLSv1.2;
	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers   on;
	  location ^~/prod-api/ {
            client_max_body_size    16m;
		client_body_buffer_size 128k;
		proxy_pass              http://127.0.0.1:8035/jeecg/boot;
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header        X-Forwarded-Proto $scheme;
		proxy_set_header        X-Forwarded-Port $server_port;
		proxy_next_upstream     off;
		proxy_connect_timeout   30;
		proxy_read_timeout      300;
		proxy_send_timeout      300;
        }
        //前端
   location / {
            root   前端dist路径 示例:xxx/xxxx/dist;
            index  index.html index.htm;
            #解决 Router(mode:'history')模式下,刷新路由地址找不到页面的问题
			try_files $uri $uri/ /index.html;
        }
}

坑来了

nginx -t

在这里插入图片描述
在这里插入图片描述
百度/必应:443端口被占用了,nginx无法重载。
好生气,去看看是谁占了我们的443,直接kill

netstat -an|findstr 443

在这里插入图片描述
。。。没脾气了,神仙服务器。
去问了之前的项目的人结论如下:
1.之前的.net项目已经占用了443,而且配置了多个
2.之前的.net项目端口的配置全在IIS(???)上配置的
3.也就是现在nginx和IIS只能搞一个,!!!???

解决问题,不能放弃,却又不知道IIS,申请个援助。用IIS部署VUE项目,我们的项目很神奇。
百度/必应:
IIS如何部署vue项目
IIS如何配置证书
IIS如何给网站配置证书
windows+IIS YYDS
经过一番艰苦奋斗,通过IIS配置的项目访问成功,并成功嵌套在.net中,过程中一定要注意浏览器缓存,有时候清缓存都是无用的,只能更换浏览器访问。

5.测试基本功能

随便点了几个功能,查询有报错的???
在这里插入图片描述
测试的同学测了三轮,有问题早就提出来了。
看了错误,concat报错,这是什么情况呢。
一番查询之后:sql server版本问题!我本地的2012,服务器上2008,concat函数2012版的才出的。
好巧啊好巧啊!!!
改代码,去掉所有concat函数,重新上传jar包。

6.部署接口平台

既然443被占用了,我就用域名+端口的方式配置一个后端访问。

server {
	listen       8091 ssl;
	server_name  xxxx;
	#ssl          on;
	ssl_certificate xxxxx.pem;
	ssl_certificate_key xxxx.key;
	ssl_session_timeout 5m;
	ssl_protocols TLSv1 TLSv1.2;
	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers   on;
	location / {
		client_max_body_size    16m;
		client_body_buffer_size 128k;
		proxy_pass              http://127.0.0.1:8036;
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header        X-Forwarded-Proto $scheme;
		proxy_set_header        X-Forwarded-Port $server_port;
		proxy_next_upstream     off;
		proxy_connect_timeout   30;
		proxy_read_timeout      300;
		proxy_send_timeout      300;
	}
}

成功部署 xxxx:8091/jeecg-boot/xxxx
通知小程序端修改接口路径配置,审核上线。

总结

1.当我配置接口平台的时候发现自己走了弯路,我可以PC端-前端页面也走 域名+ 端口 的方式访问,因为我是嵌套在别人页面中,并不是一定需要https默认的443端口。
在这里插入图片描述
2.在面对自己不熟悉,又很紧急的事情时,一定要寻求帮助,并不是说自己搞不出来,而是你不知道里面有多少坑。
3.只会后端是不行,你得会前端,前端你都会了,自己设计下页面吧;只会linux上部署项目不行,还得会window;只会nginx不行,得会IIS;你就是那个什么都会的,活都给你来干吧?
4.程序员的核心是解决问题,遇到的问题越多你的提升越快,积累越多,认知越广,头发越少。加油!!!
在这里插入图片描述

  • 1
    点赞
  • 3
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值