一.网站类型:
静态网站:由保存在服务器上的文件组成,内容不会变化。
动态网站:与数据库相连,根据用户行为动态生成内容。
二.URI,URL,URN
-
URI(Uniform Resource Identifier,统一资源标识符)
- URI是一种标准化的字符串,用于标识互联网上的各种资源。
- 它提供了一种简单的方法来识别和访问网络资源,如网页、图片、视频等。
- URI是URL和URN的超集,意味着所有的URL和URN都是URI。
-
URL(Uniform Resource Locator,统一资源定位符)
- URL是URI的一种,专门用来标识网络资源的位置。
- 它不仅提供了资源的名称,还提供了如何访问该资源的信息,如协议(http、https)、服务器地址(域名或IP地址)和路径。
- 例如,
https://www.example.com/index.html
是一个URL,它指定了使用HTTPS协议访问位于www.example.com
服务器上的index.html
文件。
-
URN(Uniform Resource Name,统一资源名称)
- URN也是URI的一种,它用于持久地标识资源,而与资源的网络位置无关。
- URN的设计目的是提供一种资源的持久名称,即使资源的网络位置发生变化,URN仍然保持不变。
- URN通常包括命名空间(namespace)和资源名称(resource name),如
urn:isbn:0-486-27557-4
。
三.服务器软件介绍
-
Apache
- 是一个多功能的网页服务器,适合处理各种类型的Web请求,特别是动态内容和静态内容的托管。
-
Tomcat
- 是专为Java Web应用程序设计的Servlet容器,它与Apache HTTP Server可以很好地集成,但主要用于运行Java Web应用。
-
Nginx
- 是一个高性能的服务器,特别擅长处理静态内容和作为反向代理服务器使用,它的高并发处理能力使其在现代Web架构中非常受欢迎。
四.动静态页面解析
静态页面解析
-
用户输入URL:用户在浏览器地址栏输入一个网站的URL。
-
DNS解析:浏览器首先需要将域名解析为IP地址,这通常通过DNS(域名系统)完成。
-
建立连接:浏览器使用得到的IP地址与服务器建立TCP连接。
-
发送HTTP请求:浏览器向服务器发送一个HTTP请求,请求特定的静态资源,如HTML文件。
-
服务器处理请求:
- Apache服务器:服务器上的Apache进程接收到HTTP请求后,根据请求的URI(统一资源标识符)在服务器的文件系统中查找对应的文件。
- 文件查找:Apache根据配置的DocumentRoot和可能的Alias设置,找到请求的HTML文件。
-
返回响应:如果文件存在,Apache将文件内容作为HTTP响应发送回浏览器。
-
浏览器渲染:浏览器接收到HTML内容后,开始解析HTML并渲染页面。
动态页面解析
-
用户请求动态页面:用户请求一个URL,该URL指向一个动态生成的页面,如PHP文件。
-
相同的DNS解析和TCP连接建立:与静态页面相同,浏览器首先解析域名并建立连接。
-
发送HTTP请求:浏览器发送HTTP请求到服务器,请求动态页面。
-
Apache服务器处理请求:
- 识别动态内容:Apache识别到请求是针对动态内容(如PHP文件),并根据配置将请求转发给相应的处理程序。
-
PHP引擎处理:
- 执行PHP代码:PHP引擎(如mod_php模块)执行PHP文件中的代码。
- 数据库交互:如果PHP代码需要,它可能会与数据库进行交互,执行查询并获取数据。
-
生成HTML:PHP脚本执行完毕后,生成HTML内容。
-
返回HTML给浏览器:Apache将PHP生成的HTML内容作为HTTP响应发送回浏览器。
-
浏览器渲染:浏览器接收到动态生成的HTML内容后,解析并渲染页面。
五.服务器软件配置
Apache服务器目录结构
-
bin
:存放Apache的二进制可执行文件,如httpd
(Apache服务器的主程序)和apachectl
(用来控制Apache服务器的命令行工具)。 -
conf
:配置文件目录,包含Apache服务器的配置文件,如httpd.conf
(主配置文件)和其他包含文件。 -
lib
:核心文件夹,存放Apache所需的库文件,这些库文件提供了Apache的多种功能。 -
htdocs
:Apache默认的网页文件夹,即网站的根目录,所有静态网页文件(如HTML、CSS、JavaScript等)通常存放在这里。 -
modules
:模块目录,包含Apache的模块文件,这些模块可以被加载到配置文件中,以扩展Apache的功能。
网络站点设置
-
修改根目录:通过修改
httpd.conf
文件中的DocumentRoot
指令来设置网站的根目录,这是存放网站文件的地方。DocumentRoot "C:/xampp/htdocs" <Directory "C:/xampp/htdocs"> ... </Directory>
-
设置域名和监听端口:使用
ServerName
和Listen
指令来设置网站的域名和监听端口。ServerName
指定服务器的主机名,Listen
指定服务器监听的端口。ServerName www.example.com:80 Listen 80
Listen
指令可以更改为其他端口,如Listen 8080
,但这需要在防火墙和网络配置中相应地开放该端口。
PHP与Apache集成
-
作为模块加载:PHP可以作为Apache的一个模块加载,这通过在
httpd.conf
文件中使用LoadModule
指令实现。LoadModule php_module modules/libphp7apache2.dll
注意:具体的模块文件名(如
libphp7apache2.dll
)取决于PHP版本和操作系统。 -
关联PHP文件:使用
AddType
指令将PHP文件与Apache关联,这样Apache就知道如何处理以.php
结尾的文件。AddType application/x-httpd-php .php
C语言与PHP
-
PHP底层编写:PHP底层确实是使用C语言编写的,这使得PHP具有高性能和灵活性。
-
C语言编译:C语言是一种编译语言,需要编译器将源代码转换为机器代码。VC9(Visual C++ 2008)代表一种编译环境,提供了编译C语言程序的工具。