我们的目标
是运行web程序生成war包进而发布在ECS(云主机)上,使得可以公网进行访问。
有教程说可以在服务器已经部署好的前提下直接自动发布到服务器的Tomcat,我尝试了几次没有成功,决定还是乖乖地复制过去,手动发布吧(有想尝试的可以去搜一下,有点点小复杂)。
为了讲解清晰,先从创建一个新的项目讲起吧。
一,首先是在IDEA上新建web工程
1.File->New Project选择Web Application
图1.1
图1.2
2.填写好项目的名字和路径,点击确定,生成了最简单的文件目录
3.在WEB-INF目录下右键选择NEW->Directory,创建classes和lib两个目录
classes用来存放项目编译后的java文件,lib用来存放jar包(类库)。
图1.3
4.下面设置项目的资源路径
点击File->Project Structure->点击Modules->然后选中项目->在右侧选中Paths
图1.4
–>选中
Use module compile output path
–>修改两个路径都为刚才创建的class目录 图1.5
5.选择Dependencies选项卡
点击右边的绿色+号–>选择第一项JARs or dirctories–>选择刚才创建的lib文件夹
图1.6
6.接下来配置Tomcat
点击右上角运行健左侧的tomcat标志进入配置Tomcat的窗口:
图1.7
点击左上角绿色+号 ->Tomcat Server->local,创建一个新的Tomcat容器.
–>输入新的服务名
–>点击Application后的”Configure…”按钮,会弹出一个Application Servers按钮,在Tomcat处选择本地Tomcat安装目录即可。(这里会很智能的直接找到你的安装目录,不需要自己去找,很智能)
如果点击绿色加号找不到Tomcat Server,就点一下下方的33 items more,应该是在里面,要是还是找不到的话,一个是搜一下tomcat的安装,再一个可能就是你安装的版本不对
,看看是不是社区版的,这个版本免费但是功能不全,推荐下载旗舰版再**。
图1.8
这个时候你的Tomcat应该是带着一个红色的叉号的,是因为我们还没有配置artifacts
7.接下来在Tomcat上部署我们的项目
首先配置打包方式artifacts,点击Artifacts选项卡
图1.9
接下来,点击Run->Edit Configurations进入Run/Debug Configurations窗口
–>选中上一步配好的Tomcat
–>点击“Deployment”选项卡
–>点击右上角的绿色+号->Artifact…
图1.10
然后变成这样
图1.11
Application context就是这个web访问路径的后续
当我们部署在本地且端口设置为8080时:因为我设置Application context为空,则访问路径为:http://localhost:8080/, 但是当有多个项目要发布时,这样会容易混乱,所以我们一般以项目名为Application context进行区分,则访问路径为 http://localhost:8080/项目名/
到这里配置工作就结束了,接下来开始导出war包
二.导出war包
导出war包主要区别是我们不用它默认的方式,而是选择新的打包方式Artifacts
选项中有web application exploded,这个是以文件夹
形式(War Exploded)发布项目,选择这个,发布项目时就会自动生成文件夹在指定的output directory,
如果选web application archive,就是war包
形式,每次都会重新打包全部的,将项目打成一个war包在指定位置;
因此我们选择web application archive
。
图2.1
完成下面的配置
图2.2
接下来还需要添加Directory Contents,否则会出现打包成功但是在resource下的文件不成功,地址指向web的根目录。
图2.3
图2.4
然后运行项目,就可以在制定路径下找到war包了(路径设置看图2.2)。
三.将war包发布到云服务器及注意事项
1.首先是需要在服务器上将Java-jdk(java编译环境),数据库和Tomcat安装并配置好
图3.1 我的云服务器配置
很多云服务器在购买的时候已经默认安装了jdk和Tomcat,可以先找一下安装路径。但是需要注意的是大多数的云服务器是没有配置环境变量
的,也就是新建CLASSPATH等系统变量需要我们手动操作。
我买的是阿里云的ECS,基础版的,配置很低,(学生的话可以买学生版的,会便宜很多)。我预装的系统就包含了JDK和Tomcat,我有安装了轻量版的数据库MySQL。
有人需要一些上传软件,不知道是不是Linux系统的限制,我都是直接在我这边本地复制然后粘到远程服务器上
就好了(小文件没问题,大文件的话一个是慢,再一个可能会丢包)
将war包复制到tomcat安装路径下的webapps下,重启一下tomcat服务
就会自动将war包解压并发布,在webapps下会出现一个同名文件夹。发布成功。
访问地址是:http://服务器IP:端口号/war包名/
举例;http://30.29.30.216:8080/server/
这里有几个地方主要注意:
1.查看端口是否被占用
首先你需要在阿里云的控制台多开几个常用的端口
(比如80,8080,3306,8888之类的)对于如何开端口百度一下很简单的,这里就不赘述了。
像我就有一个端口(3306)被MySQL占了,用来和server进行互联,80被IIS占用了。8080被我搭建的本地Git库占用了(为了代码的私有性以及协作开发,放置在GitHub的云上就变成纯粹的开源了,一定的保密性是实验室需要)。故而我将8888分配给Tomcat并变成默认端口。
WIN+R 出现运行框,输入cmd敲回车,输入“netstat -a -n”,查看端口是否被占用
图3.2 查看端口占用情况
2.修改Tomcat默认端口
找到tomcat安装路径下的conf路径,找到 server.xml文件,可以用记事本打开(强烈建议下一个Notepad++
,有很多文件是没法正常打开的)
图3.3
修改默认端口
图3.4 将出现了被占用的端口修改成你新开放的端口号
3.tomcat的开始服务是一次性的
在你使用tomcat bin路径下的startup.bat开启服务时,会出现一个黑色的命令窗口,一定要等他运行完,等出现startup时才是开启成功了,不成功的话可以回去再看一下端口是不是被占用了,同时还要注意一下前面自己的项目有没有部署成功。在日志里有写。但是这窗口不能关,一关就把tomcat给关了,很麻烦。
我们需要新建一个tomcat的服务,并使之一直自动开启。在Dos界面下进入Tomcat的解压bin目录下,输入“service.bat install tomcat1”,tomcat1是服务的名字,可以任意修改。
图3.5 路径请换成自己的安装路径
出现上图的结果则安装成功。下面运行bin下的shotdown.bat将服务关掉,然后cmd 输入services.msc,找到这个服务打开并将之设置成自动开启。这样就设置成功了。
这样的话服务器端的配置就差不多完成了。