php环境和虚拟主机的创建(phpstudy + wamp)
本文涉及两款php的集成环境
phpstudywampserver这两款都含mysql + apache + php,phpstudy的功能比wamp要强大,并且十分简单容易上手。
phpstudy易用性是因为它帮我们封装了很多繁琐易出错的操作,但是如果直接使用它 我们并不了解其背后的实现方式,所以先学习wamp可以让我们熟悉一下原理。
一、wamp创建网站1.1 了解默认网站程序安装完成后,托盘图标是正常的绿色。
我的程序是安装在了d:\wamp64,发现正常后直接访问页面localhost,默认的端口是80,可以忽略
得到正常的响应,这个页面来源于d:\wamp64\www\index.php,也就是wamp安装目录下的www文件夹存放着默认的网站程序。
1.2 创建新的虚拟主机此时我们需要先了解一下几个文件。
hosts,文件位置:c:\windows\system32\drivers\etc
作用就是将一些常用的网址域名与其对应的ip地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的ip地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交dns域名解析服务器进行ip地址的解析。
httpd.conf,文件位置:d:\wamp64\bin\apache\apache2.4.17\conf这个文件是apache 的配置文件,一般不需要改动的。
httpd-vhosts.conf,文件位置:d:\wamp64\bin\apache\apache2.4.17\conf\extra这个文件是虚拟主机文件,要创建新的网站时都需要在该文件中配置才生效。
下面我有一个需求:
一台电脑只跑一个程序我觉得过于浪费,而且我本机的80端口被占用,我想开一个网站用test.com:81来进行访问
一)、按照hosts文件的作用,当我访问test.com:81的时候我需要它直接跳转 而不去进行dns域名解析
所以 ,按照固定格式 在hosts文件中添加一行
# 当访问www.test.com时 , 我们告诉电脑直接解析到本机127.0.0.1 不用去dns域名解析。# :81属于端口号 不需要添加到这里127.0.0.1 www.test.com
二)、上一步只告诉电脑解析到本地,但是我们还没有对应的虚拟主机
所以需要在httpd-vhosts.conf中配置一个新的虚拟主机。
<virtualhost *:设置的端口号> documentroot 网站程序目录 servername 绑定的域名 serveralias 绑定的域名别名 <directory "网站程序目录"> options followsymlinks execcgi allowoverride all order allow,deny allow from all require all granted </directory></virtualhost>
另外virtuahost *:端口号
这里填写完之后并不会生效,原因是我们没有允许apache启用虚拟主机,现在去启用,在 httpd.conf文件中
最后设置一下,wamp的apache服务的默认端口:
成功获得响应。
二、phpstudy创建网站看完了wamp后真是感觉非常的繁琐,接下来用phpstudy试试。
需求不变,还是创建一个网站www.test.com:81,
1.1 效果演示一)、直接启动apache
二)、创建网站
根目录选择项目的根目录
三)、查看效果
这就完成了…
1.2 配置文件查看使用过wamp后我们知道,配置一个虚拟主机需要改三个文件,下面看一下phpstudy的操作。
一)、hosts
由于做wamp的时候已经手动添加过了,所以这个文件看不出来两者的差异。
二)、httpd.conf和vhost.conf
在wamp中,我们将多个虚拟主机的配置项都放在了一个文件中。
在phpstudy里,将每个网站的配置项单独抽离出个自己的文件并放到了一个文件夹中。
httpd-vhosts.conf详解首先看下面的配置:
<virtualhost *:80> serveradmin webmaster@dummy-host.example.com documentroot d:/xampp/htdocs/wherein servername www.shop_dev.com errorlog logs/wherein.com-error.log customlog logs/wherein.com-access.log common <directory "d:/xampp/htdocs/wherein"> options followsymlinks includesnoexec indexes directoryindex index.html index.htm index.php allowoverride all order deny,allow allow from all require all granted </directory></virtualhost>
serveradmin指令:
语法: serveradmin email-address|url
用来设置服务器返回给客户端的错误信息中包含的管理员邮件地址。便于用户在收到错误信息后能及时与管理员取得联系。
servername指令:
语法:servername [scheme://] fqdn [:port]
用来设置服务器用于辨识自己的主机名和端口号。主要用于创建重定向url。
documentroot指令:
语法:documentroot directory-path
用来设置httpd提供服务的目录。即你所在项目入口处的文件夹。
errorlog指令:
语法: errorlog file-path
来设置当服务器遇到错误时记录错误日志的文件。如果file-path不是以/开头的绝对路径,那么将会被认为是一个相对于serverroot的相对路径。
customlog指令:
语法: errorlog file-path common
设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。
<directory 目录路径>…</directory>
为主目录或虚拟目录设置权限。
特性:
options followsymlinks includesnoexec indexes
命 令说 明
indexes 允许目录浏览当客户仅指定要访问的目录,但没有指定要访问目录下的哪个文件,而且目录下不存在默认文档时,apache以超文本形式返回目录中的文件和子目录列表(虚拟目录不会出现在目录列表中)
multiviews 允许内容协商的多重视图multiviews其实是apache的一个智能特性。当客户访问目录 中一个不存在的对象时,如访问“http://192.168.66.6/data/a”,则apache会查找这个目录下所有a.*文件。由于 data目录下存在a.gif文件,因此apache会将a.gif文件返回给客户,而不是返回出错信息
all all包含了除multiviews之外的所有特性,如果没有options语句,默认为all
execcgi 允许在该目录下执行cgi脚本
followsymlinks 可以在该目录中使用符号连接
includes 允许服务器端包含功能
includesnoexec 允许服务器端包含功能,但禁用执行cgi脚本
一旦定义允许目录浏览,就会将web站点的文件夹和文件名结构暴露给黑客。目录浏览还会允许黑客浏览文件并掌握服务器配置信息,所以指定该权限往往带来安全性上的隐患。除非有充足的理由要使用目录浏览,否则应该禁用它。
directoryindex index.html index.htm index.php
设置访问目录后进入的默认文件
allowoverride all
定义位于每个目录下.htaccess(访问控制)文件中的指令类型。none为禁止使用.htaccess文件
order deny,allow
allow from all
设置缺省的访问权限与allow和deny语句的处理顺序
allow, deny:缺省禁止所有客户机的访问,且allow语句在deny语句之前被匹配。如果某条件既匹配deny语句又匹配allow语句,则deny语句会起作用(因为deny语句覆盖了allow语句)。
deny, allow:缺省允许所有客户机的访问,且deny语句在allow语句之前被匹配。如果某条件既匹配deny语句又匹配allow语句,则allow语句会起作用(因为allow语句覆盖了deny语句)。
eg.
order deny ,allowdeny from baidu.comdeny from 192.168.66.6除了来自baidu.com域和ip地址为192.168.66.6的客户机外,允许所有客户机访问order deny ,allowallow from 192.168.66.6deny from 192.168.66.1既匹配deny语句又匹配allow语句,由于allow语句覆盖了deny语句,所以是允许所有客户机访问order allow ,denyallow from 192.168.66.6deny from 192.168.66.1既匹配deny语句又匹配allow语句,由于deny语句覆盖了allow语句,所以是禁止所有客户机访问
推荐学习:《php视频教程》
以上就是教你创建虚拟主机并运行php项目(phpstudy + wamp)的详细内容。