PHP介绍

静态网页(网站)

就是不会“变化”的网页(内容)。

动态网页(网站)

就是会因浏览的时间或不同的人而呈现不同内容的网页。

重要理念:后台程序(比如php)的运行结果(动态程序),最终的目的,是为了“输出”前台的静态网页。

PHP发展史

英文:PHP: Hypertext Preprocessor,超文本预处理器

  • PHP/FI (form Interpreter)在 1995 年由 Rasmus Lerdorf 创建。起初脚本取名为“Personal Home Page Tools”。
  • PHP/FI 2.0 于 1997 年 11 月发布了官方正式版本。
  • Andi Gutmans 和 Zeev Suraski 在开发中,发现 PHP/FI 2.0 功能明显不足,于是他们重写了代码。这就是 PHP

    3.0,这是比较接近现在PHP语法的一个版本。
    
  • 2000年5月,PHP4.0诞生,性能得到很大的提升。
  • 2004 年 7 月,PHP5.0发布,引入了新的对象模型和大量新功能,也是目前应用中的主流版本(5.4)。
  • PHP6由于种种原因,没有正式发布。
  • 最新的PHP版本是PHP7。

全世界大约80%以上的网站都使用了php技术作为网站后台服务程序,如下所示:

各种网站编程语言占比
各种网站编程语言占比

数据来源:w3techs.com

PHP的特点

  • web服务器端的主流开发语言,用来实现用户的请求
  • 开源软件,所有操作系统下均可运行。
  • 入门简单,快速开发。
  • 支持主流数据库,比如MySQL,MSSQL,Oracle等

PHP运行环境介绍

网络应用发展介绍

C/S模式(结构):

  • C: Client(客户端)
  • S: Server(服务器端)

B/S模式(结构):

  • B: Browser(浏览器)
  • S: Server(服务器)

B/S模式的访问原理,就是通常所说的“上网”,图示如下:

网页浏览原理
网页浏览原理

PHP动态网站运行原理

图示如下:

PHP动态网站运行原理
PHP动态网站运行原理

  • 数据库软件: MySQL, MSSQL, Oracle, db2, informix。。。。。
  • Web服务器软件: Apache, Nginx, IIS, 。。。
  • 浏览器软件: Chrome, FF, IE。。。

那,PHP在哪儿?继续展开“网站服务器”部分,如下图所示:

网站服务器运行PHP原理
网站服务器运行PHP原理

  • Web服务器:Apache
  • 后端语言:PHP
  • 数据:MySQL

几个不同的PHP运行环境

WAMP环境: Windows + Apache + MySQL + PHP

LAMP环境: Linux + Apache + MySQL + PHP

LNMP环境: Linux + Nginx + MySQL + PHP

今天要解决的最主要的问题:搭建一个可以执行PHP程序的web服务器,并使用PHP输出“hello world”, 以及当前时间,并能够“连接到数据库”。

PHP运行环境安装总体目录规划

确定我们要安装的3个软件的对应目录类似如下所示:

H:/itcast/class/bj-php-69/wamp/

  • apache/
  • php/
  • mysql/

特别注意:

  1. 安装的整个路径中不要出现中文和空格等特殊字符。
  2. 以后php文件名也不要出现中文和空格等特殊字符。

Apache的安装

Apache的安装

对应的软件如下:

  • php-7.1.30-Win32-VC14-x86
  • httpd-2.4.29-Win64-VC15.zip
  • mysql-5.5.28-win32.rar

Apache安装步骤:

  1. 解压“httpd-2.4.29-x86-r2.zip”,并将解压后的所有文件拷贝到目标文件夹wamp/apache下。
  2. 修改apache主配置文件(httpd.conf)中的“SVRROOT”为apache的实际目录。

提示:要修改的文件为:wamp/apache/conf/httpd.conf,大约第38行处。

# 修改Apache路径
Define SRVROOT "C:\Users\myxc\Documents\wamp\apache"
ServerRoot "${SRVROOT}"
  1. 管理员模式下运行cmd(或powershell),并在其中运行apache/bin下的命令httpd.exe,如下所示:
PS C:\Windows\system32> C:\Users\myxc\Documents\wamp\apache\bin\httpd.exe -k install
Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
httpd.exe: Syntax error on line 188 of C:/Users/myxc/Documents/wamp/apache/conf/httpd.conf: Cannot load C:/Users/myxc/Documents/wamp/php/php7apache2_4.dll into server: %1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3
PS C:\Windows\system32>

