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

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

nanshan 2025-04-06 19:29 18 浏览 0 评论

此文的目的是记录从零开始在单台windowsService2008R2操作系统的服务器上面部署一个或者多个Java开发的Web应用

常规的Web项目开发部署硬件结构大多是这样的: 应用服务器 + 数据库服务器 + 文件服务器

应用服务器:

操作系统一般是Linux,然后部署Nginx + Tomcat程序,配置完成后部署Java的WAR包。

数据库服务器:

一般就是一个数据库,如:MySql,Oracle或者SQlService等这些关系型数据库,对应用服务器仅仅提供数据库的连接地址。

文件服务器:

一般文件不能直接存在应用服务器,因为文件读取会占用极大的带宽,严重可能导致应用服务器失去访问,所以需要用一个专门的服务器来存储文件,推荐购买阿里云/腾讯云的OSS对象存储服务器。



但是现在我们不讨论这个啊,以上的结构一般都是在一些比较成规模的项目,访问量比较大以后采用的。对于一些小企业没有专业的IT团队或者一些个人开发者成本与访问量都有限的情况下,我们希望能在一台比较友好(直观)操作的Windows上面完成应用的部署。那下面我们就开始吧。

准备必要的资源

  • 购买域名,然后备案(备案可能需要半个月左右)。域名购买与备案可以通过“阿里云”或者“腾讯云”平台购买,这两个平台都提供了非常详细的操作步骤与教程
  • 购买服务器,推荐在与购买域名的同一个平台购买,如你在阿里云购买了域名,则服务器推荐也在阿里云购买,这样后期管理与维护会方便很多.
  • 购买完服务器后,可以看到你的服务器公网IP地址,这个IP地址一般是固定不变的.添加一条域名的解析到你的服务器IP地址.如下图所示将www二级域名映射到了服务器的IP地址,这样就可以通过域名访问到你的服务器了,测试是否绑定成功可以打开windows的cmd窗口,输入: ping 你的域名 来测试

域名映射到服务器IP地址

  • 进入阿里云/腾讯云后台,配置安全组,放通必要的端口,80,22,443,还有windows必备的远程端口,这些端口一定要放开限制,准许外部网络访问
  • 必备的资源准备好后,打开你的电脑远程桌面,输入你服务器的IP地址与登陆账号,远程到你的阿里云或者腾讯云服务器,开始下面的步骤

安装Java JDK

  • 下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

Oracle JDK下载地址

  • 如果下载需要登录,则注册一个Oracle账号即可,要是不想注册,推荐可以去<腾讯软件中心下载, https:pc.qq.comsearch.htmlkeyword='java'>, 双击下载完成后的安装包,一直下一步即可,记住你的JDK安装目录
  • 在你系统的环境变量中的path变量后面加上jdk目录的bin目录
  • 在cmd中测试你的java环境变量是够配置好了,输入: java 如果得到下图的提示则配置完成

测试JDK是否配置完成

