Mac配置Apache +Tomcat

Apache+Tomcat 简单理解

web服务器(静态解析,如HTML),并且通过配置也可以支持PHP 通过 http://localhost/ 打开默认?面

java应用服务器(动态解析,如JSP) Tomcat可以独立于apache运行,同为服务器,Tomcat的特别之处在于它还是Java的Web容器,能够处理JSP;而Apache一般是与PHP结合,并不能处理JSP。 通过 http://localhost:8080 打开默认?面

总结:

如果客户端请求的是静态?面,则只需要Apache服务器响应请求 如果客户端请求动态?面,则是Tomcat服务器响应请求(因为jsp是服务器端解释代码的,这样整 合就可以减少Tomcat的服务开销)

一、安装Apache服务器

1、启动Apache

// 在mac查看Apache是否安装
打开Mac的终端,输入下面的命令,开启Apache服务(因为sudo是系统管理命令,所以需要输入Mac密码):

Air ~ % sudo apachectl -v
Password:
Server version: Apache/2.4.48 (Unix)
Server built:   Oct  1 2021 20:08:18

// 开启Apache服务

Air ~ % sudo apachectl start  // 开启
Air ~ % sudo apachectl restart   // 重启
Air ~ % sudo apachectl stop   // 停止

查看Apache服务是否开启成功,在浏览器中输入:localhost:80(80是默认端口),如果浏览器中显示 It Works!则证明Apache服务开启成功。


image.png

2、改变Apache服务的端口

Apache服务默认安装路径:/etc/apache2,进入Apache的安装目录,打开httpd.conf,搜索Listen 80,修改成你想要的端口号即可。(注:对配置文件修改过后要一定要重启Apache服务)


image.png

image.png

image.png

image.png

3、Apache服务默认项目目录

Apache服务部署路径在 /Library/WebServer/Documents 目录下,使用快捷键command+空格 后输入:/L 后回车,进入Library(资源库),进入到/WebServer文件夹下的Documents目录就是Apache服务的部署路径,项目需要放在此目录下。

4、改变Apache服务默认项目部署路径

修改默认部署路径,可以在/etc/apache2目录下找到并打开httpd.conf文件,找到 DocumentRoot ,更改路径即可,然后重启服务。


image.png

二、配置Tomcat服务器

1、下载tomcat

登录Apache Tomcat官网,地址 http://tomcat.apache.org,点击左边的Download,下载右边Core下的第一个资源zip。

image.png

2、设置本地放置路径

下载后解压下来重名名为ApacheTomcat,并放到磁盘的/usr/local下:打开Finder—>前往文件夹—> /usr/local/ 目录下,把下载下来包解压,之后然后命名为apache-tomcat8,放进来这里。


image.png

image.png

image.png

image.png

image.png

3、启动Tomcat

打开终端,切换路径到apache-tomcat8的bin目录下并执行启动文件:

Air ~ % cd /usr/local/apache-tomcat8/bin/
Air bin % ./startup.sh

如果提示Permission denied:那是因为没有.sh的权限。

zsh: permission denied: ./startup.sh

可以使用下面的chmod命令开放所有.sh文件权限:

Air bin % chmod u+x *.sh

再次执行 startup.sh 即可启动服务

Air bin % ./startup.sh  
Using CATALINA_BASE:   /usr/local/apache-tomcat8
Using CATALINA_HOME:   /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH:       /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

打开我们的浏览器,然后网址输入 http://localhost:8080/,如果出现一只猫,则证明配置成功~

image.png

4、修改使用的端口号

如果使用的端口号8080不能使用,可通过修改conf文件下的server.xml配置文件来使用其他端口:

image.png

修改69行的port为新的端口号(以8090为例)
修改前
image.png

修改后
image.png

重新启动服务,在浏览器中访问http://localhost:8090/

Air bin % ./shutdown.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat8
Using CATALINA_HOME:   /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH:       /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

Air bin % ./startup.sh 
Using CATALINA_BASE:   /usr/local/apache-tomcat8
Using CATALINA_HOME:   /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH:       /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
image.png

5、配置Tomcat应用管理GUI用户

打开conf文件夹下的tomcat-users.xml 添加一个用户:

image.png

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

image.png

重新启动服务,访问 http://localhost:8090 , 点击Manager App:

Air bin % ./shutdown.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat8
Using CATALINA_HOME:   /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH:       /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
liying@liyingdeAir bin % ./startup.sh 
Using CATALINA_BASE:   /usr/local/apache-tomcat8
Using CATALINA_HOME:   /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH:       /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
image.png

输入用户名与密码,即刚设置的 tomcat 与 tomcat8


image.png

image.png

6、Tomcat的目录结构及作用

|- bin:存放tomcat的命令。

catalina.bat命令:

startup.bat-> catalina.bat start

shutdown.bat- > catalina.bat stop

|- conf:存放tomcat的配置信息。其中server.xml文件是核心的配置文件。

|-lib:支持tomcat软件运行的jar包。其中还有技术支持包,如servlet,jsp

|-logs:运行过程的日志信息

|-temp:临时目录

|-webapps:共享资源目录。web应用目录。(注意不能以单独的文件进行共享)

|-work:tomcat的运行目录。jsp运行时产生的临时文件就存放在这里

|- WebRoot :web应用的根目录

|-静态资源(html+css+js+image+vedio)

|-WEB-INF:固定写法。

|-classes:(可选)固定写法。存放class字节码文件

|-lib:(可?。┕潭ㄐ捶ā4娣舑ar包文件。

|-web.xml

注意:

1)WEB-INF目录里面的资源不能通过浏览器直接访问

2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中。

7、Tomcat_web.xml配置详解

tomcat生命周期 :web.xml的加载过程是context-param >> listener >> fileter >> servlet

  1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>
  2. 紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
  3. 容器将<context-param></context-param>转化为键值对,并交给ServletContext.
  4. 容器创建<listener></listener>中的类实例,即创建监听.

web.xml标签

<context-param>

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:/applicationContext*.xml
        </param-value>
    </context-param>

作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。param-name 设定上下文的参数名称。必须是唯一名称param-value 设定的参数名称的值

<listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

作用:只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等 例子表示初始化Spring上下文

常用监听:

  1. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> :spring自动装配application

  2. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>:Spring 刷新Introspector防止内存泄露

    <filter>

<filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>xxxxx.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

作用:针对url配置的过滤器类

<session-config>

<session-config>
        <session-timeout>2</session-timeout>    //2分钟后session失效
    </session-config>
  • 优先级:Servlet中API设置 > 程序/web.xml设置 > Tomcat/conf/web.xml设置

<error-page>

    <error-page>
        <exception-type>java.lang.Throwable</exception-type>    //没有处理此类异常进入
        <location>/common/500.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/common/500.jsp</location>
    </error-page>

作用:系统的最后屏障,对某些异常和异常状态码的最后检测防止系统进入不可预计的页面

<jsp-config>

作用:配置Jsp页面相关信息

  • <taglib>:自定义标签库

记得重启tomcat,终端输入:brew services restart tomcat

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容