如果想要删除该服务,则运行:httpd.exe -k uninstall

在上述命令执行成功后可以在任务管理器服务面板中看到Apache已经启动,若删除该服务则停止。

Apache2.4服务
Apache2.4服务

  1. 双击打开如下文件并启动服务:wamp/apche/bin/ApacheMonitor.exe,启动后电脑状态栏右下角有Apache启动。

启动Apache软件
启动Apache软件

  1. 再双击图标:

Apache启动界面
Apache启动界面

注意:

报错:Apache提示 the requested operation has failed无法启动问题

如果安装失败,有可能是缺少如下的windows系统模块:vc_redist.x64.exe,则先双击安装它,然后再安装apache!

如果还不可以,请检查电脑80端口是否被其他应用占用,可以关闭使用80端口的软件或者在Apache配置文件中搜索Listen 80(大约在61行左右),对Apache默认端口进行更改。

netstat -aon|findstr "80"

记得在Apache配置文件httpd.conf中,文件根目录也要更改(256~258行左右):

DocumentRoot "C:\Users\myxc\Documents\wamp\apache\htdocs"
<Directory "C:\Users\myxc\Documents\wamp\apache\htdocs">

测试安装结果

在浏览器中测试安装后的“默认网站”:

浏览这个地址: http://localhost,或http://127.0.0.1

可以看到页面,就表示安装配置成功!

配置成功页面
配置成功页面

我们还可以将之前做好的“京东商城”项目文件(index.htm和相关文件夹和文件)拷贝到apache/htdocs/jingdong/目录中,并进行浏览,就成为了一个较为正式的网站的网页了。

一个重要理念:

  • 所谓一个网站,就是一个文件夹!
  • 所谓一个网页,就是一个文件!!

Apache目录介绍

目录/文件介绍
bin/.exe, .dll等主要可执行程序的目录。
ApacheMonitor.exe监视程序,通常用于apache服务的启停操作。
httpd.exeweb服务器的主程序。该程序启动时,才能访问服务器。 (通常都是以系统服务的形式启动)
conf/apache的配置文件目录
httpd.conf是Apache的主配置文件,每次启动都会读取的文件。
conf/extra/其他配置文件目录
httpd_vhosts.confApache虚拟主机的配置文件
htdocs/网站的默认根目录,用于保存网站中的网页文件(html、php等)
logs/存放apache运行时的有关运行记录
modules/存放Apache的可扩展模块文件。

Apache的配置

apache主配置文件:httpd.conf

apache的主配置文件为:wamp/apache/config/httpd.conf

注意:

  1. 配置文件可以修改以实现某些功能。
  2. 配置文件修改后,需要重启apache才生效。
  3. 配置文件代码如果出错——则apache重启时会失败。

检测配置文件语法

我们当然是试图写“正确的”代码,但谁都有可能出错。关键是,我们常常不容易看出错在哪里!这就需要有个“工具”来给我们指引方向:尽可能指出错误所在!

工具有现成的,就是:wamp/apache/bin/httpd.exe 这个文件(命令行文件)

用法:

在cmd命令行窗口中:

