Web技术与Apache网站部署

一、Web 基础与 HTTP 协议

1.1 静态网页与动态网页

静态网页

  • 定义 :由纯 HTML、CSS、JavaScript 构成,文件扩展名为 .htm 或 .html。内容在服务器生成后固定不变,仅通过客户端脚本(如 JS)实现视觉动态效果(如动画)。

  • 特点:加载速度快、安全性高,但维护成本高,无法根据用户请求动态生成内容。

  • 适用场景:企业官网、产品展示页等内容稳定的场景。

动态网页

  • 定义 :结合后端编程语言(如 PHP、Python、Java)与数据库技术生成,扩展名通常为 .php、.jsp、.aspx 等。URL 中常包含 ? 符号标识动态参数。

  • 特点:内容实时变化,支持用户交互(如登录、搜索),但服务器负载较高。

  • 技术分类:

    • CGI:早期动态网页技术,效率低,逐渐被淘汰。

    • 现代语言:PHP(语法简洁,适合快速开发)、JSP(基于 Java,适合企业级应用)、Python(跨平台,生态丰富)。


1.2 HTTP 协议核心机制

HTTP 方法对比

|------------|------------------------------|------------|------------------|
| 方法 | 特点 | 安全性 | 适用场景 |
| GET | 参数暴露于 URL,长度受限(≤2048 字符),可缓存 | 低(敏感信息易泄露) | 获取数据(如搜索) |
| POST | 参数隐藏于请求体,无长度限制,不可缓存 | 较高 | 提交敏感数据(如登录、表单) |
| PUT | 上传资源至服务器 | 需身份验证 | RESTful API 资源更新 |
| DELETE | 删除服务器资源 | 需身份验证 | RESTful API 资源删除 |

HTTP状态码分类

|---------|--------|----------------------|---------------|
| 状态码 | 类别 | 常见示例 | 含义 |
| 1xx | 信息提示 | 100(继续) | 请求已接收,需继续处理 |
| 2xx | 成功 | 200(OK)、206(部分内容) | 请求处理成功 |
| 3xx | 重定向 | 301(永久跳转)、403(禁止访问) | 资源位置变更,需客户端跳转 |
| 4xx | 客户端错误 | 404(资源未找到)、403(禁止访问) | 请求错误或权限不足 |
| 5xx | 服务器错误 | 500(内部错误)、503(服务不可用) | 服务器处理请求失败 |

HTTP 请求流程
  1. 客户端请求:

    • 请求行:包含方法(GET/POST)、URL、协议版本。

    • 请求头 :附加信息(如 Host、User-Agent、Accept-Language)。

    • 请求体:POST 方法提交的参数(如表单数据)。

  2. 服务器响应:

    • 状态行:协议版本、状态码(如 200)、状态描述。

    • 响应头 :服务器信息(如 Server、Content-Type)。

    • 响应体:HTML 页面或其他资源。


二、DNS 与域名解析

2.1 域名结构

  • 格式 :主机名.二级域名.顶级域名(如 www.baidu.com)。

  • 层级解析 :从右向左,顶级域名(.com)→ 二级域名(baidu)→ 主机名(www)。

  • 管理机制 :根服务器(全球 13 台)→ 顶级域名服务器(.com、.cn)→ 权威 DNS 服务器。

2.2 Hosts 文件

  • 作用:本地域名解析,优先级高于 DNS。

  • 修改方法:

    • Windows :C:\Windows\System32\drivers\etc\hosts。

    • Linux :/etc/hosts。

  • 应用场景 :开发测试(如将 www.test.com 指向 127.0.0.1)。

2.3 DNS 解析类型

  • 静态映射:每台设备独立维护映射表(如 Hosts 文件)。

  • 动态映射:通过 DNS 服务器集中解析,支持递归查询与迭代查询。


三、Apache HTTP 服务器部署

3.1 Apache 核心特点

  • 开源跨平台:支持 Linux、Windows、Unix。

  • 模块化设计 :通过动态加载模块(如 mod_rewrite)扩展功能。

  • 高性能与安全:支持高并发,定期更新漏洞补丁。

3.2 源码编译安装步骤

1.依赖安装

dnf install -y apr-util-devel pcre-devel gcc make

2.解压与配置:

tar zxf httpd-2.4.48.tar.gz -C /usr/src
cd /usr/src/httpd-2.4.48
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite

3.编译与安装

make && make install

4.优化路径:

ln -s /usr/local/httpd/bin/* /usr/local/bin

5.系统服务集成

  • 创建 httpd.service文件,配置Systemd管理。
  • 启用服务:

systemctl enable httpd --now


四、虚拟主机配置

4.1 基于域名的虚拟主机

实现步骤:

  1. DNS解析: 将多个域名(如 www.kgc.com 和 www.kcce.com)指向同一IP。
  2. 目录准备:

mkdir -p /var/www/html/{kgccom,kccecom}
echo "<h1>kgc</h1>" > /var/www/html/kgccom/index.html

3.配置文件

<VirtualHost *:80>
DocumentRoot "/var/www/html/kgccom"
ServerName www.kgc.com
ErrorLog "logs/kgc_error.log"
</VirtualHost>

4.加载配置:在 httpd.conf 中添加 Include conf/extra/httpd-vhosts.conf。

4.2 基于 IP 与端口的虚拟主机

  • 基于 IP:每个虚拟主机绑定独立 IP,需服务器配置多网卡。

  • 基于端口 :通过不同端口(如 80 和 8080)区分服务,需在配置中指定 Listen 指令。

五、核心配置文件解析

5.1 httpd.conf 全局配置项

  • ServerRoot :Apache 安装目录(如 /usr/local/httpd)。

  • Listen:监听端口(默认 80)。

  • DocumentRoot :网站根目录(如 /usr/local/httpd/htdocs)。

  • DirectoryIndex :默认首页(如 index.html index.php)。

5.2 目录权限控制

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

  • Options: 控制目录行为(如FollowSymLinks允许符号链接)
  • Require :访问权限(granted允许所有用户)
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端