Ubuntu 18服务器配置jdk 11和Tomcat 9

一、Ubuntu 18服务器配置jdk 11

1.1 jdk版本选择

JDK8 终止更新,JDK9, 10都是短期支持版本,只有最新的JDK11才是一个长期支持版本,所以大家直接用JDK11即可。

Oracle 将发布两个不同版本,分别为 Oracle JDK 和 OpenJDK 「除了所附带的许可文件不一样,刚发布的版本几乎完全相同」。

  • 对于 Oracle JDK 来说,支持 BCL 协议,开发人员可以免费使用,但不能用于生产,如果全额付费的话,可支持到 2026 年 9 月。
  • 对于 OpenJDK 来说,支持 GPL 协议「一般只支持到发布的前 6 个月内」,可以用于公司使用。

开源选择就是OpenJDK了,以后商务及开源的区别会越来越明显。此外,Android已开始采用OpenJDK。

参考jdk各个版本的区别介绍:https://www.jianshu.com/p/38985b61ea83

1.2 JDK 11配置

(1)将下载的压缩包移动到用户主文件夹,解压缩,并移动到/usr/java目录下。

tar -zxvf jdk-11.0.1_linux-x64_bin.tar.gz
sudo mkdir /usr/java
sudo mv jdk-11.0.1_linux-x64_bin /usr/java

 (2)JDK 11 修需要配置的内容如下:

JAVA_HOME jdk目录

Path %JAVA_HOME%\bin;

Linux打开环境变量方法:

(1)用户主目录下的配置文件,该方式添加的变量只对当前用户有效:没有gedit,肯定有vim或vi。

sudo gedit ~/.bashrc

sudo gedit ~/.profile

export JAVA_HOME=/usr/java/jdk-11.0.1 
export PATH=${JAVA_HOME}/bin:$PATH

环境变量生效:

source~/.profile

source ~/.bashrc 

(2)系统目录下的配置文件

sudo gedit /etc/profile 

source /etc/profile 

同上述用法。

sudo gedit /etc/environment

找到以下的 PATH 变量: 
PATH="<......>" 
修改该 PATH 变量,在其中加入自己的path即可,例如: 
PATH="<......>:your path1:your path2 …" 
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。 注意这里不是添加export PATH=… 。 

(3) 终端添加临时环境变量

sudo export PATH="$PATH:your path1:your path2 …" 
这种方式变量立即生效,但用户注销或系统重启后设置变成无效,适合临时变量的设置。 

注:

(1)JDK11不需要设置jre环境变量,JRE包含在JDK中,另外如果有需求的话(比如运行在JAVA虚拟机的app需要指定jre路径),JDK专门提供工具jlink用于在JDK中提取JRE。也可以单独再下载一个jre更方便版本管理(推荐稳定版的jre8)。

(2)实际上,JDK 1.4之前版本的JDK编译和运行才需要设置CLASSPATH环境变量,但是1.5及以后的版本都不需要配置。

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

 dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下,其中:

rt.jar是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件;dt.jar是关于运行环境的类库;

tools.jar是工具类库,编译和运行需要的都是toos.jar里面的类,分别是sun.tools.java.*; sun.tols.javac.*。

1. rt.jar
    rt.jar 默认就在Root Classloader的加载路径里面的,而在Claspath配置该变量是不需要的;同时jre/lib目录下的

    其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中

2. tools.jar

    tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到

    javac XXX.java

    实际上就是运行

    java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

    javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面

3. dt.jar
    dt.jar是关于运行环境的类库,主要是swing的包   在用到swing时最好加上。

二、Ubuntu 18服务器配置Tomcat 9

2.1 Tomcat 配置 

(1)下载Tomcat 9,如上图所示。

(2)解压压缩文件,并移动到/usr/tomcat9

tar -zxvf apache-tomcat-9.0.14.tar.gz
sudo mkdir /usr/tomcat9
sudo mv apache-tomcat-9.0.14 /usr/tomcat9

(3)配置环境变量(好像没啥用,不配置也能用)

