Apache提供web服务:
启动Apache,让其客户端可以使用你机器上安装的Apache提供的web服务,访问你机器上的网站。这种情况下你的计算机就是服务器,别人的机器就是客户端。
注意:确保配置文件语法检查通过,确保80端口没有被其他程序占用,确保防火墙允许80端口的请求 ,如果出现Forbidden情况,确保配置文件http.conf中的DocumentRoot之后的Directory配置的与DocumentRoot路径相同。 对于我们开发阶段大多数是自己访问自己设备上面的站点,所以我们一定要分清楚客户端和服务端,客户端局限于浏览器,代码和Apache相关的文件都要放在服务端。
IP地址:
设备在某个网站中的地址,目前最常见的格式[0-255].[0-255].[0-255].[0-255],作用就是标识一个网络中的设备(计算机,手机,电视)在某一个具体网络中的地址,127.0.0.1是本地回环地址,即某个设备默认的IP。
防火墙:
用来禁用某个应用对网络的请求的。
域名:
由于IP地址都是没有规律的一些数字组成的,很难被人记住,不利于广泛传播,所以就有人想出要给IP起别名,即后来的域名,域名是要花钱注册的。
DNS:
通过宽带运营商提供的服务解析一个域名背后的IP,这个过程叫做DNS寻址,帮你完成DNS寻址过程的服务器叫做DNS服务器。
hosts文件:
操作系统在发起对DNS服务器的查询之前,会先检查本地的hosts文件,如果这个文件中包含了对当前需要解析的域名的配置,则不在发起对DNS服务器的请求,直接用hosts文件中配置的IP进行对服务器请求;
hosts文件路径:C:\Windows\System32\drivers\etc\hosts
注意:本机的hosts文件配置只能影响到本机的DNS寻址,只有以管理员权限运行编辑器才有权利修改hosts文件
端口:
计算机本身是一个封闭的环境,如果需要有数据通信往来,必须有门,这个门在术语上就叫端口,每个端口都有一个编号,每台计算机只有65536个端口(0-65536)。
监听:占门的过程,可以通过命令运行:netstat -an命令监听本机的端口使用情况
端口查询:推荐百度查询,http的端口默认是:80;https的端口默认是:443
URL(Uniform Resource Locator):
统一资源定位符,通俗点来说就是表示网络当中某个网页完整的访问地址,它具有一定的格式:
https: // user : pass @sub.host.com : 8080 /p/a/t/h ? query=string #hash
协议 用户名 密码 主机名 端口 路径名 搜索 不发送到服务器
Apache配置文件:
配置文档推荐:http://httpd.apache.org/docs/current/
监听端口:
监听端口可以随意修改为任意一个未被其他程序监听的端口,可以通过设置配置文件httpd.conf中的Listen指令后面的数字修改。
网站根目录:
存放网站文件的顶层目录,通常URL中域名后面的第一个斜线对应的就是网站根目录。(Apache默认网站根目录是安装目录中的htdocs文件夹)
默认文档:
访问某一个目录时(没有指定具体的文件),默认访问的文件就叫默认文档,一般命名为index.html、index.php等;注:动态网站情况会比较特殊,需要单独考虑,不一定是这个规则。
配置网站根目录:
Apache默认网站根目录是安装目录中的htdocs文件夹,为了方便对网站的管理,一般我们会将网站根目录通过配置文件httpd.conf配置在一个自定义目录中,当然不介意的话可以不用修改配置默认网站根目录。如需要修改,则通过修改配置文件httpd.conf中的网站根目录DocumentRoot及Director 选项的指向来修改跟目录。
配置默认文档及目录浏览设置:
配置文件httpd.conf中DirectoryIndex是用来配置默认文档的,如配置index.html为默认文档:DirectoryIndex index.html,默认文档可以配置多个(由前到后依次去找,找到为止,如果找不到其中默认的文件,则启用目录浏览);如果不想启用目录浏览,只需要在当前目录添加一个空白的index.html文件即可,或使用目录浏览拒绝访问:在httpd.conf文档中修改Options Indexes FollowSymLinks为Options FollowSymLinks也可以。
配置虚拟主机:
虚拟主机:
如果一台机器上只有一个网站的话,是没有任何问题,但是实际中一台机器上面可能同时存放多个项目,此时就需要配置多个虚拟主机来解决这个问题。
配置虚拟主机:
虚拟主机的配置是很常见的,避免破坏主配置文件中的其他配置,通常把配置虚拟主机的文件单独抽离出一个文件,之后在引入主配置文件。其抽离的配置文件目录为:C:\t\Apache\conf\extra\httpd-vhosts.conf。具体流程如下:
1.在主配置文件httpd.conf中找到Include conf/extra/httpd-vhosts.conf指令,将其注释去掉或不带注释复制粘贴在这,作用是引入httpd-vhosts.conf文件
2.在抽离的虚拟主机配置文件httpd-vhosts.conf中添加一个虚拟主机配置的节点:(这里可以添加多个虚拟主机节点来配置多个虚拟主机)
-----------------------------------------------------------虚拟主机的配置,绑定任意IP的80端口
ServerAdmin [email protected]自己的邮箱地址
DocumentRoot F:/demo-----------------------------------------------------项目存放的根目录
------------------------------------------------------目录权限设置
Require all granted--------------------------------------------------解锁所有的请求,授权
Options Indexes FollowSymLinks---------------------------------------开启目录浏览
AllowOverride None---------------------------------------------------不允许目录内。htaccess文件覆盖此处配置
ServerName day-01.io-----------------------------------------------------域名
ServerAlias www.day-01.io------------------------------------------------另一个域名(别名)
ErrorLog "logs/day-01.io-error.log"--------------------------------------错误日志
CustomLog "logs/day-01.io-access.log" common-----------------------------自定义日志
如:
ServerAdmin [email protected]
DocumentRoot E:/web前端
Require all granted
Options Indexes FollowSymLinks
AllowOverride None
ServerName myblog.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
3.如果配置的域名没有解析到DNS服务器上,这里需要在本地hosts文件中将域名解析到IP地址:C:\Windows\System32\drivers\etc文件夹中的hosts文件添加域名的指向:127.0.0.1(本地IP) myblog.com项目的域名
4.重启Apache,在浏览器搜索配置的域名进行测试。
静态网站与动态网站:
请求响应:
浏览器请求网站到看到页面做了什么?
用户输入网址—浏览器发送请求到服务器—服务器发送代码给浏览器—浏览器接收代码渲染网页给用户
1.用户打开浏览器输入网址的URL
2.浏览器通过DNS服务器获取访问的网站IP地址
3.浏览器发起对这个IP的请求
4.服务端接收到这个请求,进行相应的处理
5.服务端处理完的结果返回给用户浏览器
6.浏览器将接收到的服务端的结果呈现到界面上
浏览器端:
1.用户在浏览器中输入要访问的URL地址
2.浏览器解析用户输入的URL地址------------知域名 + 端口号
3.浏览器先检查本地缓存是否有这个域名,有的话可以得到IP,没有则执行下一步
4.浏览器发起一个DNS系统调用--------------知IP
4.1先检查操作系统的缓存里面有没有这个域名,没有则执行下一步
4.2在系统的hosts文件中找是否有这个域名,没有则执行下一步
4.3会对DNS服务器发起一个系统调用
DNS服务器:
DNS服务器存有com,cn,net等域
5.浏览器会通过本地的随机端口建立一个与服务端指定端口之间的连接通道
6.浏览器会将客户端的一些信息打成 包(请求报文) 并把这个 包(请求报文) 通过连接通道发送到web服务端
||
||
||
||
||
服务端:
web server(Apache):
1.打开提交过来的 包,拿到 包 里面的请求路径
2.根据请求路径对应文件的扩展名找到文件的MIME type(在Apache的配置文件mime.types中)
3.判断文件类型是否为静态文件,如果是静态文件,则直接读取这个文件的内容,否则交给模块(php)处理,之后把执行结果返回给web server
4.服务端会把要发给客户端的数据打包(响应报文),之后通过连接通道发给浏览器端
||
||
||
||
||
浏览器端:
7.打开服务端返回给浏览器的包(响应报文),找到响应报文中的Content-type,根据Content-type的值决定如何响应内容。
8.如果是html,则渲染在浏览器的界面上。
http协议:
HTTP(HyperText Transfer Protocol,超文本传输协议)的定义:最早是计算机与计算机之间沟通的一种标准协议,现在http应用于各种领域的端与端之间的通讯协议。
约定的内容:请求/响应报文格式 请求方法—GET/POST 响应状态—200/404/302/304 预设请求/响应头
约定的形式:
1.客户端通过随机端口与服务器的某个固定端口(一般为80端口)建立连接三次握手
2.客户端是通过这个连接 ‘发送请求(请求报文)’ 到服务端
3.服务端监听端口得到客户端发送过来的请求
4.服务端通过连接响应给客户端状态和内容(响应报文)
请求报文格式:请求行====>请求头====>空行====>请求体
响应报文格式:状态行====>响应头====>空行====>响应体
通过header()实现文件下载:
header是用来设置响应头的,里面Content-Type属性可以判断数据格式供浏览器处理,当Content-Type属性的值设置为不识别的值时,文件就会被下载下来,如:
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:[email protected]联系笔者删除。
笔者:苦海