端口监听(自拟定端口号)
端口:一个数字,目的是让一台电脑(对外只有一个IP)能够对外提供多项服务(多种功能)。
常见的服务和端口对应(默认):
web服务器: 80 ftp服务器 :21 mysql数据库服务:3306
一台电脑有6万多个端口,但通常一台服务器一般只提供几个或十几个服务
apache的端口监听设置,指设定apache这个软件针对当前服务器的哪些端口提供web服务。
在httpd.conf文件中进行配置
原始配置 Listen 80
可增加对另一个端口的服务:Listen 808
主机配置关键项(自定义网站根目录)
主机,虚拟主机,web站点,是指一个可以通过浏览器并使用某个域名进行访问的“web应用”。
一个主机(站点)核心包括
主机(站点)名称:ServerName “主机名”
主机(站点)的实际文件位置:DocumentRoot “站点的实际完整路径”
apache的作用实际就是一个"转换"角色:将当前电脑中的某个文件夹,对外以某个域名(站点)的方式展现。换句话说:站点的本质就是一个文件夹。
- httpd.conf文件中的配置:
ServerName www.php.com(默认情况下主机名前有#,即被注释,不起作用)
DocumentRoot ”E:/amp/apache/htdocs“(网站根目录可修改)
apache工作原理:
当一个请求通常为域名解析进入到当前apache并端口匹配成功后,apache就会开始提供服务。
1.在站点设置中找到ServerName项,看是否匹配请求中的主机名
2.如果找到,则在对应的目录(DocumentRoot配置项)中找相应的文件(可能是index.php或其他)
3.如果找到,则返回该文件(或调用php语言模块执行后返回)
4.如果第2步没有找到相应请求的主机名,那么就将第一个主机当作准备提供服务的主机
可见:只要IP解析和端口能够进入到当前服务器并匹配apache端口设定,则apache一定会提供服务---即使主机名不匹配。(在开发环境中域名解析在操作系统的hosts文件(也是系统文件)中设置,位置在:window操作目录/system32/drivers/etc/hosts)
目录的访问设置------修改设置的网站根目录及文件夹的权限,使其可以被访问
一个网站的访问是有权限的。初始站点所对应的文件夹,安装的时候已经设置好权限,当修改网站根目录后,要对该文件夹的权限进行设置。
- 在httpd.conf中添加该文件的访问权限:
<Directory "E:/amp/apache/htdocs">
Options Indexes(用于设定“可显示文件列表”,当无可显示网页时)
Order deny,allow(用于设定判断顺序:先拒绝,后允许)
Allow from all(允许所有,这里没有设定拒绝)
</Directory>
2.我们也可以使用一个单独的文件来控制文件夹的访问权限
该文件的文件名必须是:.htaccess
注意:
(1)只有后缀和点号(无文件名部分)
(2)该文件必须放在要被控制访问权限的文件夹中(不同的文件夹可以放不同的该文件)
(3)其“上级文件夹”(通常是<Directory>设定的文件夹)必须使用如下代码允许.htaccess发挥作用
AllowOverride All
(4).htaccess文件中出现的代码,几乎可以与<Directory>设定中出现的代码一样
(5)如果.htaccess文件有效,则其设置会覆盖其上级设置
(6).htaccess文件修改后可以立即发挥作用,无需重启apache
示例:
.htaccess DirectoryIndex index.php
在上级文件夹允许的情况下可发挥作用
其他相关设置- 设置默认网页
我们访问网站时,可以指定要访问的网站,如:http://www.php.com/day/page.php也可以不指定,比如http://www.php.com/day。
对于后一种情况,是因为apache可以设定“默认网页”,形式为:
<IfModule dir_module>
DirectoryIndex index.html index.php(可以写多个,依次作为要用的默认网页)
(这句代码也可以写在<Directory “E:/amp/apache/htdocs”>设置下,只对该文件夹及其下属文件有效)
</IfModule>
此时,对于没有明确指定要访问的网页请求时,会按顺序从前往后寻找,找到后返回给用户,如果没有找到,则文件访问权限设置中的Options Indexes发挥作用:显示该文件夹中的所有文件。
-
主机别名设置
在应用中,通常可以用两种形式来访问一个站点:
此时,相当于“2个站点(主机名)”但访问的是一个内容,就需要使用主机别名来实现:ServerAlias 别名1 别名2 别名3。。。
设置主机别名后,要在操作系统的hosts文件(也是系统文件)中进行修改,位置在:window操作目录/system32/drivers/etc/hosts,以便域名解析正确
-
目录别名设置
目录别名也叫虚拟目录
一个站点是一个文件夹(目录),该文件夹中可以有其下级文件夹(目录)
实际存在的下级目录,可以按正常的文件夹访问层级关系进行访问,比如:
http://www.php.com 根文件夹(站点目录)
http://www.php.com/day1 根文件夹中day1目录
然而,在一个站点中,如果不存在某个文件夹(目录),可以通过配置项,来做到“对外”看起来却存在一样,比如:http://www.php.com/soft (站点中不存在soft目录),但我们可以让该地址可访问,这就是目录别名(虚拟目录)
在httpd.conf文件中设置:(全局位置)(相对于多站点配置而言)
<IfModulealias_module>
Alias /soft "E:\amp\php\apache22"(真实路径)
</IfModule>
可见,通过技术可以将一个站点之外的“网页、数据、内容”也呈现在当前站点。多站点配置
1.首先,在httpd.conf中打开多站点配置文件:
Include conf/extra/httpd-vhosts.conf(去掉#号)
2.打开该文件,在httpd-vhosts.conf中设置要进行多站点配置的ip和端口,默认已设置好
NameVirtualHost *:80(*代表当前服务器的所有IP地址,通常只有一个)
3.往后依次一个一个站点配置就可以了,可设置主机名,主机目录,目录访问等。
注意:一旦进行多站点配置,原来httpd.conf中的默认站点设置就失效了。
示例:
<VirtualHost *:80>(*:80与前边NameVirtualHost的设置一致)
ServerName www.php.com
ServerAlias php.com(主机别名设置,在域名解释正确的情况下可用该别名访问)
DocumentRoot " E:/amp/apache/docs/dummy-host.bupt.edu.cn"
<Directory " E:/amp/apache/docs/dummy-host.bupt.edu.cn">(文件夹路径设置与DocumentRoot后一致)
Options Indexes
AllowOverride All(允许该文件夹中的.htaccess文件生效,根据需要设定)
Order allow,deny
Allow from all
Deny from 192.168.3.33
DirectoryIndex index.html index.php(设定默认网页)
</Directory>
Alias /soft “E:\amp\php\apache22”(此别目录只在该站点下有效)(对多站点配置而言)
</VirtualHost>