百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Java Spring应用部署在单台阿里云或腾讯云Windows服务器上

mhr18 2025-01-08 15:32 31 浏览 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目录没有自动删除,那应该是你应用里有什么操作文件的代码没有处理好,导致文件被进程锁定,不能删除,请检查你的项目代码是否有操作不当的代码

相关推荐

redis 7.4.3更新!安全修复+性能优化全解析

一、Redis是什么?为什么选择它?Redis(RemoteDictionaryServer)是一款开源的高性能内存键值数据库,支持持久化、多数据结构(如字符串、哈希、列表等),广泛应用于缓存、消...

C# 读写Redis数据库的简单例子

CSRedis是一个基于C#的Redis客户端库,它提供了与Redis服务器进行交互的功能。它是一个轻量级、高性能的库,易于使用和集成到C#应用程序中。您可以使用NuGet包管理器或使用以下命令行命令...

十年之重修Redis原理

弱小和无知并不是生存的障碍,傲慢才是。--------面试者总结Redis可能都用过,但是从来没有理解过,就像一个熟悉的陌生人,本文主要讲述了Redis基本类型的使用、数据结构、持久化、单线程模型...

高频L2行情数据Redis存储架构设计(含C++实现代码)

一、Redis核心设计原则内存高效:优化数据结构,减少内存占用低延迟访问:单次操作≤0.1ms响应时间数据完整性:完整存储所有L2字段实时订阅:支持多客户端实时数据推送持久化策略:RDB+AOF保障数...

Magic-Boot开源引擎:零代码玩转企业级开发,效率暴涨!

一、项目介绍基于magic-api搭建的快速开发平台,前端采用Vue3+naive-ui最新版本搭建,依赖较少,运行速度快。对常用组件进行封装。利用Vue3的@vue/compiler-sfc单文...

项目不行简历拉胯?3招教你从面试陪跑逆袭大厂offer!

项目不行简历拉胯?3招教你从面试陪跑逆袭大厂offer!老铁们!是不是每次面试完都感觉自己像被大厂面试官婉拒的渣男?明明刷了三个月题库,背熟八股文,结果一被问项目就支支吾吾,简历写得像大学生课程设计?...

谷歌云平台:开发者部署超120个开源包

从国外相关报道了解,Google与Bitnami合作为Google云平台增加了一个新的功能,为了方便开发人员快捷部署程序,提供了120余款开源应用程序云平台的支持。这些应用程序其中包括了WordPre...

知名互联网公司和程序员都看好的数据库是什么?

2017年数据库领域的最大趋势是什么?什么是最热的数据处理技术?学什么数据库最有前途?程序员们普遍不喜欢的数据库是什么?本文都会一一揭秘。大数据时代,数据库的选择备受关注,此前本号就曾揭秘国内知名互联...

腾讯云发布云存储MongoDB服务

近日,著名安全专家兼Shodan搜索引擎的创建者JohnMatherly发现,目前至少有35000个受影响的MongoDB数据库暴露在互联网上,它们所包含的数据暴露在网络攻击风险之中。据估计,将近6...

已跪,Java全能笔记爆火,分布式/开源框架/微服务/性能调优全有

前言程序员,立之根本还是技术,一个程序员的好坏,虽然不能完全用技术强弱来判断,但是技术水平一定是基础,技术差的程序员只能CRUD,技术不深的程序员也成不了架构师。程序员对于技术的掌握,除了从了解-熟悉...

面试官:举个你解决冲突的例子?别怂!用这个套路……

面试官:举个你解决冲突的例子?别怂!用这个套路……最近收到粉丝私信,说被问到:团队技术方案有分歧怎么办?当场大脑宕机……兄弟!这不是送命题,是展示你情商+技术判断力的王炸题!今天教你们3招,用真实案例...

面试碰到MongoDB?莫慌,跟面试官这样吹MongoDB 复制集

推荐阅读:吊打MySQL:21性能优化实践+学习导图+55面试+笔记+20高频知识点阿里一线架构师分享的技术图谱,进阶加薪全靠它十面字节跳动,依旧空手而归,我该放弃吗?文末会分享一些MongoDB的学...

SpringBoot集成扩展-访问NoSQL数据库之Redis和MongoDB!

与关系型数据库一样,SpringBoot也提供了对NoSQL数据库的集成扩展,如对Redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate...

Java程序员找工作总卡项目关?

Java程序员找工作总卡项目关?3招教你用真实经历写出HR抢着要的简历!各位Java老哥,最近刷招聘软件是不是手都划酸了?简历投出去石沉大海,面试邀请却总在飞别人的简历?上周有个兄弟,13年经验投了5...

Java多租户SaaS系统实现方案

嗯,用户问的是Java通过租户id实现的SaaS方案。首先,我需要理解用户的需求。SaaS,也就是软件即服务,通常是指多租户的架构,每个租户的数据需要隔离。用户可能想知道如何在Java中利用租户ID来...

取消回复欢迎 发表评论: