同福

做个PHP框架(1)路由Router(一)基础知识【20201024】

介绍

介绍

福哥打算开始教给大家web编程,相比较java和php两种语言来说,php更加容易上手,所以福哥打算先教给大家基于php语言的web编程。web编程一定是建立在web框架上面进行的,福哥在对比yii和laravel以及福哥自主研发的tfapi三个web框架之后,觉得还不如带着大家一起做一个属于我们自己的web框架,这样可以让大家对于web编程有着更为深刻的理解,而且对于自己做出来的框架自由度会更高,成就感会更高。

这个web框架的名称之前的教程里有所提及,既然福哥的网站是“同福网”,然后选择的开发语言是php,而php又不适合做web编程之外的工作,最后决定我们的新web框架的名字就选定为——TFPHP了,就是“同福PHP”的意思。

在制作web框架(特指TFPHP,后面会以TFPHP指代我们的web框架)之前,我们需要了解一些关于web的相关知识,今天涉及到的知识点有:URI/URL,web服务器,虚拟主机,虚拟目录,域名等等

URI/URL

URI和URL是一个缩写,分别表示Universal Resource Identifier和Universal Resource Locator,它们都是用来定位一个具体的资源的。

URI

URI又称统一资源标识符,它可以作为任何一个具体资源的“标识”来使用

URL

URL又称统一资源定位符,它可以作为任何一个具体资源的“位置”的描述来使用

区别

URI的范围比URL要更宽一些,URI可以描述的资源范围更为广泛,而URL只是定位一个资源在网络上的“位置”信息。

一般情况下,在web编程里面的把“网站网址”归为URL更加合适,所以我们提到URL其实就是说的一个具体的网站地址。

格式

URL的格式如下:

[协议]://[域名/IP]:[端口]/[资源路径]?[参数]

示例:

https://tongfu.net/topic_search.html?q=php

web服务器

web服务器是一种遵循HTTP协议的网络服务,比较主流的web服务器软件包括:Apache、IIS、Tomcat等等。通过web服务器我们可以发布我们的网站,发布我们的平台,发布我们的系统。

ff4031b67fd05581.jpg

端口

默认web服务器是监听80端口的,这也是web服务的默认端口,我们可以通过Apache的Listen命令监听更多端口给虚拟主机使用。

打开配置路径,找到Listen关键字,增加如下设置:

[root@tfdev ~]# cd /tongfu.net/env/httpd-2.4.46/
[root@tfdev httpd-2.4.46]# vi conf/httpd.conf

06302a2aa490d05f.jpg

虚拟主机

虚拟主机(Virtual Host)是web服务器软件为了发布不同IP,不同域名,不同端口的多个网站、平台、系统时候使用的分配规则。

一个web服务器可以监听多个端口,通过不同的端口建立不同的网站的方式称之为基于端口的虚拟主机。

一个web服务器可以解析多个域名,通过不同的域名建立不同的网站的方式称之为基于域名的虚拟主机。

虚拟主机的作用是将用户发送过来的URL网址进行解析后映射到服务器上面的资源并返回资源内容展示给用户,这里的资源包括网页、图片、视频等等。

打开配置文件,放开虚拟主机配置:

[root@tfdev httpd-2.4.46]# vi conf/httpd.conf

4be70377a25c5b85.jpg

打开配置文件,删除默认的两个虚拟主机(VirtualHost)配置信息,增加如下信息:

[root@tfdev httpd-2.4.46]# vi conf/extra/httpd-vhosts.conf

29cc950faf032d49.jpg

重启Apache服务,这里会提示找不到tfphp目录,没关系我们下一课再建立它

[root@tfdev httpd-2.4.46]# ./bin/apachectl restart
AH00112: Warning: DocumentRoot [/tongfu.net/web/tfphp] does not exist

主目录

虚拟主机必须设置一个“主目录”,它会自动将网址的资源路径映射到服务器本地目录上。

域名

虚拟主机可以通过IP地址访问,也可以通过域名访问,我们可以为虚拟主机指定特殊的域名,设置域名后该虚拟主机必须通过设置的域名才能访问。

总结

学完了今天的课程后,大家会发现一个问题,就是网站是通过web服务器发布的,web服务器分配多个虚拟主机用来发布网站,虚拟主机会将URL的资源路径映射到服务器本地目录上。那么如果我们可以控制这个“映射”的行为,就可以使用TFPHP的路由的功能了,是不是这样?

下一课我们会开始讲解使用Apache的rewrite模块实现控制“映射”网址的资源路径,从而实现自定义网站路由的目的。

P.S.

微信公众号的文章发出去之后是不能编辑的,但是福哥偶尔会修复一些描述不到位、示例不正确、结构不清晰等等的文章错误,这些只能在网站上才能看到最新版本内容,望大家知晓~~