PHP环境和虚拟主机的创建(phpstudy + wamp)
本文涉及两款php的集成环境
- phpstudy
- wampserver
这两款都含mysql + apache + php,phpstudy的功能比wamp要强大,并且十分简单容易上手。
phpstudy易用性是因为它帮我们封装了很多繁琐易出错的操作,但是如果直接使用它 我们并不了解其背后的实现方式,所以先学习wamp可以让我们熟悉一下原理。
一、wamp创建网站
1.1 了解默认网站程序
安装完成后,托盘图标是正常的绿色。
php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用
我的程序是安装在了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
一旦定义允许目录浏览,就会将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 ,allow
Deny from baidu.com
Deny from 192.168.66.6除了来自baidu.com域和ip地址为192.168.66.6的客户机外,允许所有客户机访问
Order deny ,allow
Allow from 192.168.66.6
Deny from 192.168.66.1既匹配Deny语句又匹配Allow语句,由于allow语句覆盖了deny语句,所以是允许所有客户机访问
Order allow ,deny
Allow from 192.168.66.6
Deny from 192.168.66.1既匹配Deny语句又匹配Allow语句,由于deny语句覆盖了allow语句,所以是禁止所有客户机访问
登录后复制
推荐学习:《PHP视频教程》
以上就是教你创建虚拟主机并运行php项目(phpstudy + wamp)的详细内容,更多请关注自由互联其它相关文章!