windowsserver2012R2部署java项⽬之踩坑之路
windows server 2012 R2部署java项⽬之踩坑之路
整个软件开发流程,个⼈认为最刺激的有两部分 项⽬规划和部署上线。中间都是⽆聊的板砖,项⽬开发完成,测试三轮后,部署上线的时候,领导给出的服务器让我⼀阵头⼤,windows server 2012 R2,最重要的是这台服务器上部署着公司的⼏⼗个项⽬,还有⼏个java 项⽬,环境复杂,⽼项⽬不敢动,跟⼈家冲突了都得绕着⾛,由此开启的了我的踩坑之路,程序员的核⼼是解决问题,⼀定要有⼀颗强⼤的内⼼。
背景
完成了⼀个收费系统,经过三轮测试,共计bug109个,解决完成,开始部署上线。
java项⽬嵌套在项⽬(⼤项⽬)中,java前后端分离,数据库也是跟随的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端是嵌套在页⾯⾥的,所以是配置⼀个http的访问就可以了。接⼝平台是⼩程序的接⼝强制https。要了域名,nginx 证书开始配置。
1.配置前端地址
http配置:
接⼝代理地址:
location ^~/prod-api/ {
proxy_pass 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.将前端页⾯嵌⼊ 项⽬中
1.到上功能页⾯增加菜单和访问url
添加成功→分配权限给管理员→访问新菜单→空⽩
查看前端控制台:console
意思是在https的页⾯就不⽀持http的访问了。
那好,那我配置https的去。打开f 配置https访问。
server {
listen 443 ssl;
server_name xxx;
#ssl on;
ssl_certificate xxx/xxxx.pem;
ssl_certificate_key xxxxx/xxx.key;
nginx部署前端项目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 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论