动手
一、在本地安装 Apache 与 PHP。安装 xampp 套件即可。XAMPP 里面包含 Apache 和 PHP.windows 用户也可安装 WAMP,安装包体积会小一些,也可单独安装Apache 和 PHP。
二、学习 xampp或者wamp 的简单配置使用,在本地启动 web 服务器,通过浏览器访问,通过浏览器打开本地 webserver 下的 php 文件。
<!DOCTYPE html>
<html>
<h1>My first PHP page</h1>
<body>
<?php
echo "Hello cttin";
?>
</body>
</html>
问题
一、简单描述下web 服务器、PHP、数据库、浏览器是如何实现动态网站的?
-
用户输入url
-
通过DNS解析,找到对应的IP地址。具体过程可以参考从输入URL到页面加载完成的过程-DNS解析域名过程
-
浏览器找到对应的主机IP后,与对应的web服务器建立连接。通过HTTP协议向web服务发送请求,请求到服务器相应目录下的文件。
-
若访问的为服务端的html文件,则请求服务器相应目录下的html文件。
-
若访问的为服务端的php文件,则请求服务器相应目录下的php文件。服务器本身并不能处理php文件,就寻找并委托PHP应用服务器来处理。最终把它翻译为html静态代码,并交还给服务器。
-
若访问的为服务端的mySQL数据库,则请求服务器相应目录下的php文件。PHP应用服务器接受服务器委托,收到相应的文件。PHP应用服务器
打开此php文件,php文件中通过对数据库连接的代码来连接本机或者网络上其他机器的MySQL数据库。且在php文件中通过标准的SQL查询语句来获取数据库中的数据。接着,PHP应用服务器再将数据生成html代码。 -
服务器将接收到的html文件输出到浏览器,浏览器接收到服务器的响应后,接收并下载服务端的html代码。最后,浏览器解读html代码,并将它渲染到页面。
详细的可以参考动态网站访问流程
二、常见的 WEB 服务器有哪些?
WEB服务器主要提供网上信息浏览服务,常见的服务器有:
-
Apache
Apache是世界上用的最多的服务器。它的优点是源代码开放,因此有很多人参与到新功能的开发设计;支持跨平台使用,可以运行在几乎所有的Unix、Windows、Linux系统平台上。 -
Lighttpd
Lighttpd是一个德国人写的开源软件,其目标是专门针对高性能网站、安全、快速、兼容性好并且灵活的webserver环境。它具有内存开销低、CPU占用率低、效能好,以及模块丰富等特点。 -
Tomcat
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范执行的,因此也可以说Tomcat Server实行了Apache-Jakarta规范,且比绝大多数商业应用软件服务器要好。但是,Tomcat对静态文件、高并发的处理比较弱。 -
Microsoft IIS(Internet Information Server)
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。 -
Nginx
不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。
三、打开浏览器,在地址栏输入URL到页面展现,整个过程发生了什么?(后台语言 php,web服务器 nginx,数据库 mysql)
- 输入url。
- 通过DNS解析出主机的的IP地址。具体的过程分为:
- 浏览器会缓存DNS,存储的时间随浏览器自己定。
- 首先,操作系统先检查自己的hosts文件是否有这个网址的映射关系,如果有就调用这个这个IP地址映射,完成域名解析。
- 当hosts文件没有网址的映射时,就会查找本地DNS缓存,如果有这个网址的映射关系,则直接返回,完成域名解析。
- 如果hosts和本地缓存都没有相应的网址映射关系,则首先会找TCP/IP参数中设置的首选DNS服务器(ISP的DNS)。此服务器接收查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
- 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
- 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.net)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。
- 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。
- 找到对应的主机IP后,与对应的web服务器建立连接。浏览器通过HTTP协议向Nginx服务器发送请求,请求到相应的php文件。PHP应用服务器受服务器委托,找到对应的文件,php文件中连接MySQL数据库,通过标准的SQL查询语句来获取数据库中的数据,对它进行操作。完成之后,PHP服务器将数据生成html代码。
- Nginx服务器将接收到html文件输出到浏览器,浏览器接收到服务器的响应后,接收并下载服务端的html代码。最后,浏览器解读html代码,并将它渲染到页面。
网友评论