安装数据库(MySql)

  • 从MySql官网下载最新版本MySql Windows安装包,(下载地址: https://dev.mysql.com/downloads/mysql/)

选择安装的包,而不是zip包

点击下载完整版本的包


直接下载,不登录Oracle账号

  • 安装包下载完成后,一直下一步安装即可,主要配置好你的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-service.xml

  • 继续在nginx目录建立一个名为"nginx-service.exe.config"的文件,填入以下内容:

nginx-service.exe.config

  • 此时Nginx目录内容如下:

nginx目录全部文件

  • 打开命令行"cmd",进入到nginx目录(可以直接文件浏览器的地址栏直接输入cmd并回车,即可快速在当前目录打开cmd命令行)
  • 在cmd中输入命令: nginx-service.exe install
  • 命令执行完成后,打开windows服务面板即可看到名为NginxService的系统服务,如下图所示(如果你的命令执行失败,请尝试使用管理员打开cmd后再执行以上命令)


nginx安装成功

  • 双击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使用的JDK目录


选择安装tomcat的目录,推荐安装在C盘根目录

  • 安装完成后,在电脑的右下角栏目中即可看到tomcat的图标,双击该图标即可打开tomcat的管理页面

tomcat管理面板,点击start即可启动tomcat

  • 打开浏览器测输入: http://localhost:8080 测试tomcat是否启动成功

tomcat启动成功

安装FTP文件传输服务(上传你项目代码使用的)

  • 使用SFTP协议,推荐使用 freesshd , 小巧稳定
  • 下载地址: http://www.freesshd.com/?ctt=download

freesshd下载操作

  • 下载完成后直接双击安装,一路下一步下一步就可以了,安装到最后一步时,出现两个如下图的提示,询问是否添加为windows服务,一定要点击是,这决定SFTP是否能跟随操作系统自动重启

点击是


点击是

  • 这个时候打开你的windows开始菜单,点击freeSSHd,启动配置(如果点击了没反应可能是服务已经在启动了,看看右下角的任务栏是否有freeSSHd的图标)

freeSSHd默认界面

  • 按如下图配置SFTP服务

配置SFTP监听的IP与端口


配置安全模式


配置SFTP根目录

  • 按下图添加一个SFTP用户

添加SFTP用户界面


配置SFTP账号密码

  • SFTP配置完成,重启windows系统,重启时你的远程桌面会断开连接,等待重启完成,5分钟这样再次远程到你的服务器

配置你的Java应用

  • 打开你的tomcat安装目录的conf目录,编辑server.xml文件
  • 删除文件里面的所有数据,填入以下数据,便配置了一个在8080端口的应用,源代码在C:/MyApp目录

server.xml文件内容

  • 先不用急着重启tomcat,继续打开nginx目录,在conf目录编辑nginx.conf文件
  • 清空nginx.conf文件所有的数据,填入下图数据

nginx.conf内容

  • nginx与tomcat的配置都完成了,下面开始上传你的应用到C:\MyApp目录,应用上传完成后重启一下nginx与tomcat,推荐直接重启电脑系统,这样也可以检查一下nginx与tomcat是否会跟随系统一起重启

打包你的Java应用

  • 打开IDEA,新建一个spring boot应用,选择war形式,如下图操作

新建Spring boot应用


选择war包的打包形式

  • 项目建立完成后可能需要一定的时间构建,时间的长度取决你电脑到maven中央仓库的网络链接速度与你电脑本身的性能强弱,IDEA还是比较占电脑资源的,Maven仓库在国外,所以连接一般比较慢.关于仓库有些大牛推荐绑定到国内的仓库,如阿里巴巴的仓库,但是国内的仓库包有点不全,而且版本可能也不是最新的,如果你选择了最新版本的Spring包,可能会构建失败

SpringBoot项目从仓库下载依赖包构建中

  • 项目构建完成后,在pom.xml文件中加入一个打包插件,这个插件会将打包文件打包到一个指定位置的war中

加入插件,同时点击右下角应用更新

  • 新建一个maven打包指令到IDEA运行环境,默认的maven打包指令会在打包时检查测试,会导致打包失败.如:需要打包正式环境的包,但是正式环境的数据库地址与账号与开发环境不同,打包通过不过测试,会导致打包失败, 所以需要在打包指令后面增加跳过测试的参数
  • 输入指令: install -Dmaven.test.skip=true
  • `

添加自定义maven指令

  • 指令配置完成后运行指令,直接点击idea的运行按钮即可

运行指令

  • 指令运行结束后,会在项目的根目录的 target 目录找到一个 war 的子目录, 里面有一个为ROOT.war的包,这个就是我们需要丢到服务器去部署的程序包了

打包指令执行后得到需要的war包

  • 得到war包后,请不要改名,ROOT.war是tomcat的默认识别名字,是在需要改名的话,需要在tomcat中也做出相应的配置,所以不建议改名

配置FTP上传包到服务器

  • 打开IDEA的 Remote Host 窗口,配置FTP服务器,如果找不到Remote Host的窗口,可以点击IDEA的搜索图标,输入Remote Host 即可打开

打开RemoteHost


配置SFTP账号与目录

  • 我们这里用的是FTP的加密版本SFTP,SFTP的账号密码是上面你在第六步配置的SFTP用户,目录是你在上面第七步配置的Tomcat应用目录,记住不要填错

信息填对后,点击测试连接可以看到提示

  • 将第八步打好的war拖到Remote Host窗口,即可自动上传到远程服务器

鼠标拖动war到RemoteHost窗口

  • 这个时候等待war上传完成,之后可以看到RemoteHost窗口里只有一个ROOT.war文件
  • 打开windows的远程桌面程序,远程到你的服务器,然后重启你的服务器电脑(是重启电脑不是重启tomcat或者nginx),重启后,远程桌面会断开
  • 等待5到10分钟左右,在IDEA里,点击RemoteHost窗口上的刷新按钮,看看除了ROOT.war文件之外,是否出现ROOT目录,如果出现ROOT目录,则说明你的应用部署成功了,可以在浏览器访问或者测试你的应用接口试试

刷新后出现ROOT目录,代表部署成功

  • 至此你的代码部署到远程服务器完成

更新代码

  • 打开RemoteHost窗口,选中然后右键删除ROOT.war文件,不用手动删除ROOT目录,等待1分钟,ROOT目录会被Tomcat自动删除掉
  • 重新打包,获取ROOT.war文件
  • 把ROOT.war文件拖到RemoteHost窗口,等待一分钟,Tomcat会自动重启,更新项目代码
  • 整个代码更新过程不需要远程操作服务器,也不需要离开IDEA使用其他工具,非常方便
  • 切记,一定要先删除RemoteHost里面的文件,再将新的ROOT.war文件拖动到RemoteHost窗口
  • 如果你删除了ROOT.war,ROOT目录没有自动删除,那应该是你应用里有什么操作文件的代码没有处理好,导致文件被进程锁定,不能删除,请检查你的项目代码是否有操作不当的代码

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: