Java之Tomcat的安装、在eclipse中配置tomcat、配置虚拟主机

Tomcat的核心分为3个部分:
(1)Web容器---处理静态页面;
(2)catalina --- 一个servlet容器-----处理servlet;
(3)还有就是JSP容器,它就是把jsp页面翻译成一般的servlet。

1.******************MAC上使用tomcat:

eclipse使用内置tomcat和使用外部tomcat的设置:https://blog.csdn.net/renxyz/article/details/41311877

创建serverlet报红:https://blog.csdn.net/hagle_wang/article/details/78882430

eclipse中tomcat的运行原理:https://blog.csdn.net/suhang1992/article/details/82838341

参考一:https://blog.csdn.net/qq_35106903/article/details/78860121

参考二:https://blog.csdn.net/feng2qing/article/details/60968548

参考三:环境变量的配置https://www.jianshu.com/p/2d71aeb2c534

https://blog.csdn.net/xiaota00/article/details/78429924

安装tomcat步骤:

tomcat官网:https://tomcat.apache.org/download-90.cgi下载tomcat软件

查看tomcat版本,cd到tomcat bin目录,然后sh catalina.sh version


资源库有好几个:system下的资源库一般不要动,硬盘下的资源库是针对本机的,user下的资源库是针对本用户的。

**解压吧文件夹名字改成自己想要的(为了方便使用把这里把解压后的apache-tomcat-7.0.82重新命名为apachetomcat.),例如apachetomcat,放到资源库文件夹下面(/Users/自己的计算机名,例如 lambo/Library(就是资源库)/目录下),也可以放到自己想要的任何位置。

