Java Spring应用部署在单台阿里云或腾讯云Windows服务器上
off999 2025-01-04 22:24 22 浏览 0 评论
此文的目的是记录从零开始在单台windowsService2008R2操作系统的服务器上面部署一个或者多个Java开发的Web应用
常规的Web项目开发部署硬件结构大多是这样的: 应用服务器 + 数据库服务器 + 文件服务器
应用服务器:
操作系统一般是Linux,然后部署Nginx + Tomcat程序,配置完成后部署Java的WAR包。
数据库服务器:
一般就是一个数据库,如:MySql,Oracle或者SQlService等这些关系型数据库,对应用服务器仅仅提供数据库的连接地址。
文件服务器:
一般文件不能直接存在应用服务器,因为文件读取会占用极大的带宽,严重可能导致应用服务器失去访问,所以需要用一个专门的服务器来存储文件,推荐购买阿里云/腾讯云的OSS对象存储服务器。
但是现在我们不讨论这个啊,以上的结构一般都是在一些比较成规模的项目,访问量比较大以后采用的。对于一些小企业没有专业的IT团队或者一些个人开发者成本与访问量都有限的情况下,我们希望能在一台比较友好(直观)操作的Windows上面完成应用的部署。那下面我们就开始吧。
准备必要的资源
- 购买域名,然后备案(备案可能需要半个月左右)。域名购买与备案可以通过“阿里云”或者“腾讯云”平台购买,这两个平台都提供了非常详细的操作步骤与教程
- 购买服务器,推荐在与购买域名的同一个平台购买,如你在阿里云购买了域名,则服务器推荐也在阿里云购买,这样后期管理与维护会方便很多.
- 购买完服务器后,可以看到你的服务器公网IP地址,这个IP地址一般是固定不变的.添加一条域名的解析到你的服务器IP地址.如下图所示将www二级域名映射到了服务器的IP地址,这样就可以通过域名访问到你的服务器了,测试是否绑定成功可以打开windows的cmd窗口,输入: ping 你的域名 来测试
- 进入阿里云/腾讯云后台,配置安全组,放通必要的端口,80,22,443,还有windows必备的远程端口,这些端口一定要放开限制,准许外部网络访问
- 必备的资源准备好后,打开你的电脑远程桌面,输入你服务器的IP地址与登陆账号,远程到你的阿里云或者腾讯云服务器,开始下面的步骤
安装Java JDK
- 下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
- 如果下载需要登录,则注册一个Oracle账号即可,要是不想注册,推荐可以去<腾讯软件中心下载, https://pc.qq.com/search.html#!keyword=java>, 双击下载完成后的安装包,一直下一步即可,记住你的JDK安装目录
- 在你系统的环境变量中的path变量后面加上jdk目录的bin目录
- 在cmd中测试你的java环境变量是够配置好了,输入: java 如果得到下图的提示则配置完成
安装数据库(MySql)
- 从MySql官网下载最新版本MySql Windows安装包,(下载地址: https://dev.mysql.com/downloads/mysql/)
- 安装包下载完成后,一直下一步安装即可,主要配置好你的root账号密码,还有访问的端口(MySql默认的端口号为3306,记住不要被其他应用占据,要是被占据了,请更换另一个端口即可)
安装Nginx前置代理服务器
- 下载Nginx并安装(下载地址:http://nginx.org/download/nginx-1.17.9.zip),然后得到一个ZIP的压缩包,解压后得到一个目录,这个目录就是Nginx的根目录了,下文为了方便会简称Nginx目录,将目录剪切保存到系统C盘根目录。
- 下载WindowsServiceWrapper工具,这是一个可以将Nginx进程转为windows后台服务进程的工具,利用这个工具可以配置Nginx开机启动与后台运行。(下载地址:http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.4.0/winsw-2.4.0-bin.exe),下载后得到一个window的可执行exe文件,重命名为 nginx-service.exe,然后剪切保存到Nginx根目录。
- 在Nginx目录建立一个名为"nginx-service.xml"的文件,填入以下内容:
- 继续在nginx目录建立一个名为"nginx-service.exe.config"的文件,填入以下内容:
- 此时Nginx目录内容如下:
- 打开命令行"cmd",进入到nginx目录(可以直接文件浏览器的地址栏直接输入cmd并回车,即可快速在当前目录打开cmd命令行)
- 在cmd中输入命令: nginx-service.exe install
- 命令执行完成后,打开windows服务面板即可看到名为NginxService的系统服务,如下图所示(如果你的命令执行失败,请尝试使用管理员打开cmd后再执行以上命令)
- 双击NginxService服务,把启动类型设置为自动,这样Nginx就可以随着windows系统自动启动了,并且在后台运行
- 至此,Nginx在windows上安装完成, Nginx启动后默认会监听80端口,可以在浏览器输入: http://localhost:80测试nginx有没有启动完成
安装Tomcat
- 打开tomcat官网,下载tomcat安装包(windows下推荐使用安装包安装,快速也方便,当然使用zip自己配置也可以做到,但是麻烦,使用windows不就是为了方便吗)
- 下载地址: https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.33/bin/apache-tomcat-9.0.33.exe
- 下载完成后,直接双击安装,注意点如下图
- 安装完成后,在电脑的右下角栏目中即可看到tomcat的图标,双击该图标即可打开tomcat的管理页面
- 打开浏览器测输入: http://localhost:8080 测试tomcat是否启动成功
安装FTP文件传输服务(上传你项目代码使用的)
- 使用SFTP协议,推荐使用 freesshd , 小巧稳定
- 下载地址: http://www.freesshd.com/?ctt=download
- 下载完成后直接双击安装,一路下一步下一步就可以了,安装到最后一步时,出现两个如下图的提示,询问是否添加为windows服务,一定要点击是,这决定SFTP是否能跟随操作系统自动重启
- 这个时候打开你的windows开始菜单,点击freeSSHd,启动配置(如果点击了没反应可能是服务已经在启动了,看看右下角的任务栏是否有freeSSHd的图标)
- 按如下图配置SFTP服务
- 按下图添加一个SFTP用户
- SFTP配置完成,重启windows系统,重启时你的远程桌面会断开连接,等待重启完成,5分钟这样再次远程到你的服务器
配置你的Java应用
- 打开你的tomcat安装目录的conf目录,编辑server.xml文件
- 删除文件里面的所有数据,填入以下数据,便配置了一个在8080端口的应用,源代码在C:/MyApp目录
- 先不用急着重启tomcat,继续打开nginx目录,在conf目录编辑nginx.conf文件
- 清空nginx.conf文件所有的数据,填入下图数据
- nginx与tomcat的配置都完成了,下面开始上传你的应用到C:\MyApp目录,应用上传完成后重启一下nginx与tomcat,推荐直接重启电脑系统,这样也可以检查一下nginx与tomcat是否会跟随系统一起重启
打包你的Java应用
- 打开IDEA,新建一个spring boot应用,选择war形式,如下图操作
- 项目建立完成后可能需要一定的时间构建,时间的长度取决你电脑到maven中央仓库的网络链接速度与你电脑本身的性能强弱,IDEA还是比较占电脑资源的,Maven仓库在国外,所以连接一般比较慢.关于仓库有些大牛推荐绑定到国内的仓库,如阿里巴巴的仓库,但是国内的仓库包有点不全,而且版本可能也不是最新的,如果你选择了最新版本的Spring包,可能会构建失败
- 项目构建完成后,在pom.xml文件中加入一个打包插件,这个插件会将打包文件打包到一个指定位置的war中
- 新建一个maven打包指令到IDEA运行环境,默认的maven打包指令会在打包时检查测试,会导致打包失败.如:需要打包正式环境的包,但是正式环境的数据库地址与账号与开发环境不同,打包通过不过测试,会导致打包失败, 所以需要在打包指令后面增加跳过测试的参数
- 输入指令: install -Dmaven.test.skip=true
- `
- 指令配置完成后运行指令,直接点击idea的运行按钮即可
- 指令运行结束后,会在项目的根目录的 target 目录找到一个 war 的子目录, 里面有一个为ROOT.war的包,这个就是我们需要丢到服务器去部署的程序包了
- 得到war包后,请不要改名,ROOT.war是tomcat的默认识别名字,是在需要改名的话,需要在tomcat中也做出相应的配置,所以不建议改名
配置FTP上传包到服务器
- 打开IDEA的 Remote Host 窗口,配置FTP服务器,如果找不到Remote Host的窗口,可以点击IDEA的搜索图标,输入Remote Host 即可打开
- 我们这里用的是FTP的加密版本SFTP,SFTP的账号密码是上面你在第六步配置的SFTP用户,目录是你在上面第七步配置的Tomcat应用目录,记住不要填错
- 将第八步打好的war拖到Remote Host窗口,即可自动上传到远程服务器
- 这个时候等待war上传完成,之后可以看到RemoteHost窗口里只有一个ROOT.war文件
- 打开windows的远程桌面程序,远程到你的服务器,然后重启你的服务器电脑(是重启电脑不是重启tomcat或者nginx),重启后,远程桌面会断开
- 等待5到10分钟左右,在IDEA里,点击RemoteHost窗口上的刷新按钮,看看除了ROOT.war文件之外,是否出现ROOT目录,如果出现ROOT目录,则说明你的应用部署成功了,可以在浏览器访问或者测试你的应用接口试试
- 至此你的代码部署到远程服务器完成
更新代码
- 打开RemoteHost窗口,选中然后右键删除ROOT.war文件,不用手动删除ROOT目录,等待1分钟,ROOT目录会被Tomcat自动删除掉
- 重新打包,获取ROOT.war文件
- 把ROOT.war文件拖到RemoteHost窗口,等待一分钟,Tomcat会自动重启,更新项目代码
- 整个代码更新过程不需要远程操作服务器,也不需要离开IDEA使用其他工具,非常方便
- 切记,一定要先删除RemoteHost里面的文件,再将新的ROOT.war文件拖动到RemoteHost窗口
- 如果你删除了ROOT.war,ROOT目录没有自动删除,那应该是你应用里有什么操作文件的代码没有处理好,导致文件被进程锁定,不能删除,请检查你的项目代码是否有操作不当的代码
相关推荐
- Kubernetes 核心概念全景图:Pod、Node、Cluster、Control Plane 等
-
想真正读懂Kubernetes的底层运作,你必须理解它的“权力架构”。Pod是什么?Node是什么?ControlPlane又是做什么的?它们之间有什么关系?怎么协同工作?本篇带你构建一个...
- Helm 实战:用 Helm 部署一个 Nginx 应用
-
这一篇,我们将动手实战:用Helm从零部署一个Nginx应用,并掌握HelmChart的结构和参数化技巧。一、准备环境在开始之前,你需要确保环境中具备以下工具:已部署的Kubernet...
- 从零开始:如何在 Linux 上搭建 Nginx + Node.js 高性能 Web 服务
-
在现代互联网服务架构中,Nginx+Node.js已成为轻量级、高性能网站的首选组合。本文将带你从零开始,一步步搭建一个高并发、高可用的Web服务平台,让新手也能轻松掌握生产级部署思路。一、...
- NetBox 最新版 4.4.1 完整安装指南
-
NetBox最新版4.4.1完整安装指南(修正版)by大牛蛙1.系统准备#关闭SELinux和防火墙(仅测试环境)systemctldisable--nowfirewalldse...
- Termux 安装 linux 宝塔面板,搭建 Nginx+PHP+Mysql web 网站环境
-
Termux安装linux宝塔面板,搭建Nginx+PHP+Mysqlweb服务环境,解决启动故障奶妈级教程1.到宝塔面板官网:https://www.bt.cn/new/download...
- OpenEuler系统安装Nginx安装配置_openwrt安装nginx
-
NginxWEB安装时可以指定很多的模块,默认需要安装Rewrite模块,也即是需要系统有PCRE库,安装Pcre支持Rewrite功能。如下为安装NginxWEB服务器方法:源码的路径,而不是编...
- 多级缓存架构实战:从OpenResty到Redis,打造毫秒级响应系统
-
在传统的Web架构中,当用户发起请求时,应用通常会直接查询数据库。这种模式在低并发场景下尚可工作,但当流量激增时,数据库很容易成为性能瓶颈。多级缓存通过在数据路径的不同层级设置缓存,可以显著降低数据库...
- 如何使用 Nginx 缓存提高网站性能 ?
-
快速加载的站点提供了更好的用户体验并且可以拥有更高的搜索引擎排名。通过Nginx缓存提高你的网站性能是一个有效的方法。Nginx是一个流行的开源web服务器,也可以作为web服务器反向代...
- 如何构建企业级Docker Registry Server
-
很多人问我,虚拟机镜像和docker镜像的区别是什么?其实区别非常明显,我们可以通过阅读Dockerfile文件就可以知道这个镜像都做了哪些操作,能提供什么服务;但通过虚拟机镜像,你能一眼看出来虚拟机...
- 如何解决局域网SSL证书问题?使用mkcert证书生成工具轻松搞定
-
“局域网里弹出‘不安全’红锁,老板就在身后盯着演示,那一刻只想原地消失。”别笑,九成前端都经历过。自签证书被Chrome标红,客户以为网站被黑,其实只是缺一张被信任的证。mkcert把这事从半小时缩到...
- Docker 安全与权限控制:别让你的容器变成“漏洞盒子”
-
在享受容器带来的轻量与灵活的同时,我们也必须面对一个现实问题:安全隐患。容器并不是天然安全,错误配置甚至可能让攻击者“越狱”入侵主机!本篇将带你从多个层面强化Docker的安全防护,构建真正可放心...
- Kubernetes生产级管理指南(2025版)
-
在云原生技术持续演进的2025年,Kubernetes已成为企业数字化转型的核心引擎。然而,生产环境中的集群管理仍面临基础设施配置、安全漏洞、运维复杂度攀升等挑战。本文将结合最新行业实践,从基础设施即...
- 云原生工程师日常使用最多的工具和100条高频命令
-
在云原生时代,工程师不仅要熟悉容器化、编排和服务网格,还要掌握大量工具和命令来进行日常运维与开发。本文将从工具篇和命令篇两个角度,详细介绍云原生工程师每天都会用到的核心技能。一、云原生工程师常...
- 用 Jenkins 实现自动化 CI/CD_jenkins api自动执行
-
场景设定(可替换为你的技术栈)语言:Node.js(示例简单,任何语言思路一致)制品:Docker镜像(推送到DockerHub/Harbor)运行环境:Kubernetes(staging...
- 5款好用开源云笔记虚拟主机部署项目推荐
-
在个人数据管理与协同办公场景中,开源云笔记项目凭借可自主部署、数据可控的优势,成为众多用户的首选。以下推荐5款适配虚拟主机部署、功能完善的开源项目,附核心特性与部署要点,助力快速搭建专属云笔记系统。...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Kubernetes 核心概念全景图:Pod、Node、Cluster、Control Plane 等
- Helm 实战:用 Helm 部署一个 Nginx 应用
- 从零开始:如何在 Linux 上搭建 Nginx + Node.js 高性能 Web 服务
- NetBox 最新版 4.4.1 完整安装指南
- Termux 安装 linux 宝塔面板,搭建 Nginx+PHP+Mysql web 网站环境
- OpenEuler系统安装Nginx安装配置_openwrt安装nginx
- 多级缓存架构实战:从OpenResty到Redis,打造毫秒级响应系统
- 如何使用 Nginx 缓存提高网站性能 ?
- 如何构建企业级Docker Registry Server
- 如何解决局域网SSL证书问题?使用mkcert证书生成工具轻松搞定
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)