Apache 的安装与使用

Apache 的安装

1. 先下载 Apache 服务器,进入 Apache 官网 进行下载,点击 Apache httpd 下的 Download 进行下载。

2. 接下来根据系统进行下载,上面 Source 用于 Linux 系统下载。由于作者使用 Windows 系统,所以点击下面的 Windows 下载按钮。

3. 在下一页面我们往下拉能进行版本选择,此处我们选择 VS16 进行下载。Note 提示有提到不适用于 Windows XP 跟 Server 2003,现在几乎都看不到这两个系统了,所以直接以该版本为例。

4. 进入下一页面进行下载,下载完后直接解压到电脑上。目录可以自己进行设置。此处作者 Apache 根目录设置为 H:\Apache\Apache24。

5. 接着到根目录下打开 conf\httpd.conf 文件来配置服务器。跳转到如图所示文件位置,上面改成 Apache 的根目录配置成环境变量,文件下面内容中要使用根目录时都是使用 ${SRVROOT} 来指向该变量。下面用于设置端口,80 端口一般不会被占用,假如被占用,可以改成其它端口。

6. 配置好后接下来就得把 Apache 安装到 Windows 服务中,先以管理员身份打开命令提示符,然后到 Apache 根目录的 bin 文件夹下,执行命令 httpd -k install -n Apache 来安装服务。

7. 安装成功后我们能在 Windows 的服务窗口里面看到 Apache 服务。我们可以按 win + r 快捷键打开运行窗口,然后输入 services.msc 运行进入到服务窗口。当我们要启动 Apache 服务时可以在这里进行启动。

8. 我们也可以在 Apache 根目录的 bin 目录下运行 ApacheMonitor.exe 程序来进入 Apache 服务管理界面。

9. 我们能在左侧看到 Apache 服务,在我们安装服务之前,这里是空白的。然后我们可以点击右边的 Start 按钮来启动 Apache 服务。

10. 启动成功后我们能看到 Apache 服务前的图标改变成绿色图标。我们也可以使用右边的那些按钮对 Apache 服务进行操作。

11. 启动服务后如果我们能在浏览器通过访问 http://localhost:80 成功打开 Apache 界面,则说明我们的 Apache 服务启动成功了。其中 80 对应着 httpd.conf  配置文件中的端口配置。

Apache 的使用

1. 上面我们成功启动 Apache 并访问到 Apache 主页面,那么那个 Apache 主页面放在 Apache 目录哪里,当我们访问 Apache 端口时又为什么会默认加载该页面呢?只要我们找一下 Apache 目录,我们就能发现 htdocs 目录下有一个 index.html 文件,我们双击打开就能发现这个 html 文件就是我们访问 Apache 端口时默认加载的页面。所以可以得知当我们访问 Apache 端口时会默认加载根目录下的 htdocs 目录下的 index.html 文件。

2. 而如果我们想要修改 Apache 的默认加载目录时,可以到 conf 目录下的 httpd.conf 文件中进行配置。我们找到 DocumentRoot ,能看到后面是 ${SRVROOT}/htdocs,其中 ${SRVROOT} 在前文已经配置成了指向 Apache 的根目录,所以把根目录下的 htdocs 目录设为文档根目录。我们可以改成其它的,比如改成 ${SRVROOT}/html,同样下一行 Directory 后面也需要更改,那么我们的文档根目录就改成根目录下的 html 目录,当我们访问 Apache 端口时就会自动到 html 目录下寻找加载页面。

3. 设置完文档根目录,我们也可以继续设置默认加载文件。在配置文件下面一点,在图中所示位置,可以看到有个 index.html,我们可以改成其它文件名。也可以在这里配置多个文件,当前面的文件加载不出来时,会默认加载后面的文件。

4. 我们也可以在文档根目录下放一些 css、js、jpg等文件来供 html 文件调用。

Apache 与 Tomcat 的整合

Tomcat 其实就已经包涵了静态资源的部署调用,为什么还要使用 Apache 来先过滤掉静态资源呢。最重要的原因还是为了高可用性与负载均衡,Apache 可以部署多个 Tomcat 同时工作,那么响应速度会线性提升,但最多部署八个左右,超出后性能就不能线性提升了。而且当访问的 Tomcat 出故障挂掉或者需要升级时,Apache 可以调用其它的 Tomcat 来继续工作。还有一点就是通过 Apache 来访问静态资源比直接访问部署在 Tomcat 上的静态资源反应速度会更快。接下来一起看看怎么连接 Apache 与 Tomcat。