**对目录进行权限设置:(sudo chmod 755 你Tomcat的位置/bin/*.sh)

打开终端输入  sudo chmod 755 Library/apachetomcat/bin/*.sh  回车,设置文件的读写执行权限;(这里需要输入管理员密码)

注释:sudo通常为系统超级管理员755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。777代表,user,group ,others ,都有读写和可执行权限。

**启动tomcat

cd /Users/HaokeMaster/Library/apachetomcat/bin

执行 ./startup.sh

如果启动完成就会出现相应的提示:Tomcat started.

如果出现:-bash: ./startup.sh: Permission denied说明缺少权限;需要用命令chmod 修改一下bin目录下的.sh权限,

修改权限:chmod u+x *.sh

再执行 ./startup.sh

**测试tomcat是否启动成功:http://localhost:8088/

**关闭tomcat

./shutdown.sh有时候会关闭失败。解决办法:https://blog.csdn.net/bobozai86/article/details/93722270

tomcat的大概关闭过程:
1 停止连接处理线程Accepter,停止接受新的请求
2 关闭tomcat自身的资源,例如各种service,连接器,protocol,container
3 然后tomcat主线程结束了,就是执行BootStrap这个类的线程

这是一个平滑关闭的过程,但是什么时候会导致所谓”tomcat无法关闭”?要更正一点,不是tomcat无法关闭,是执行tomcat的这个jvm无法关闭,这是本质的不同。

最根本的原因是:当前运行tomcat的jvm里还有非deamon的线程没有结束执行,例如被阻塞,或者还在执行任务。这个现象就是tomcat 端口都已经关闭了,但是java进程还在。tomcat的停止只是结束了自己的线程,关闭了自己的资源。但是应用开启的非deamon线程,这个 tomcat是无能为力的。

解决办法一:

第一步:修改Tomcat bin目录下catalina.sh文件 ;找到

1

 PRGDIR=`dirname "$PRG"`

这一行下面追加代码,(是为了记录pid进程号)

1

2

3

4

if [ -z "$CATALINA_PID" ]; then

     CATALINA_PID=$PRGDIR/CATALINA_PID

     cat $CATALINA_PID

fi

  第二步:修改Tomcat bin目录下shutdown.sh文件;最后一句修改为如下

1

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

即添加了参数 -force

*******问题:1.有时候tomcat启动成功了,但是localhost:8080访问不了,尝试改端口号和设置权限:chmod 777 *.sh  

2.非正常停止服务启动报错为:

Existing PID file found during start. 

Removing/clearing stale PID file.

使用kill -9 暴力杀死了tomcat,再启动的时候,会出问题,需要删除tomcat的pid文件

彻底停止tomcat的进程,然后删除pid文件

rm -rf  /export/servers/xxxx/temp/oozie.pid

 

解决办法二,按下面步骤修改:

ps命令将某个进程显示出来

grep命令是查找

中间的|是管道命令 是指ps命令与grep同时执行

PS是LINUX下最常用的也是非常强大的进程查看命令

grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

以下这条命令是检查java 进程是否存在:ps -ef |grep java

字段含义如下:
UID       PID       PPID      C     STIME    TTY       TIME         CMD

zzw      14124   13991      0     00:38      pts/0      00:00:00    grep --color=auto dae

 

UID      :程序被该 UID 所拥有

PID      :进程号;就是这个程序的 ID 

PPID    :则是其上级父程序的ID

C          :CPU使用的资源百分比

STIME :系统启动时间

TTY     :登入者的终端机位置

TIME   :使用掉的CPU时间。

CMD   :所下达的是什么指令

使用命令ps -ef | grep tomcat 来查看tomcat是否还在运行。(也可以查看进程:lsof -i :80,杀死进程:kill 端口号)

如果你想直接杀死Tomcat进程,你可以使用kill命令,直接杀死Tomcat进程:kill -9 进程号。出现 501 78293  5223   0  4:27下午 ttys000    0:00.00 grep tomcat说明关闭成功。

修改下Tomcat内存,切换到bin目录下面,使用:vim catalina.sh

修改catalina.sh文件,在位置cygwin=false前,插入以下内容:

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

重启Tomcat即可。

*****配置环境变量

touch ~/.bash_profile      // 将目录跳转到.bash_profile这个文件夹 
open -t ~/.bash_profile  //打开.bash_profile文件 

这时候会弹出一个新的窗口输入,注意最后要加上/bin
export PATH=$PATH:/Users/HaokeMaster/Library/apachetomcat /bin
sudo su 申请权限(如果有权限,可以省略)
startup.sh 启动tomacat
shutdown.sh 关闭

 

***查看tomcat版本信息:sh catalina.sh version

*****在eclipse中配置tomcat:https://blog.csdn.net/zsjzwd/article/details/76551947https://blog.csdn.net/mlyjqx/article/details/82285939

eclipse中找不到Server的解决办法:https://blog.csdn.net/qq_37471298/article/details/80980006

菜单栏eclipse-->preference->server-->Runtime Enviroment-->add选择tomcat的版本,然后一直next,(其中要填写tomcat的安装路径)->finish。

eclipse 中启动服务器注意事项:https://blog.csdn.net/zs20082012/article/details/79138204

**tomcat的目录结构:

 /bin 用于Tomcat的命令文件,比如startup.bat和shutdown.bat;/conf 用于存放Tomcat服务器的配置文件; /lib 用于存放Tomcat服务器所需的Jar文件; /logs 用于存放Tomcat的日志文件; /temp 用于存放Tomcat运行时的临时文件;/webapps 当发布Web应用时,默认会将Web应用的文件发布到此目录;/work Tomcat把由Jsp生成的Servlet放于此目录下.

1>bin:存放tomcat命令

2>conf:存放tomcat配置信息,里面的server.xml文件是核心的配置文件

3>lib:支持tomcat软件运行的jar包和技术支持包(如servlet和jsp)

4>logs:运行时的日志信息

5>temp:临时目录

6>webapps:共享资源文件和web应用目录

7>work:tomcat的运行目录.jsp运行时产生的临时文件就存放在这里

 

***修改端口号:

用记事本打开ApacheTomcat的conf目录下的server.xml文件,将以下语句的port值8080改为自定义的端口号:

<Connector port="新端口号" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

 

**添加服务器密码:

conf目录的tomcat-users.xml文件里</tomcat-users>上面加入以下代码:

<role rolename="manager-gui"/>

<user username="tomcat" password="tomcat" roles="manager-gui"/>

 

*********部署tomcat,运行第一个程序总结:

1.下载tomcat,放到自己指定的目录。

2.配置环境变量

3.本地启动tomcat,测试(本地启动和eclipse启动只能有一个)

4.在eclipse中部署tomcat,菜单栏-》preferences-〉Server-》Runtime Enviroment-〉add-》选择tomcat的版本-〉next-》填写name,选择tomcat的安装路径,jre可以默认也可以自己指定-〉finish

5.创建一个Dynamic web project,最后勾选上创建web.xml的选项。在WebContent目录下面创建html,jsp等文件(这几个文件在web。xml中的<welcome-file-list>下都有配置,index。jsp优先级最高)

6.吧上一步创建的project部署到tomcat。菜单栏window-》show view-〉servers-》(如果控制台地下有server了,需要删除后重新创建才能吧当前项目配置到服务器上),吧项目add,-》finish。这是在(默认是放在工作空间里的.metadata文件夹下)部署完成,在控制台下面的tomcat,右键start,然后选择左边的项目run on server启动项目。

7.双击控制台下的tomcat,serverlocation下选择use tomcat inition,指定deploy path(项目部署的位置,例如webapps)。重新运行程序。现在来到Tomcat的webapps目录下,发现多了一个XX文件夹(即工程文件名),并且文件夹下包含了工程文件中WebContent的内容。

eclipse默认的部署路径是wtpwebapp;Tomcat默认的部署路径是webapp;吧打好的war包放到webapp,重启tomcat,war包会被tomcat自动解压成同名的文件夹。

*******配置虚拟主机**********

1.在windows中:

 

2.在mac中:

名词解释:

unpackWARs="true"    自动解压war包

autoDeploy="true"       自动部署应用

path =""        虚拟路径

docBase =“”    真实路径

appBase=""       虚拟主机地址

<Host></Host>           虚拟主机

<Context/>       web应用

server.xml      tomcat的虚拟主机配置文件 (也可以在/Users/HaokeMaster/Downloads/apachetomcat/conf/Catalina/中配置虚拟主机,创建的文件夹名就是虚拟主机名,虚拟主机文件下可以创建xml文件配置虚拟目录)

Hosts        window中的用于模拟DNS服务的配置,能配置缺省地址127.0.0.1 为某个域名,这样当访问这个域名的时候,浏览器会先从本机Hosts中进行查询,查询到则跳转到应用,查询不到则到外部DNS解析器中去解析。

appBase指定虚拟主机的目录,其作用是指定 tomcat 启动时,第一加载的项目,默认的为 webapps ,它代表的意思是加载 tomcat 根目录下 webapps 文件夹中的项目,也就是 tomcat 的管理页。

Context(表示一个web应用程序)   :是一个虚拟主机目录下的一个应用程序,代表了运行在<Host>上的单个Web应用,用于将本地文件系统中的一个目录,映射成一个可供Web浏览器访问的虚拟根目录。一个<Host>可以有多个< Context>元素,每个Web应用必须有唯一的URL路径,这个URL路径在<Context>中的属性path中设定。 
<Context>中的docBase,就是应用的物理路径, 应用程序的路径或者是WAR文件存放的路径。其作用是当需要发布多个项目时,可以在这里设置项目路径,值可以是绝对路径,也可以时相对于appBase的路径。用于指定该虚拟路径,所映射到的本地文件系统目录,可以使用绝对路径,或者相对于<Tomcat安装目录>/webapps的相对路径。

<Host>元素中的 appBase属性指定了一个路径,该路径将作为嵌套在它里面的<Context> 元素的docBase属性中设置的相对路径的基准路径。

path就是做的映射,path必须以 "/" 开头,否则会报错,当path=" "时,docBase所指向的项目就是第一加载项目。表示此web应用程序的url的前缀,用于指定Web应用的虚拟路径 ,和项目本身没有关系,可以是任意值。

在设置appBasedocBase有个地方需要注意,当appBase的根路径和docBase的根路径一致时,会导致项目重复加载。

reloadable    这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序。在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web 应用的发存阶段将reloadable设为false。

注意,修改后的server.xml文件,不会立即生效,必须重启Tomcat服务器 
重启Tomcat服务器,刷新浏览器

举例说明:

1、appBase="webapps“,这是默认值,相对路径,代表:/Users/HaokeMaster/Downloads/apachetomcat/webapps 这样的路径,就是根目录;根目录下的 ROOT 目录,代表默认的主目录。
访问: http://localhost:8088 默认找 /Users/HaokeMaster/Downloads/apachetomcat/webapps/ROOT 下的文件(前提是没有设置docBase)

2、appBase=“/Users/HaokeMaster/Downloads/apachetomcat/webapps”,绝对目录,访问 http://localhost:8088 返回ROOT目录内容,访问http://localhost:8088/test返回/Users/HaokeMaster/Downloads/apachetomcat/webapps/test目录内容。

3、appBase=“webapps/abc”,相对目录,访问 http://localhost:8088 默认返回/Users/HaokeMaster/Downloads/apachetomcat/webapps/abc/ROOT的内容;访问http://localhost:8088/test返回/Users/HaokeMaster/Downloads/apachetomcat/webapps/abc/test的内容。

4、添加路径指向docBase后,appBase 作用变化: 
docBase=“test”, 访问的是 /Users/HaokeMaster/Downloads/apachetomcat/webapps/test, appBase为根目录;
docBase="/test", 访问的是 /Users/HaokeMaster/Downloads/apachetomcat/webapps/test,appBase为根目录;

   ***虚拟目录的配置:

我们通常将web应用直接放到tomcat/webapps中,然后通过输入http://localhost:8080/项目名/index.html就可以访问到index.html页面。当有时我们需要将web应用和tomcat服务器进行分离。那我们该怎么做呢?我们可以配置虚拟目录。
配置虚拟目录的方法官方提供了五种。https://blog.csdn.net/zxssoft/article/details/80723298

方法一:apachetomcat/conf/server.xml中:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>

      <Context docBase="/Users/HaokeMaster/Downloads/apachetomcat/webapps/testoness" path="/mytestone" reloadable="true" source="org.eclipse.jst.jee.server:testoneones"/>
       <Context docBase="/Users/HaokeMaster/Downloads/apachetomcat/webapps/testoness" path="/mytesttwo" reloadable="true" source="org.eclipse.jst.jee.server:testoneones"/>
      </Host>

上面是配置了两个虚拟目录,http://localhost:8088/mytestone/http://localhost:8088/mytesttwo/都可以访问。path中的虚拟路径就代表了docbase中的物理路径。

 

方法二:tomcat引擎是Catalina。在apachetomcat/conf/Catalina/虚拟主机(例如localhost)/test.xml(test就是虚拟目录)

*****虚拟主机的配置:

请求的过程:

1.基于IP 配置虚拟主机,不同的ip地址代表不同的主机,

更改重定向:sudo vi /etc/hosts ->按i进入编辑模式 ->编辑完成esc->:wq 回车完成。

把host中的name改成要配置的虚拟主机域名,用http://www.etaofresh.com:8088/mytesttwo就可以访问了

 <Host appBase="webapps" autoDeploy="true" name="www.etaofresh.com" unpackWARs="true">
          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
          
    
          <Context docBase="/Users/HaokeMaster/Downloads/apachetomcat/webapps/testoness" path="/mytesttwo" reloadable="true" source="org.eclipse.jst.jee.server:testoneones"/>
      </Host>

 

如果有缓存的话,先关闭服务器./shutdown.sh  再开启./startup.sh  

2.基于端口配置虚拟主机,相同的域名或者ip地址,不同的端口,Service可以多个一样,只改变里面的端口



<Service name="">
    <Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443"/>
        <Host appBase="" autoDePloy="true" name="www.etaofresh.com" unpackWARs="true">
            <Context path="" docBase="" />
      </Host>
  </Service>

3.虚拟主机也可以配置在apachetomcat/conf/Catalina/虚拟主机(主机域名就是文件夹名)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值