动手
mac下配置Apache+PHP+MySQL环境
问答
1. 简单描述下 web 服务器、PHP、数据库、浏览器是如何实现动态网站的?
- 用户通过浏览器输入地址,浏览器首先向 DNS 服务器发出请求,DNS 服务器返回网站的实际 IP 地址。
- web 服务器时刻监控来自互联网的请求,根据请求返回相应的资源。
- 如果需要与服务器动态交互,就得用到脚本语言(例如:PHP)。通过服务器端获得的脚本语言具有访问服务器本地资源,数据库的权限,根据你请求的内容,脚本解析后返回给服务器,服务器再返回给你。
- 数据库主要用来动态存储数据,方便查找,插入,查询,删除等操作。
- 最后,浏览器将返回的资源解析,呈现出用户所看到的网页内容。
2. 常见的 WEB 服务器有哪些?
- Nginx,是一个网页服务器,它能反向代理 HTTP, HTTPS, SMTP, POP3, IMAP 的协议链接,以及一个负载均衡器和一个HTTP缓存。是一款面向性能设计的 HTTP 服务器,相较于Apache、lighttpd 具有占有内存少,稳定性高等优势。维基-Nginx
- Apache,是 Apache 软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中。维基-Apache
- IIS(Internet Information Services),是由微软公司提供的基于运行 Microsoft Windows 的互联网基本服务。
3. 打开浏览器,在地址栏输入 http://jirengu.com 页面展现了饥人谷官网的信息,整个过程发生了什么?(饥人谷官网后台语言 php,web服务器 nginx,数据库 mysql)
- 通过域名,查找服务器的 IP 地址(DNS 解析)
- 查找浏览器缓存(是否有缓存 DNS 记录),有的话,直接使用;
- 查找系统本地的 host 文件是否有这个域名的映射关系
- 查找路由器缓存;
- 查找 ISP 缓存;
- 从顶级域名服务器的根域名服务器查找。
- 浏览器得到 IP 地址后,打包 HTTP 请求
- 通过 TCP 协议与 ngnix 服务器创建连接(三次握手),然后浏览器向服务器发送请求
- ngnix 服务器接受 HTTP 请求,Web Server 进行相应的初步处理,使用服务器脚本( PHP )生成页面
- 服务器脚本(利用 Web Framework)调用本地和客户端传来的数据,生成页面
- Web Server 将生成的页面作为 HTTP 响应的 body,根据不同的处理结果生成 HTTP header,发回给客户端
- 客户端(浏览器)接收到 HTTP 响应后(通常第一个请求得到的 HTTP 响应的 body 里是 HTML 代码),开始对 HTML 代码进行解析
- 解析过程中,如果需要引用服务器上的资源(额外的 CSS 、JS 代码、图片、音视频等),再向 Web Server 发送请求,Web Server 找到对应的资源再发送回来
- 具体解析渲染过程如下:
- 解析 HTML 生成 DOM 树
- 解析 CSS 生成 CSDOM 树
- 组合 DOM 和 CSDOM 生成渲染树
- 遇到 JavaScript 解析 JavaScript,阻塞后面的解析和渲染
- 最后进行页面绘制
参考: