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 请求流程
-
客户端请求:
-
请求行:包含方法(GET/POST)、URL、协议版本。
-
请求头:附加信息(如
Host
、User-Agent
、Accept-Language
)。 -
请求体:POST 方法提交的参数(如表单数据)。
-
-
服务器响应:
-
状态行:协议版本、状态码(如 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 基于域名的虚拟主机
实现步骤:
- DNS解析:将多个域名(如 www.kgc.com 和 www.kcce.com)指向同一IP。
- 目录准备:
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 允许所有用户)