连接方式有三种:http_proxy、ajp_proxy和JK。我们分别来看看各种连接方式的实现。

一、http_proxy

1. 该种方式看名字就能知道是通过对 HTTP 协议的代理来实现的。我们在 Apache 的 httpd.conf 中添加上如下内容:

ProxyPass /picture !
ProxyPass /css ! 
ProxyPass /js !

ProxyPass / balancer://test/
<Proxy balancer://test/>
BalancerMember http://localhost:8080/
BalancerMember http://localhost:8081/
BalancerMember http://localhost:8082/
</Proxy>

2. 其中 ProxyPass 后面的路径即为拦截路径,当我们访问那些路径时,Apache 会拦截下来自己响应。当访问其它路径时才转发给 Tomcat。其中 http://localhost:8080/ 等三个配置的路径就是 Tomcat 的访问路径,localhost 为 Tomcat 的 IP 地址,电脑默认 localhost 代指 IP:127.0.0.1,8080 为 Tomcat 的端口配置。我们也可以直接访问 IP,比如 http://127.0.0.1:8080/ ,也可以在 C:\Windows\System32\drivers\etc 下的 hosts 文件中,以 “127.0.0.1      localhost” 的格式给某个 IP 指定一个名字,然后我们就可以直接使用该名字来代指所指向的 IP。

3. 接下来我们需要去 httpd.conf 把下面这些模块的注解也就是前面的 # 去掉,使 Apache 启动时能加载这些 module,才能让我们的 http_proxy 配置成功。这里值得一提的是,根目录下有个记录错误日志的文件 logs\error.log 可以查看 Apache 出错的原因。刚开始我只加载了前面 4 个 module,启动 Apache 失败。后来找到错误日志文件打开看才知道我少加载了两个 module。

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

4. 接着我们启动三个分别为 8080、8081、8082 端口的 Tomcat。当我们访问静态资源时会被 Apache 拦截直接响应,在 Apache 找不到的静态资源则会轮流转发到不同的 Tomcat 上。并且我们可以在 Tomcat 的 jsp 页面上访问到部署在 Apache 上的静态资源,不过注意静态资源的 url 前面需要加个 / 。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>apache_demo</title>
		<link type=text/css href=/css/index2.css rel="stylesheet">
		<script type="text/javascript" src="/js/index2.js"></script>
		<!-- css 与 js 均可以访问到,但是不知道为什么 css 中的 width 和 height 属性加载不了,其它属性可以加载 -->
	</head>
	<body>
		<a href="javascript:show();">show</a>
		<img src="/picture/index2.jpg" class="jpg" id="index2" width="30"/>
		
		ServerName:"<%=request.getServerName() %>"
		IP:"<%=request.getLocalAddr() %>"
		port:"<%=request.getLocalPort() %>"
	</body>
</html>

5. 接着我们访问 Tomcat 上的 index,能看到每次访问时服务器端口都不一样,会轮流访问三个 Tomcat。

二、ajp_proxy

1. 该种方式的配置与 http_proxy 类似,只是代理方式不同而已。在 httpd.conf 中的配置也基本一样,只是把 http 配置部分改成 ajp 配置。

ProxyPass /picture !
ProxyPass /css ! 
ProxyPass /js !

ProxyPass / balancer://test/
<Proxy balancer://test/>
BalancerMember ajp://localhost:8009/
BalancerMember ajp://localhost:8010/
BalancerMember ajp://localhost:8011/
</Proxy>

 

2. module 部分只需要把 http_proxy 部分加载的 6 个 module 中的 proxy_http_module 改成 proxy_ajp_module 即可。

#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

三、JK

JK 连接方式相较于前两者来说更复杂,但是由于推出时间更长,所以相对来说会更稳定。JK 方式主要就是下载 JK module,然后在 Apache 的 httpd.conf 中加载 JK module 和 JK 的配置文件。写此文章主要学习 Apache 的具体作用和工作方式,所以到此为止,具体的配置在需要用到时再到网上或者官网进行学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值