15. 安装配置Apache服务

什么是网页服务

  • 网页服务是一种通过互联网提供网页内容的服务。它基于客户端 - 服务器(Client - Server)模型。在这个模型中,服务器是存储网页相关资源(如 HTML 文件、图片、脚本等)的计算机设备,而客户端是用户用来访问这些资源的工具,最常见的客户端就是网页浏览器(如 Chrome、Firefox、Safari 等)。
  • 当用户在浏览器中输入一个网址(例如http://www.example.com)时,浏览器会向对应的服务器发送一个请求。这个请求通过互联网的网络协议(主要是 HTTP 或 HTTPS)传输。服务器接收到请求后,会根据请求的内容查找相应的网页资源,然后将这些资源打包并通过网络发送回浏览器。浏览器再将接收到的资源进行解析和渲染,最终呈现在用户的屏幕上,形成用户所看到的网页。

网页服务的组成部分

  • 服务器软件:这是网页服务的核心部分,如 Apache、Nginx 等。这些软件负责接收客户端请求、处理请求并发送响应。以 Apache 为例,它会监听特定的端口(通常是 80 端口用于 HTTP,443 端口用于 HTTPS),等待客户端连接。当有请求到来时,它会根据配置文件中的规则,从服务器的文件系统中找到对应的网页文件,并将其发送给客户端。
  • 网页文件:包括 HTML(超文本标记语言)文件,它是构建网页的基础。HTML 文件定义了网页的结构,如标题、段落、链接、图片等元素的位置。例如,一个简单的 HTML 文件可能如下:
<!DOCTYPE html>
<html>
<head>
    <title>My First Web Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>This is my first web page.</p>
</body>
</html>

除了 HTML,还包括 CSS(层叠样式表)用于控制网页的样式,如字体颜色、大小、布局等;JavaScript 文件用于实现网页的交互功能,如菜单的展开和收缩、表单验证等。

  • 网络协议:主要是 HTTP(超文本传输协议)和 HTTPS(HTTP Secure)。HTTPS 后续课程再说。

网页服务的应用场景

  • 企业网站:企业通过网页服务展示公司信息、产品介绍、联系信息等。例如,一家电子产品制造企业会有一个官方网站,在网站上展示其最新的产品型号、产品特点、技术参数等内容,方便客户了解和购买产品。
  • 电子商务网站:如淘宝、京东等。这些网站通过网页服务提供商品展示、购物车功能、支付结算等一系列服务。用户可以在网页上浏览商品图片、查看商品详情、将商品加入购物车,然后通过安全的支付通道完成购买。
  • 社交媒体网站:像 Facebook、微博等。它们利用网页服务让用户创建和分享内容,如发布状态更新、分享照片和视频、评论和点赞等。用户通过浏览器访问这些网站,与朋友、家人和关注的人进行互动。
  • 新闻媒体网站:各大新闻机构(如 BBC、CNN、新华社等)通过网页服务发布新闻文章、图片和视频新闻。用户可以在网页上阅读最新的国内外新闻,浏览新闻专题,并且通过评论区发表自己的观点。

对网页服务的理解

  1. 网页服务的本质是共享网页文件
    • 从本质上来说,网页服务就是将存储在服务器上的网页文件共享给客户端。服务器就像是一个文件仓库,里面存放着各种各样的网页文件。这些文件包括 HTML(用于构建网页的基本结构)、CSS(用于控制网页的样式)、JavaScript(用于实现网页的交互功能)以及图片、视频等多媒体文件。
    • 例如,当一个网站开发者创建了一个网站,他会把所有相关的网页文件存储在服务器的特定目录下(如 Apache 服务器默认的 /var/www/html目录)。当客户端(浏览器)请求访问这个网站时,网页服务(如 Apache 服务器)会从这个目录中找到对应的文件,然后把它们发送给客户端。这就好比图书馆的管理员(网页服务)根据读者(客户端)的要求,从书架(服务器的文件存储目录)上找到相应的书籍(网页文件)并交给读者。
  2. 客户端是文件的接收和解释器
    • 客户端(浏览器)作为文件的接收者,它的主要任务是接收从服务器发送过来的网页文件。当浏览器向服务器发送一个 HTTP 请求后,它会等待服务器的响应。一旦收到服务器发送的网页文件,浏览器就开始对这些文件进行处理。
    • 对于 HTML 文件,浏览器会按照 HTML 的语法规则来解析它。例如,浏览器会识别 <html>标签作为文档的开始,<body>标签内的内容是网页的主体部分,<h1>标签表示一级标题,<p>标签表示段落等。它会根据这些标签来构建网页的结构,确定各个元素在屏幕上的位置。
    • 对于 CSS 文件,浏览器会根据 CSS 的样式规则来应用样式。如果 CSS 文件中有一条规则是 body { background - color: #fff; },浏览器就会将网页主体部分(<body>标签内的内容)的背景颜色设置为白色。
    • 对于 JavaScript 文件,浏览器会执行其中的脚本代码。例如,如果 JavaScript 文件中有一个函数用于在用户点击按钮时显示一个弹出框,当用户在网页上点击相应的按钮时,浏览器就会执行这个函数,弹出一个对话框。
    • 就像一个翻译官(浏览器),它接收来自远方(服务器)的各种语言(网页文件类型)的文件,然后把它们翻译成用户能够理解的视觉和交互体验(网页在屏幕上的呈现和交互)。而且,不同的浏览器(如 Chrome、Firefox 等)可能会在解释这些文件时有一些细微的差别,就像不同的翻译官可能会有不同的翻译风格一样。

Apache服务

什么是 Apache 服务器

  • Apache 是一款开源的、跨平台的网页服务器软件。它在互联网中被广泛应用,主要功能是接收来自客户端(如浏览器)的 HTTP(超文本传输协议)请求,并将存储在服务器上的网页文件(如 HTML、CSS、JavaScript 文件等)发送回客户端,从而使用户能够在浏览器中访问网页。
  • 例如,当用户在浏览器中输入一个网址(如https://www.example.com)时,浏览器会向该网址对应的服务器发送一个 HTTP 请求。如果该服务器运行着 Apache 服务器软件,Apache 就会处理这个请求,找到对应的网页文件,并将其内容返回给浏览器,浏览器再将这些内容渲染成用户看到的网页。

Apache 的配置文件

  • Apache 的主要配置文件是 httpd.conf,在 CentOS 7 中,它通常位于 /etc/httpd/conf/目录下。这个文件包含了许多指令,用于控制 Apache 服务器的行为。

网页文件的根目录

在网页服务器中,网页文件的根目录是服务器查找网页文件的起始位置。对于 Apache 服务器(在 CentOS 7 中),默认的网页文件根目录通常是 /var/www/html。这个目录就像是一棵大树的根部,所有要在网页上显示的内容(如 HTML 文件、图片、CSS 和 JavaScript 文件等)都可以放在这个目录或者它的子目录中。

默认文档

默认文档是当客户端请求一个目录而没有指定具体的文件名时,服务器自动返回的文档。例如,当用户在浏览器中输入 http://example.com(没有指定具体的文件名,如 index.html)时,服务器会查找默认文档并返回。这是为了方便用户访问网站,不需要用户每次都输入完整的文件名。

实验一:网页服务基础实验

环境要求-A机器:

  1. 正确配置IP地址,静态,DNS指向自己
  2. 正确配置本地yum源

安装Apache

yum install httpd

重启服务,关闭防火墙,验证安装

systemctl  restart httpd
systemctl enable httpd
systemctl stop firewalld

用浏览器打开A机器的IP地址,将看到默认的Apache欢迎页面表示成功

image-yprh.png

修改网站

在/var/www/html路径下创建以下内容:

文件夹news

文件index.html、test.html

文件news/index.html、文件news/n1.html

其中index.html内容为"this is index.html"

其中test.html内容为"this is test.html"

其中news/index.html内容为"this is index.html"

其中news/n1.html内容为"this is n1.html"

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mkdir news
[root@localhost html]# touch index.html
[root@localhost html]# touch test.html
[root@localhost html]# touch news/index.html
[root@localhost html]# touch news/n1.html
[root@localhost html]# echo "this is index.html" >index.html 
[root@localhost html]# echo "this is test.html" >test.html
[root@localhost html]# echo "this is news/index.html" >news/index.html 
[root@localhost html]# echo "this is news/n1.html" >news/n1.html

思考理解

默认情况下,网页文件的根目录为/var/www/html,假设网址为http://192.168.11.111

结合“网页文件的根目录”、“默认文档”等知识理解以下内容:

服务器真实路径 访问网址
/var/www/html/index.html http://192.168.11.111
/var/www/html/test.html http://192.168.11.111/test.html
/var/www/html/news/index.html http://192.168.11.111/news/
/var/www/html/news/n1.html http://192.168.11.111/news/n1.html
/var/www/html/news/img.jpg http://192.168.11.111/news/img.jpg

美化网站

建议使用scp等方式上传文件和img.jpg

index.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>首页</title>
		<style>
			/* 整体页面样式 */     body {       font-family: Arial, sans-serif;       margin: 0;       padding: 0;       background-color: #f7f7f7;     }      /* 导航栏样式 */     nav {       background-color: #333;       color: white;       padding: 15px 0;       text-align: center;     }      nav ul {       list-style-type: none;       margin: 0;       padding: 0;     }      nav ul li {       display: inline-block;       margin-right: 25px;     }      nav ul li a {       color: white;       text-decoration: none;       padding: 8px 12px;       transition: background-color 0.3s ease;     }      nav ul li a:hover {       background-color: #555;     }      /* 页面主体样式 */    .container {       max-width: 800px;       margin: 30px auto;       background-color: white;       padding: 20px;       box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);     }      h1 {       text-align: center;       color: #333;     }      p {       line-height: 1.6;       text-align: justify;     }     .link-section {       margin-top: 30px;       text-align: center;     }     .link-section a {       display: inline-block;       background-color: #007BFF;       color: white;       text-decoration: none;       padding: 10px 20px;       border-radius: 5px;       margin-right: 15px;       transition: background-color 0.3s ease;     }     .link-section a:hover {       background-color: #0056b3;     }
		</style>
	</head>
	<body>
		<!-- 导航栏 -->
		<nav>
			<ul>
				<li>
					<a href="#">首页</a>
				</li>
				<li>
					<a href="#">关于我们</a>
				</li>
				<li>
					<a href="#">产品服务</a>
				</li>
			</ul>
		</nav> <!-- 页面主体内容 -->
		<div class="container">
			<h1>欢迎来到我们的网站</h1>
			<p> 这里是网站的首页,为您呈现丰富的资讯与精彩内容。您可以通过下方链接查看最新消息。 </p>
			<div class="link-section">
				<a href="news/index.html">新闻首页</a>
				<a href="news/n1.html">新闻详情1</a>
			</div>
		</div>
	</body>
</html>

news/index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>新闻首页</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f7f7f7;
    }

   .news-container {
      max-width: 600px;
      margin: 20px auto;
      background-color: white;
      padding: 15px;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    }

    h2 {
      text-align: center;
      color: #333;
    }
      .back-button {
      display: block;
      margin: 20px auto;
      background-color: #007BFF;
      color: white;
      text-decoration: none;
      padding: 10px 20px;
      border-radius: 5px;
      text-align: center;
      transition: background-color 0.3s ease;
    }

   .back-button:hover {
      background-color: #0056b3;
    }
  </style>
</head>

<body>
  <div class="news-container">
    <h2>新闻首页 - 最新消息汇总</h2>
    <p>这里将持续更新各类热点新闻,敬请关注。</p>
    <a href="#" class="back-button" onclick="window.history.back(); return false;">返回</a>
  </div>
</body>

</html>

news/n1.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" width="device-width, initial-scale=1.0">
  <title>新闻详情1</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f7f7f7;
    }

   .news-detail-container {
      max-width: 600px;
      margin: 20px auto;
      background-color: white;
      padding: 15px;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    }

    h2 {
      text-align: center;
      color: #333;
    }

    p {
      line-height: 1.6;
      text-align: justify;
    }

    img {
      max-width: 100%;
      height: auto;
      display: block;
      margin: 15px auto;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    }

   .back-button {
      display: block;
      margin: 20px auto;
      background-color: #007BFF;
      color: white;
      text-decoration: none;
      padding: 10px 20px;
      border-radius: 5px;
      text-align: center;
      transition: background-color 0.3s ease;
    }

   .back-button:hover {
      background-color: #0056b3;
    }
  </style>
</head>

<body>
  <div class="news-detail-container">
    <h2>新闻详情1 - 重大突破事件</h2>
    <img src="img.jpg" alt="相关图片说明">
    <p>详细介绍此次重大突破事件的来龙去脉、影响范围等详细内容......你可以在这里补充更丰富、详实的新闻报道文字内容,对事件展开深度解读,阐述其背后所蕴含的意义以及对相关领域后续发展走向的预判等等,让读者能够通过这段文字清晰、全面地掌握该事件的核心要点与关键信息。</p>
    <a href="#" class="back-button" onclick="window.history.back(); return false;">返回</a>
  </div>
</body>

</html>