一、静态网站和动态网站有什么区别¶
原笔记先从网站类型本身做了区分。
静态网站通常只包含:
- HTML
- CSS
- JavaScript
- 图片
- 视频等静态资源
这类资源往往可以直接由 Nginx 返回,因此只需要 Web 服务器就能支撑较高访问量。
动态网站则不同。
它通常要依赖服务端语言和后端服务来处理请求,例如:
- PHP
- Java
- Python
- Golang
动态请求不是直接把一个现成文件发回去,而是要在服务端做处理后,再把结果返回给浏览器。
二、怎么快速初步判断一个请求更像动态资源¶
原笔记给了一个很实用的经验:
- 可以先通过 URL 做初步判断
- 如果 URL 中包含
?或& - 往往更像动态请求
这当然不是绝对规则,但在入门阶段非常有帮助,因为它能帮助你建立“静态资源”和“动态资源”的直觉差异。
三、常见动态网站架构有哪些¶
原笔记按开发语言列出了一些典型架构:
| 开发语言 | 常见架构 |
|---|---|
| PHP | LNMP、LAMP、WNMP/WAMP |
| Java | LNMT,例如 Tomcat、Jetty、WebLogic、Jboss |
| Python | LNMP(Python, uwsgi) |
| Golang | LNMG |
从这些名字里也能看出一个规律:
Web 架构通常是“Linux + Web 服务 + 语言运行环境 + 数据库或应用组件”的组合。
四、LNMP 为什么是 PHP 站点的经典架构¶
原笔记这部分重点讲的是 LNMP。
它通常可以理解为:
L:LinuxN:NginxM:MySQL 或 MariaDBP:PHP
在 PHP 场景下,这套组合非常典型,因为它把职责分得很清楚:
- Nginx 负责接收 HTTP 请求
- PHP-FPM 负责处理 PHP 动态脚本
- MySQL/MariaDB 负责保存业务数据
五、LNMP 处理请求的大致流程是什么¶
原笔记用两张流程图分别说明了:
- Nginx 如何区分静态请求和动态请求
- LNMP 如何协同处理动态请求
结合原笔记内容,可以把流程概括为:
1、用户发起请求
2、Nginx 先接收请求
3、如果是静态资源,Nginx 直接返回
4、如果是 PHP 动态请求,Nginx 把请求转给 PHP-FPM
5、PHP 代码执行过程中如果要查数据,会访问 MySQL/MariaDB
6、PHP 生成结果后返回给 Nginx
7、Nginx 再把最终响应返回给客户端
也就是说,动态网站和静态网站最大的差别就在于:
- 静态请求主要是“直接取文件”
- 动态请求是“先处理逻辑,再返回结果”
六、为什么不能把 PHP 代码直接丢给 Nginx 就结束¶
原笔记在“开发给了一份 PHP 代码,能不能直接部署到 Nginx”这个问题上,实际上是在引导理解一个关键事实:
- Nginx 本身并不负责解析 PHP 代码
- 它需要 PHP-FPM 这类 FastCGI 服务来处理动态脚本
- 如果网站还要保存文章、用户、评论等数据,还需要数据库
所以部署动态网站时,不能只准备一个 Web 服务,还要把语言运行环境和数据库一起准备好。
七、小结¶
从静态站过渡到动态站时,最重要的是先理解“谁负责什么”:
- Nginx 负责接收请求和处理静态内容
- PHP-FPM 负责解析 PHP
- MySQL/MariaDB 负责存储数据
把这层职责关系看清楚之后,再去实际部署 LNMP 和 WordPress,就会顺很多。