Java Spring应用部署在单台阿里云或腾讯云Windows服务器上
off999 2025-01-04 22:24 17 浏览 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目录没有自动删除,那应该是你应用里有什么操作文件的代码没有处理好,导致文件被进程锁定,不能删除,请检查你的项目代码是否有操作不当的代码
相关推荐
- python基础模块三剑客:sys、os、shutil(增加示例代码)
-
注:上个篇由于不熟悉头条号编辑器,导致示例代码丢失。现在全部以图片的形式加回。有同学问了个问题:在python里如何复制、删除、重命名文件?有个同学知道os.system(),就回答说:os.syst...
- Python常用文件操作库使用详解(python 对文件操作)
-
Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能:文件...
- 你知道Python 如何进行高效的代码重构吗?
-
点赞、收藏、加关注,下次找我不迷路写出高质量的代码是每个程序员的追求。而代码重构作为提升代码质量的重要手段,却常常被新手忽视。很多新手在编写代码时,只关注功能是否实现,却不注重代码的结构和可维护性,...
- Python常用内置模块介绍——文件与系统操作详解
-
Python提供了多个强大的内置模块用于文件和系统操作,下面我将详细介绍最常用的几个模块及其核心功能。1.os模块-操作系统交互os模块提供了与操作系统交互的接口,包括文件/目录操作、进程管理、环...
- Python的tarfile模块解压缩.tar/.tar.gz等文件
-
python中的标准库tarfile模块可以帮助我们快速压缩或者解压后缀为.tar/.tar.gz/.tar.bz2/.tar.xz的文件。01、tarfile核心类与函数介绍使用方法因为tarfil...
- 批量重命名工具,Bulk Rename Utility软件体验
-
平常在电脑上处理电子文件,经常在得到文件本身时,没有空闲和精力去为文件重命名,像是一张图片,要作为下一个步骤的素材。而处理完事过后就不理它了,顺手直接丢回收站或者放在硬盘里。但是想把文件存档和提交给上...
- 照片怎样重命名?方法有四种(照片怎么可以重命名)
-
照片怎样重命名?照片在我们日常生活中扮演着越来越重要的角色,但是有时候,我们需要对照片进行重命名,以便更好地组织和查找它们,这样也可以大大提高我们的效率。在这篇文章中,我们将介绍四种简单的方法,让你轻...
- 你需要批量创建文件夹并命名吗,给你推荐几个方法
-
小李是一家设计公司的项目经理,最近接了一个大项目,需要整理大量的设计稿。每个设计稿都需要单独创建一个文件夹,以方便团队成员协作。手动创建文件夹效率太低,而且容易出错。小李在网上搜索了各种方法,尝试了P...
- 怎样批量重命名一个工作簿中的所有工作表
-
上篇文章,Python数据的选取和处理,阅读量93,收藏15,没有评论。目前正在复习Python+Excel实现办公自动化,有兴趣的可以一起讨论,共同提高。花了近4个小时终于把6个分部的统计工作表做好...
- Windows如何批量修改文件后缀名(电脑如何批量修改文件后缀名)
-
在Windows系统中药批量修改文件后缀名的方式非常多,每个方法的优缺点各有不同,下面通过几个常见的方式给大家介绍下,Windows如何批量修改文件后缀名的。给有需要的朋友几个参考。方法一:使用文件资...
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
-
Python3+变量命名规则与约定详解一、官方命名规则(必须遵守)1.合法字符集变量名只能包含:大小写字母(a-z,A-Z)数字(0-9)下划线(_)2.禁止数字开头合法:user_age,...
- python代码实现读取文件并生成韦恩图
-
00、背景今天战略解码,有同学用韦恩图展示各个产品线的占比,效果不错。韦恩图(Venndiagram),是在集合论数学分支中,在不太严格的意义下用以表示集合的一种图解。它们用于展示在不同的事物群组之...
- python学习第二天:用Pycharm新建的第一个程序
-
分享第一次使用Pycharm学到的内容第一次打开得到上面图片projects:项目customize:自定义plugins:插件learn:学习newproject新建项目聪明如我在插件那里找到了汉...
- 如何编写第一个Python程序(python第一个代码)
-
一、第一个python程序[掌握]python:python解释器,将python代码解释成计算机认识的语言pycharm:IDE(集成开发环境),写代码的一个软件,集成了写代码,...
- Python文件读写操作详解:从基础到实战
-
Python文件的读写操作在Python中,文件操作非常常见,可以通过内建的open()函数进行文件的读取、写入、创建等操作。理解文件操作的模式和with语句对于确保代码的简洁性和效率至...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python重命名文件 (54)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)