(4)配置脚本文件

tomcat有两种启动和关闭方式。

1、catalina.sh

sudo ./bin/catalina.sh start

sudo ./bin/catalina.sh stop

调试

catalina.sh debug

2、startup.sh和shutdown.sh

sudo ./bin/startup.sh

sudo ./bin/shutdown.sh

其中需要修改这几个脚本文件:

sudo vi ./bin/startup.sh

sudo vi ./bin/shutdown.sh

或者

sudo vi ./bin/startup.sh

好像配置CATALINA_HOME也没啥用,不配置也能用。

(5)启动和关闭

启动和关闭方式如第四步所示,如果不配置脚本,则会提示错误。

三、 部署web项目

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。

3.1  静态部署

静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。

3.1.1 利用Tomcat自动部署(项目直接放入 webapps 目录中)

这种方式不被推荐,项目不好管理,而且需要链接加上项目名才能正常访问。

1、直接将web项目文件拷贝到webapps目录下
       可以直接将web项目下WebRoot目录( 标准web应用根目录下的所有文件:如果IDE是eclipse,内容默认是WebContent目录下的所有文件,如果是myeclipse,默认是WebRoot目录下的所有文件)下所有内容复制到tomcat安装目录下的webapps目录,这个webapps目录是Tomcat目录的默认应用目录,webapps目录下的每个文件夹都是一个应用可以直接放一个index.html作为静态网页),当tomcat服务器启动时候,会加载webapps目录下所有应用。比如一个web项目TT,直接将TT项目的WebRoot目录下所有内容复制,然后在webapps目录下新建一个TT目录,然后将复制的内容粘贴到webapps目录下新建的TT目录下。 

或1、将编写并编译好的web项目(注意是编译好的),放入到 webapps 中。

war包的生成:

  • 如果是idea中,使用maven project中的install命令(一般可以先clean一下)
  • 如果是 eclipse,可以将项目打成 war 包放入

2、启动tomcat服务器(双击 bin 目录下的 startup.bat,启动服务器)。Tomcat启动时将自动加载应用。

3、在浏览器输入:http://localhost:8080/项目名/访问的文件名即可。

        对于webapps这个tomcat默认的应用存放的目录是可配置的但必须是启动Tomcat之前才行),打开Tomcat安装目录下conf目录下server.xml文件找到的如下代码:

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

       将appBase修改即可,改写tomcat的默认应用目录。比如改变为webs,那么启动Tomcat后立即在tomcat安装目录下新建一个叫webs的文件夹作为tomcat 应用目录,原来的部署在webapps目录下的应用都访问不到了,比如讲web应用复制到webs目录下才能访问到。

       这种方式比较简单,但是web应用程序必须在webapps目录下。Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。

注: Web应用以.war文件的形式部署

       将JSP程序打包成一个war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个Web程序的所有内容进行压缩得到。