PS C:\Users\myxc\Documents\wamp\apache\bin> httpd.exe -t
httpd.exe : 无法将“httpd.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确
保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ httpd.exe -t
+ ~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (httpd.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


Suggestion [3,General]: 找不到命令 httpd.exe,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载 命令。如果信任此命令,请改为键入“.\httpd.exe”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
PS C:\Users\myxc\Documents\wamp\apache\bin> C:\Users\myxc\Documents\wamp\apache\bin\httpd.exe -t
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7966:c376:d986:ab09. Set the 'ServerName' directive globally to suppress this message
Syntax OK
PS C:\Users\myxc\Documents\wamp\apache\bin>

如图所示,如果未配置环境变量,则必须加完整路径才可以启动软件检测语法错误。

错误演示:

PS C:\Users\myxc\Documents\wamp\apache\bin> C:\Users\myxc\Documents\wamp\apache\bin\httpd.exe -t
AH00526: Syntax error on line 255 of C:/Users/myxc/Documents/wamp/apache/conf/httpd.conf:
DocumentRoot 'C:/Users/myxc/Documents/wamp/apacheasas' is not a directory, or is not readable
PS C:\Users\myxc\Documents\wamp\apache\bin>

Syntax error:语法错误;on line 255:在255行;C:/Users/myxc/Documents/wamp/apache/conf/httpd.conf:配置文件路径。

配置环境变量

如果配置好环境变量,该命令的执行就更便捷,类似这样:

httpd.exe(直接写文件名,无需路径) - t

配置环境变量的具体做法:

我的电脑》》右键》》属性,如下所示:

配置环境变量
配置环境变量
配置环境变量-第二步
配置环境变量-第二步

在上述“path”中进行编辑,将httpd.exe所在的文件夹路径添加到里面,并使用英文分号(;)跟前面的隔开(单行需要加分号,多行只需新写一行即可),写完之后一路确定关闭窗口。

特别注意:不要删除之前的内容!!!!!!!!!!!!配置好之后,就可以直接使用简单的命令语法了。

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS C:\Users\myxc> httpd -t
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7966:c376:d986:ab09. Set the 'ServerName' directive globally to suppress this message
Syntax OK
PS C:\Users\myxc>

Apache的启动和停止

启动了apache,就表示web服务器可以使用(网站可以访问)。

停止了apache,就表示web服务器不能使用(网站不能访问)。

方式1:通过Apache服务监视器(apachemonitor.exe)

文件apachemonitor.exe的位置在wamp/apache/bin目录中。

方式2:通过window系统服务:

Apache2.4服务
Apache2.4服务

方式3:通过命令行方式(需管理员身份):

PS C:\Users\myxc> net start apache2.4
请求的服务已经启动。

请键入 NET HELPMSG 2182 以获得更多的帮助。

PS C:\Users\myxc> net stop apache2.4
Apache2.4 服务正在停止.
Apache2.4 服务已成功停止。

PS C:\Users\myxc> net start apache2.4
Apache2.4 服务正在启动 .
Apache2.4 服务已经启动成功。

PS C:\Users\myxc>

注意:命令行中的apache2.4并不是绝对的,要看windows服务面板中的服务名字为什么。

认识几个相关概念

服务器:

一般,指对外界提供某种功能服务的计算机系统。通常有这些常用服务器: web服务器, 邮件服务器, ftp服务器, .....

客户端:

通常就是访问服务器的终端设备。在web访问领域,通常也指浏览器软件。

请求:

就是客户端向服务器端发出一定的“信息”,告知服务器“需要什么”。

响应(应答):

服务器根据访问者(请求方)的请求所返回的相应结果,结果其实就是一个网页。

IP地址:

就是一个服务器的在互联网上的“数字身份”,是其给分配的一个数字编码,类似这样:192.168.19.22、112.34.123.82。小细节:共分4段,用英文点号(.)分割,每一段的数字只能从0-255。特殊IP地址:127.0.0.1:表示本机,就是自己正在操作(运行程序)的电脑的ip;192开头,172开头的ip地址:规定只用于局域网的ip地址。

域名:

就是一个服务器的对外“好看好记”的名字。取域名的作用,最主要是给人看,使人容易记住。浏览器通过域名并不能找到对应服务器,而需要转换为ip地址才能找到——这就是“域名解析”过程。

域名解析:

就是,输入域名时由某种设备或技术,将该域名转换为“ip地址”的过程——这样才能找到该服务器。域名解析服务器(DNS):互联网上放置的很多的专门用于进行域名解析(域名转换为ip)的服务器设备。所谓,解析,其实非常简单,就是“找对应关系”,比如:

PS C:\Users\myxc> ping www.manyacan.com

正在 Ping www.manyacan.com [120.26.185.254] 具有 32 字节的数据:
来自 120.26.185.254 的回复: 字节=32 时间=35ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=36ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=35ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=37ms TTL=52

120.26.185.254 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 35ms,最长 = 37ms,平均 = 35ms
PS C:\Users\myxc> ping jps.zone

正在 Ping jps.zone [120.26.185.254] 具有 32 字节的数据:
来自 120.26.185.254 的回复: 字节=32 时间=37ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=35ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=36ms TTL=52
来自 120.26.185.254 的回复: 字节=32 时间=36ms TTL=52

120.26.185.254 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 35ms,最长 = 37ms,平均 = 36ms
PS C:\Users\myxc>

其含义是:访问某个域名(网站),就可以找到对应该域名所在行的IP地址。每台电脑,都有一个最精简的最小规模的“域名解析服务器”,其实只是一个文件,位置在这里:windows/system32/drivers/etc/hosts(注意,最后这个是一个没有后缀的文件名)。在有些操心系统中,需要使用“管理员身份”才能修改该文件。

文件路径
文件路径

演示hosts文件:

PS C:\Windows\System32\drivers\etc> type hosts
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
127.0.0.1 demo.manyacan.com
127.0.0.1 www.php69.com
PS C:\Windows\System32\drivers\etc>

若对hosts文件进行修改,之后保存可能需要以管理员身份才能保存。

端口:

可以理解为软件(网络)领域的电子化的“窗口”。其实,无非就是对于“一台”电脑,用于区分其可以对外提供的“多项服务”的一种数字编号设定。

Apache(或别的web服务器软件),默认都使用80端口来提供网站对外访问服务(就是web服务)!

又比如:ftp服务器通常使用21端口来提供文件上传下载服务。邮件服务器通常使用25端口提供发送邮件服务,并使用110端口来提供收取邮件服务。

图示如下:

服务器端口演示
服务器端口演示

统一资源定位器(url)

url:uniform resouece locator,即“统一资源定位器”,即我们通常所说的“网址”,是用于描述网络上某种资源的详细位置信息的一种规范,是一串字符串。其形式如下:

协议://服务器名:端口号[/文件名]

其中,上述中括号中的部分是可以根据具体情况进行省略的。

比如:http://www.baidu.comhttp://www.baidu.com/index.phphttp://ent.people.com.cn/n1/2018/0603/c1012-30030747.html

网站访问流程

从浏览器输入一个网址,到我们看到这个网页展示出来,其中的过程大致为:

  1. 先在本机的hosts文件中,查找域名所对应的ip;
  2. 如找到,则根据该ip就可以找到并访问该服务器了,服务器返回相应网页信息,访问结束。
  3. 如没有找到,则到互联网上的dns服务器中,查找域名所对应的ip;
  4. 如果找到,则根据该ip就可以找到并访问该服务器了,服务器返回相应网页信息,访问结束。
  5. 如果没有找到,则浏览器会有类似“无法找到服务器”的报错提示,访问结束。

网站访问流程
网站访问流程

PHP的安装:

任务描述:

建立一个php文件(hello.php),内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
        echo 'hello world.';
    ?>
</body>
</html>

放到apache/htdocs/目录下,并访问它:

http://localhost/hello.php

PHP的安装也非常简单,就是拷贝文件——因为给大家的是一个“绿色版”。

将PHP语言包的压缩文件解压到计划中的文件夹中即可。

PHP语言包中重要文件和文件夹:

注意:64位系统要安装X64的PHP,32位系统要安装X86的PHP!!!否则报错。

PS C:\Windows\System32\drivers\etc> httpd -t
httpd.exe: Syntax error on line 188 of C:/Users/myxc/Documents/wamp/apache/conf/httpd.conf: Cannot load C:/Users/myxc/Documents/wamp/php/php7apache2_4.dll into server: %1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3
PS C:\Windows\System32\drivers\etc>
  1. php.exe: php程序,用于执行我们写的php脚本代码。
  2. php7apache2_4.dll: 供apche2.4使用的php7模块文件。
  3. php.ini-development 和 php.ini-production:用作php的配置文件。
  4. ext目录: 用于存放php中的扩展模块的文件

配置Apache使Apache可以调用PHP:

在apche的主配置文件apache/conf/httpd.conf中,添加以下两行:

1,加载PHP模块到Apache中(作为Apache的众多模块之一):

在大约180行后,添加如下一行:LoadModule php7_module php7apache2_4.dll这个文件的完整路径(在php文件夹中)

  1. 给apache设定,php文件的后缀为“.php”:

在随后添加如下一行:AddType Application/x-httpd-php .php

# 加载PHP7模块到Apache中,分两步走:
# 加载PHP7模块
LoadModule php7_module "C:/Users/myxc/Documents/wamp/php/php7apache2_4.dll"
# 添加设定PHP文件后缀(当client请求PHP文件时,Apache进行PHP解析.)
AddType Application/x-httpd-php .php

重启apache!!!(重启之前可以对配置文件进行检查)

PS C:\Windows\System32\drivers\etc> httpd -t
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7966:c376:d986:ab09. Set the 'ServerName' directive globally to suppress this message
Syntax OK
PS C:\Windows\System32\drivers\etc>

课堂测试:

新建一个网页hello.php,其中输出“hello world” :

然后访问它:http://localhost/hello.php

结果如下:

hello.php页面执行成功.
hello.php页面执行成功.

查看源代码,如下:

查看网页源代码
查看网页源代码

PHP的基本配置:

PHP的基本配置是一次性工作,做这一次就可以了。

任务描述

下一个任务:通过PHP输出当前时间,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
        echo '<h1>hello world.</h1>';
        echo date('当前时间:Y-m-d H-i-s');
    ?>
</body>
</html>

我们发现输出的时间结果是不对的。这是因为PHP默认使用的时区是“格林威治时间”,比我们早8小时。我们需要对PHP进行配置,并设定其运行时间为我们的北京时间。

获得PHP的配置文件(php.ini)

在PHP语言包文件夹中,将php.ini-development文件拷贝一份,并修改文件名为:php.ini。现在我们将前者改为(或复制为)php.ini,就得到我们需要的PHP配置文件。

配置相关文件

这里需要做两件事情:

1,在apache的配置文件(httpd.conf)中设置php.ini的路径,就是让Apache知道我们的php.ini文件在哪里!apache是需要先读取到php.ini才能生效的。具体做法:在apache的配置文件(httpd.conf)中,添加php模块那行之后,再添加这一行

# 设置php.ini文件路径,注意:只要路径,不要文件名.
PHPIniDir "C:/Users/myxc/Documents/wamp/php"

注意:只要路径,不要文件名

修改配置文件记得检查语法:

PS C:\Windows\System32\drivers\etc> httpd -t
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::7966:c376:d986:ab09. Set the 'ServerName' directive globally to suppress this message
Syntax OK
PS C:\Windows\System32\drivers\etc>

2,在php配置文件(php.ini)中设置timezone为PRC:(936行左右)

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = PRC

然后重启apache,并访问刚才的网页(http://localhost/hello.php),时间显示正常。

提示:以后,还可以(需要)在php.ini中进行其他项目的配置,但在apache的httpd.conf文件指定php.ini文件的位置的工作就不需要重复做了!

查看php执行环境

执行如下语句,就可以查看整个php的执行环境相关信息:

<?php
phpinfo();
?>

php.ini中设置mysql数据库模块

下一步的工作:在php中连接到数据库,

测试代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
        echo '<h1>hello world.</h1>';
        echo date('当前时间:Y-m-d H-i-s');
        echo '<br>';
        if (mysqli_connect('localhost','root','root')){
            echo 'connect success!';
        }else {
            echo 'connect failed!';
        }
    ?>
</body>
</html>

具体做法分3步:

第1步,php.ini中,设置php的模块位置(找关键字extension_dir),在734行左右。

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; 引入PHP拓展文件夹
extension_dir = "C:\Users\myxc\Documents\wamp\php\ext"

第2步,php.ini中,开启mysqli模块(实际上,只是去除注释,关键字php_mysqli),在905行左右。

; 让PHP启用加载mySQL数据库模块
extension=php_mysqli.dll

第3步,安装mysql数据库并配置它(这是一个完整的安装过程)。

MySQL的安装

选择自定义安装(假装高端人士)。

安装第一步
安装第一步

然后一步一步往下安装:

将默认文件夹都改为已经设定好的位置
将默认文件夹都改为已经设定好的位置

然后选择Next,然后Install(复选框勾选进入配置模式)。

安装成功
安装成功

MySQL的配置

mysql安装结束后,就可以理解进入到配置环节:

选择详细配置
选择详细配置
选择开发模式
选择开发模式
多功能数据库
多功能数据库
这一步默认
这一步默认
设置数据库同时访问人数
设置数据库同时访问人数
加入到防火墙信任名单
加入到防火墙信任名单
设置数据库编码
设置数据库编码
添加mySQL到windows环境变量
添加mySQL到windows环境变量
设置数据库密码
设置数据库密码
对数据库配置进行检查
对数据库配置进行检查
检查成功
检查成功

测试在PHP中连接MySQL数据库

重新测试刚才的连接数据库的程序, 结果为:

重新加载之前的PHP链接程序
重新加载之前的PHP链接程序

至此,我们有关PHP的开发运行环境的所有环节都打通了!

多站点虚拟主机配置

默认的初始站点配置

apache安装后,有一个默认站点,其配置都在apache的主配置文件(apache/conf/httpd.conf)中。

主要包括如下几项:

1,站点域名:

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName localhost:80

域名是可以设置的!

2,站点位置(文件夹位置):

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
# 
DocumentRoot "C:\Users\myxc\Documents\wamp\apache\htdocs"

站点位置是可以设置的!

3,站点文件夹的访问权限设置:

使用<Directory> ... </Directory>配置项来配置。

<Directory "C:\Users\myxc\Documents\wamp\apache\htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

4,站点默认显示的网页(首页):

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

默认网页(首页)是可以设置的。

<Directory “要设置权限的文件夹路径”\>
Options 设置项
AllowOverride 设置项
Require 权限设置项
</Directory\>

各项解释如下:

Options:用于设置一些系统选项,通常window系统中就用Indexes就可以了。

Options Indexes //表示允许列出目录结构(如果没有可显示的网页)

AllowOverride:用于设置“可覆盖性”,即是否允许在项目文件中覆盖这里的访问权限设置:

AllowOverride All //表示可覆盖,AllowOverride None //表示不可覆盖

Require:用于设置可访问权限,常用的有:

  • 允许所有来源的访问:——推荐

Require all granted

  • 拒绝所有来源的访问:——网站需要临时关闭时使用

Require all denied

  • 允许所有但拒绝部分来源的访问:
<RequireAll>
    Require all granted
    Require not ip 192.168.1.102 192.168.1.103
</RequireAll>
  • 拒绝所有但允许部分来源的访问:
<RequireAny>
    Require all denied
    Require ip 192.168.1.102 192.168.1.103
</RequireAny>

典型权限设置示例:

<Directory “h:/itcast/php60/wamp/www”>
    Options Index
    AllowOverride All
    Require all granted
</Directory>

网站默认网页的设置

默认网页就是输入一个不带网页的文件名的路径的时候(最常见的就是只输入域名),自动打开的网页。

比如这样的一个网址:http://www.itcast.cn/subject/phpzly/,就能打开一个网页(虽然地址上没给出要查看的网页文件名)。默认网页的设置方式如下:

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>

(其中IfModule指令是可以省略的),语法为:DirectoryIndex 网页名1 网页名2 网页名3 ....

说明:

  1. 可以设置多个网页,前面的不存在,就依次找后面的。
  2. 该设置项可以放在<Directory>配置段中,表示该站点文件夹下的默认网页设置。

多站点虚拟主机的含义:

多站点虚拟主机:是指,在一台物理意义上的电脑(服务器)中,配置多个网站/站点,并都可以对外提供“web访问服务”,外界看起来就是有多个站点(或多个服务器)的样子!每个站点,也就是类似一个主机——这就是虚拟主机。

配置多站点虚拟主机:

配置多站点虚拟主机可以分两步:

  1. 在apache的主配置文件(httpd.conf),引入多站点的配置文件(虚拟主机配置文件)
  2. 在虚拟主机配置文件(httpd-vhosts.conf)中,再挨个网站进行配置(每个网站一段配置)

分述如下:

在apache的主配置文件中引入虚拟主机配置文件:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

在虚拟主机配置文件(httpd-vhost.conf)中挨个站点进行配置

在虚拟主机配置文件中,就可以配置多个站点了,每个站点的形式大致如下:

# 站点1
<VirtualHost *:80>
    # 站点域名
    ServerName www.php69.com
    # 站点根目录
    DocumentRoot "C:\Users\myxc\Documents\wamp\apache\htdocs\jd"
    # 站点文件权限
    <Directory "C:\Users\myxc\Documents\wamp\apache\htdocs\jd">
        AllowOverride None
        # Options None
        Require all granted
    </Directory>
    <IfModule dir_module>
        # 默认页面
        DirectoryIndex index.php index.html
    </IfModule>
</VirtualHost>

完成配置后记得检查语法,重启Apache服务器:

PS C:\Windows\System32\drivers\etc> httpd -t
Syntax OK
PS C:\Windows\System32\drivers\etc> net stop apache2.4
Apache2.4 服务正在停止.
Apache2.4 服务已成功停止。

PS C:\Windows\System32\drivers\etc> net start apache2.4
Apache2.4 服务正在启动 .
Apache2.4 服务已经启动成功。

PS C:\Windows\System32\drivers\etc>

还要修改hosts文件:

127.0.0.1 www.php69.com

最后,一个观念总结:

一个网站,就是一个文件夹;反过来说,一个文件夹,就可以当做一个网站!

谁在其中发挥作用?——Apache!