简单描述下web 服务器、PHP、数据库、浏览器是如何实现动态网站的?
- 用户端访问服务器端的html文件
- 通过本机配置好的DNS域名服务器地址寻找DNS服务器,将网站URL中的Web主机域名解析为Web服务器所在的Linux操作系统(Apache通常与Linux操作系统组合使用)中对应的IP地址。
- 通过HTTP协议(超文本传输协议)去连接上述IP地址的服务器系统,通过默认80端口(默认的端口是80,也有其他端口,输入URL时一般不用输入端口)请求Apache服务器上相应目录下的html文件(如index.htm)。
- Apache服务器收到用户的访问请求后,在它管理的文档目录中找到并打开相应的html文件(如index.htm),将文件内容响应给客户端浏览器(即用户)。
- 浏览器收到Web服务器的响应后,接收并下载服务器端的html静态代码,然后浏览器解读代码,最终将网页呈现出来(由于不同的浏览器对于代码的解读规则会不一样,所以不同浏览器对于相同的网页呈现的最终页面效果会有所差异)。
- 用户端访问服务器端的php文件
- 通过DNS服务器解析出相应的Web服务器的IP地址。
- 与上面访问html静态页面相似,不过最后请求的是Apache服务器上相应目录下的php文件,如index.php。
- Apache服务器本身不能处理php动态语言脚本文件,就寻找并委托PHP应用服务器来处理(服务器端事先得安装PHP应用服务器),Apache服务器将用户请求访问的php文件(如index.php)文件交给PHP应用服务器。
- PHP应用服务器接收php文件(如index.php),打开并解释php文件,最终翻译成html静态代码,再将html静态代码交还给Apache服务器,Apache服务器将接收到的html静态代码输出到客户端浏览器(即用户)。
- 与上面访问html静态页面相同,浏览器收到Web服务器的响应后,接收并下载服务器端的html静态代码,然后浏览器解读代码,最终将网页呈现出来。
- 用户端访问服务器端的MySQL数据库
- 通过DNS服务器解析出相应的Web服务器的IP地址。
- 与上面访问php文件一样,请求访问Apache服务器上相应目录下的php文件。
- 与上面访问php文件一样,PHP应用服务器接收Apache服务器的委托,收到相应的php文件。
- PHP应用服务器打开php文件,在php文件中通过对数据库连接的代码来连接本机或者网络上其他机器上的MySQL数据库,并在php程序中通过执行标准的SQL查询语句来获取数据库中的数据,再通过PHP应用服务器将数据生成html静态代码。
- 浏览器收到Web服务器的响应后,接收并下载服务器端的html静态代码,然后浏览器解读代码,最终将网页呈现出来。
常见的 WEB 服务器有哪些?
- Apache是世界使用排名第一的web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
- IIS是英文名Internet Information Server的缩写,是微软公司主推的服务器;
- Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。
- Lighttpt是基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。- - Lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。
- Zeus是一个运行于Unix下的非常优秀的Web Server
- Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。特定是 技术先进、性能稳定,而且免费。
打开浏览器,在地址栏输入 http://jirengu.com 页面展现了饥人谷官网的信息,整个过程发生了什么?(饥人谷官网后台语言 php,web服务器 nginx,数据库 mysql)
- 输入URL开始解析域名,不断向上查找(浏览器缓存-系统缓存-路由器缓存-ISP DNS 缓存-顶级域名服务器)直到找到IP地址。
- 访问IP对应的服务器,并向web服务器发送http请求
- 服务器分析用户请求,查找对应文件
- 收到用户的访问请求后,在它管理的文档目录中找到并打开相应的html文件,将文件内容响应给客户端浏览器
- 如果处理PHP文件或链接数据库,则把相应请求委托给PHP应用服务器,生成HTML静态代码后再发送给服务器
- 浏览器接受到服务器响应后下载HTML代码并进行解析,将网页呈现