打包请参考如下步骤: 
    1、打开命令提示符(cmd) 
    2、设置jdk环境变量  
    3、在命令提示符中进入项目文件夹F:/PetWeb后,键入如下命令:jar cvf Pet.war */ .   (注意最后有个“. ”)。这样在F:/PetWeb下应该有Pet.war文件。 (也可以打包到指定的地方,命令如下:jar cvf d:/Pet.war */ . 

       部署Pet.war文件非常简单,将刚才xml文件中的docBase ="F:/PetWeb" 更改为docBase ="F:/Pet.war" 或者直接将其拷贝到webapps目录下就可以。然后重新启动服务器就可以将Pet.war部署为一个Web应用程序了。服务器将Pet.war文件解开,并且在webapps下面又生成了一个Pet文件夹,然后把Pet.war的内容拷贝到里面去了。我们可以通过以下方式取消自动解压缩,将xml配置文件中的unpackWAR 属性设置为"false" 即可。

3.1.2 修改 conf/server.xml 文件(官方不推荐)

在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。这种方式可以不必将web目录拷贝到webapps下,直接在当前目录即可部署。方法如下:

1、打开tomcat下conf/server.xml(也可以修改默认端口号等),在<Host> </Host>标签节点之间输入项目配置信息

<Context path="/WebProject" docBase="D:/WebProject" reloadable="true" workDir ="D:/temp" />

  • path:浏览器访问时的路径名(虚拟路径)。是访问时的根地址,表示访问的路径:http://localhost:8080/WebProjec/
  • docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径(物理路径),不是项目的路径。其实也就是编译后的项目。表示应用程序的路径,注意斜杠的方向“/”。 docBase可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps。
  • workdir:表示缓存文件的放置地址。工作目录,存放运行时与工程相关的文件
  • reloadble:设定项目有改动时,tomcat是否重新加载该项目。表示可以在运行时在classes与lib文件夹下自动加载类包。其中reloadable="false"表示当应用程序 中的内容发生更改之后服务器不会自动加载,这个属性在开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度

    为true时,支持热部署,会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序。
    antiResourceLocking和antiJARLocking: 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。

2、双击 startup.bat,启动 tomcat 服务器,然后在浏览器输入访问的项目名称路径

3.1.3 增加自定义web部署文件(推荐使用,不需要重启Tomcat )

        以上两种方法,Web应用被服务器加载后都会在Tomcat的conf\catalina\localhost目录下生成一个XML文件,其内容如下:
<Context path="/admin" docBase="${catalina.home}/server/webapps/admin" debug="0" privileged="true"></Context>  

       这种方式和方法2差不多,但不是在Server.xml文件中添加Context标签,而是在$CATALINA_HOME/conf /Catalina/localhost中添加一个xml文件,如Pet.xml。在Tomcat安装目录conf/Catalina /localhost下,里面有Tomcat自带的三个应用,随意复制其中的一个XML文件,然后修改docbase指向你自己的应用程序,并把文件名改名,各参数参见方法2中的<Context>标签的参数,或者你也可以自己新建一个XML文件。(注意此文件名将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的 ),将以下内容复制过去,修改相应路径即可。

1、进入到conf\Catalina\localhost 目录,新建一个 项目名.xml 文件

2、在 那个新建的 xml 文件中,增加下面配置语句(和上面的是一样的,但是不需要 path 配置,加上也没什么用)

<Context  docBase="D:/WebProject" reloadable="true" />

3、在浏览器输入路径:localhost:8080/xml文件名/访问的文件名 

说明Catalina\localhost目录tomcat下载下来默认是没有的,首次启动会自动创建,也可以手动创建;配置中去掉path属性,因为配了也没用,访问项目时的根路径只取决于XML文件的名称;如果没有WebContent目录,内容直接放在项目根目录下,那这个xml文件按理就需要命名为“.xml”,要是人为这么命名,操作系统是不允许的,但是用tomcat插件部署确可以做到,比较神奇。

总结:

①、第一种方法比较普通,但是我们需要将编译好的项目重新 copy 到 webapps 目录下,多出了两步操作

②、第二种方法直接在 server.xml 文件中配置,但是从 tomcat5.0版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目

③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。

而且不需要修改tomcat默认配置,并且如果想取消部署,直接删除xml配置文件即可。

④、种方法有个优点,可以定义别名。服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。

种还有优点,可以定义一些个性配置,如数据源的配置等。

⑤、Tomcat中的Context元素代表一个web应用,运行在某个特定的虚拟主机上。一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。另外,你必须定义一个context路径长度为0的Context,这个Context称为该虚拟主机的缺省web应用,用来处理那些不能匹配任何Context的Context路径的请求

通常我们使用第三种方法。

注意:删除一个Web应用同时也要删除webapps下相应的文件夹中内容,配置文件server.xml中相应的Context,还要将Tomcat的conf\catalina\localhost目录下相应的xml文件删除。否则Tomcat仍会按照配置去加载。

3.1.4 配置 conf/context.xml

但 tomcat 5.5之后独立出了context.xml,并且官方不再提倡修改server.xml。打开conf/context.xml可以看到里面已经配置了一个Context。如果一个Tomcat只配置一个Web应用程序, 则可以直接修改这里的代码:

<Context path="/hello" docBase="war包解压路径" reloadable="true" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>

3.2 动态部署

动态部署是指可以在服务器启动之后部署web应用程序,而不用重新启动服务器

3.2.1 在 http://localhost:8080 里管理应用并动态发布

       动态部署要用到服务器提供的manager.war文件,如果 在$CATALINA_HOME/webapps/下没有该文件,你必须去重新下载tomcat,否则不能完成以下的功能。要想使用该管理程序必须首先编辑$CATALINA_HOME/conf/tomcat-users.xml文件,内容如下:

<tomcat-users> 
<role rolename="tomcat"/> 
<role rolename="role1"/> 
<role rolename="manager"/> 
<user username="coresun" password="coresun" roles="manager"/> 
<user username="tomcat" password="tomcat" roles="tomcat"/> 
<user username="both" password="tomcat" roles="tomcat,role1"/> 
<user username="role1" password="tomcat" roles="role1"/> 
</tomcat-users>

然后在浏览器中键入如下地址:http://localhost:8080/ ,应该看到一个加菲猫了吧。点击左边的Tomcat Manager链接,提示输入用户名和密码,本文都是coresun ,然后可以看到以下页面:

(1)Context Path(option): 中输入/Pet
(2)XML Configration file URL 中要指定一个.xml文件,比如我们在F:/下建立一个Pet.xml文件,内容如下:<Context  reloadable ="false" 。docBase 不用写了,因为要在下一个文本框中填入。或者更简单点,这个文本框什么都不填。
(3)WAR or Directory URL: 中键入F:/PetWet或者F:/Pet.war都可以,然后点击Deploy按钮,看看上面是不是已经看到了你web应用程序,名字就是你Context Path(option):中的名字。
(4)如果你部署.war文件还有更加简单的方式,下面还有个Select WAR file upload 点击浏览选择.war文件,然后点击Deploy也可以。

让tomcat只运行conf/server.xml中指定的web应用

可以有以下2种办法:

实现一: 

1)将要部署的WEB应用放在webapps以外的路径, 并在server.xml相应的Context  中的docBase 指定. 

