mysql执行原理
mysql客户端有多种:
- cmd命令行
- php网页文件
- navicat文件
虚拟主机配置
端口监听
端口:一个数字,让一台电脑(对外只有一个IP)能够对外提供多项服务(多种功能)。
- web服务:80
- ftp服务:21
- 邮件收取服务:110
- 邮件发送服务:25
- mysql数据库服务:3306
一台电脑有6万多个端口,但通常一台服务器只提供几个或10几个服务
原有配置:
表明提供web服务,换一个端口发现无法提供web服务,如下:
主机配置关键项
主机(虚拟主机,也叫web站点):指一个可以通过浏览器并使用某个域名进行访问的“web应用”
主机(站点)核心:
- 主机名:ServerName "主机名"
- 主机的实际文件夹位置:Document "站点的实际完整路径"
apache的作用:“转换角色”:将当前电脑中的某个文件夹,对外以某个域名(站点)的方式展现出来。换而言之:站点的本质就是一个文件夹。
当一个请求通过域名解析(在hosts文件中能匹配)并进入到当前apache并端口匹配成功后,apache就会开始提供“服务”
- 在站点设置中找ServerName项,看是否匹配请求中的主机名
- 如果找到,在对应的目录中(documentRoot配置项)中找相应的文件(可能是index.php或其他文件)
- 如果找到,则返回该文件(或调用php语言模块执行后返回)
- 如果第二步没有找到对应的主机名,那么将第一个主机当做提供服务的主机
可知:只要ip解析和端口能够进入到当前服务器并匹配apache的端口设定,则apache一定会提供服务--即使主机名不匹配
根据上述修改配置:
进行访问被禁止:
原因是:文件夹的访问权限问题,初始的站点对应的文件夹,安装的时候就已经设置好了权限,而我们设定的文件夹没有权限。
下面添加文件夹访问权限:
结果显示为:
访问一个站定时,可以指定要访问的网页:
http://www.newphp.com/copyhtdocs/phpinfo.php
http://www.newphp.com/copyhtdocs/base.php
也可以不指定:
http://www.newphp.com/copyhtdocs/
http://www.newphp.com/
对于后一种情况,apache设置“默认网页”以提供给用户,形式为
修改为:
由于www.newphp.com/copyhtdocs没有明确网页但含有默认网页base.php,则运行该默认网页(如果也没有默认网页,则options中的indexes就发挥作用:显示文件列表):
当然,也可以将DirectoryIndex设置项单独放在一个单独的站点或单独的文件夹中,则只对该单独的站点和文件夹起作用
主机别名设置
应用中经常可以使用不同的形式来访问一个站点:
http://www.abc.com
http://abc.com
通常越来越流行后者。此时,就相当于“2个站点(主机名)”,但访问的是同一个内容,此时就需要主机别名来实现:
ServerAlias 别名1 别名2 别名3 ......
文件夹访问控制的文件控制方式
通常在config配置文件中使用Directory配置项,目的是控制文件夹的访问权限,但我们也可以使用一个独立的文件来控制某文件夹的访问权限,一般这个独立的文件用来控制该路径下文件夹的默认主页
文件名必须是:.htaccess
注意:
- 该文件只有后缀和点号(无文件名部分)
- 该文件必须要放在被控制访问权限的文件夹中(不同的文件夹放不同的文件)
- 其“上级文件夹”(通常是Directory设定的文件夹)必须使用如下代码允许.htaccess发挥作用:AllowOverride All
- .htaccess文件中出现代码,几乎可以跟Directory设定出现的代码一样
- 如果.htaccess文件有效,则其设置会覆盖其上级设置
- .htaccess文件修改后可以立即发挥作用,无需重启apache
并设置:
目录别名设置
目录别名:虚拟目录,即本身不存在的目录
一个站点就是一个文件夹(目录),该文件夹自然存在其下级文件夹(目录),实际存在的下级目录,可以按正常的文件夹访问层次关系进行访问,比如
- http://www.newphp.com/
- http://www.newphp.com/copyhtdocs/
- http://www.newphp.com/copyhtdocs/abc/
当一个站点中如果不存在某个文件夹(目录),可以通过配置项做到“对外”看起来存在一样
比如:
http://http://www.newphp.com/soft/ 假设不存在该目录,可以让该地址“可访问”,这就是目录别名
开始设置:
重启运行后可知:
设置该文件夹的访问权限:
再次访问:
可见,可将一个站点之外的“网页、数据、内容”也呈现在当前站点中。
多站点配置
首先,在httpd.conf中打开多站点配置文件:
改为:
打开该文件(httpd-vhosts.conf),设置要进行多站点配置的ip和端口,形式如下:
NameVirtualHost IP:端口
*表示当前服务器的所有ip地址(通常也就一个)
3.往后一个一个站点设置就行:
(注意一旦进行多站点设置,原来httpd.conf中的默认站点配置失效)