2)删除webapps中的所有文件夹, 以及conf/catalina/localhost下所有xml文件. 
注: webapps是server.xml中的Host  元素的appBase 属性的值.

实现二: 

修改server.xml中Host  元素的属性, 添加或修改: deployXML ="false" deployOnStartup ="false" autoDeploy="false"

含义: 
     deployXML ="false" : 不部署conf/catalina/localhost下的xml相应的WEB应用

     deployOnStartup ="false" :tomcat启动时, 不部署webapps下的所有web应用

     autoDeploy ="false"  :避免tomcat在扫描改动时, 再次把webapps下的web应用给部署进来.

注:

Tomcat中webapps目录下不能直接存放网页格式的文件,否则无法访问到该文件,必须有子目录才能访问该网页文件。
例如:我们直接将index.html放在webapps目录中,通过浏览器http://localhost:8080/index.html 是无法访问到index.html的。而必须要webapps/petweb/index.html才可以通过http://localhost:8080/petweb/index.html 访问到index.html页面。

3.3 注意

       配置war包名称。默认的war包名是构件id加上版本号。如果要改成其他名字可以在pom.xml的<build>标签下加上<finalName>name</finalName> 其中填写的name就是最终生成的war包名,如此例子下为name.war

       在windows服务器上将tomcat注册成系统服务。用命令行窗口进入到tomcat bin目录下,这个目录下有个service.bat文件,这个文件就是为了将tomcat注册成系统服务准备的。执行
service.bat install Tomcat8 后面的Tomcat8是服务的名称,可以自己取。如果取消服务,可以
service.bat remove Tomcat8。注册成系统服务后就可以用net start Tomcat8和net stop Tomcat8来启动或关闭Tomcat。

三、结果

windows系统的配置更为简单,只需要解压,设置环境变量即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值