目录:
下载安装
tip:安装时尽量安装到一个目录下
apache-2.2.22 点击下载、php-5.3.13 点击下载 、mysql-5.5.24 点击下载
配置 apache 运行 php 代码
- 装载php5模块,更改配置文件
httpd.conf
( 所在目录为 apache安装目录/conf ),在其中添加以下配置
#载入php模块 "E:\amp\php-5.3.13\php5apache2_2.dll" 是php模块的安装路径(这里改为自己 php 的安装路径)
LoadModule php5_module "E:\amp\php-5.3.13\php5apache2_2.dll"
指定php后缀的的文件应该调用该php模块去执行(有两种方法可实现)
在
httpd.conf
文件中添加以下配置:
#指定 php 后缀的文件应该调用该php模块去“执行”
<FilesMatch "\.php$">
setHandler application/x-httpd-php
</FilesMatch>
或在 IfModule mime_module
标签中末尾添加以下配置:
#指定 php 后缀的文件应该调用该php模块去“执行”
#设定了3种文件后缀(.php、.php3、.xxx 可以自定义执行后缀)都由php模块来“执行”
AddType application/x-httpd-php .php .php3 .xxx
这个时候就已经可以运行 php 脚本代码了
这时虽可以运行php脚本代码了,但是还不能满足开发需求,比如:时间函数的使用、数据库的连接……,我们还需对 php 的进一步配置。
配置 php 的基本运行环境
打开php的安装目录其中 php.ini 前缀的文件就是 php 的配置文件模板,选其一复制改名为
php.ini
这个时候 apache 只知道 php 代码要使用 php模块来执行,但是不知道 php 模块用什么文件去配置,需要指定 apache 去使用 php.ini 来配置 php。指定php配置文件(php.ini)的位置
在
httpd.conf
文件中添加以下配置:
#设置 php.ini 文件的位置(只需设定文件夹)
PHPIniDir "E:\amp\php-5.3.13"
将路径设置为 php 的安装路径
为 php 配置时区
在
php.ini
文件中查找 timezone 字段,设置为 PRC(中国时区),这时就可以使用时间函数了(可使用 date() 函数测试)。
date.timezone = PRC
php虽然本身是作为 apache 的一个模块,被 apache 调用,但是,php作为一个完整的语言包,其内部又是有很多个“子模块”构成。mysql 也是其中之一。
配置 php 使用 mysql 数据库
打开
php.ini
中的 mysql 模块的注释(这里开启三种使用 mysql 的子模块)
这个时候还是不可以用,因为 php 找不到 mysql 的模块文件。就和 apache 中配置 php 模块一样的,不过有点区别,php 的子模块都集中存放在安装目录下 ext 目录中。php 中 配置常用子模块的物理路径(其中包括 mysql 模块),在
php.ini
中搜索extension_dir
关键字,设置为php安装目录下的 ext 文件夹路径。
#配置 php 常用子模块路径
extension_dir = "E:\amp\php-5.3.13\ext"
重启apache服务器,mysql 数据库就可以使用了。
虚拟主机配置(在 apache 中)
端口监听
apache的端口监听设置,是指设定apache这个软件针对当前服务器的哪些端口提供web服务。如果需要多端口监听,则需配置多个端口。打开 httpd.conf
,配置方式如下:
#对80端口提供服务
Listen 80
#对81端口提供服务
Listen 81
#对82端口提供服务
Listen 82
主机配置关键项
一个主机(站点),最核心的就两件事:
主机(站点)的名字:ServerName
“主机名”
主机(站点)的实际文件夹位置:DocumentRoot
“站点的实际完整路径”
apache 的作用其实就是一个”转换”角色:将当前电脑中的某个文件夹,对外以某个域名(站点)的方式展现出来。
换句话说:站点的本质就是一个文件夹。
我们可以在 httpd.conf 中来修改它。
#
# 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 www.test.com:80
#
# 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 "E:/amp/apache/htdocs"
配置文件夹访问权限
<Directory "E:/amp/apache/htdocs">
#当无可显示网页的时候,可显示文件列表
Options Indexes
#设置权限的排判断顺序,先允许,后拒绝
Order allow,deny
#表示允许所有用户访问
Allow from all
#表示拒绝 192.100.1.1 这个用户访问
Deny from 192.100.1.1
</Directory>
配置默认网页
打开 apache 的 httpd.conf
检索 DirectoryIndex 修改即可
<IfModule dir_module>
#这里就配置了三种默认网页,如果你访问的地址不存在,那么就会在这三种之中依次查找显示
DirectoryIndex index.html index.php xindex.html
</IfModule>
--------------------------------------------------------------------------------------
#如果在文件夹访问权限中配置 DirectoryIndex 那么只在该文件夹中生效
<Directory "E:/amp/apache/htdocs">
Options Indexes
Order allow,deny
Allow from all
Deny from 192.100.1.1
#配置了三种默认网页
DirectoryIndex index.html index.php xindex.html
</Directory>
目录别名设置Alias
目录别名也叫虚拟目录,在一个站点中,如果不存在某个文件夹(目录),我们可以通过配置项,来做到“对外”看起来却存在一样。假设站点中不存在 test 目录,我们需要打开 httpd.conf,检索到 alias_module
,在其中添加配置 :
<IfModule alias_module>
#将虚拟目录转到 C:Demo/work 目录下
Alias /soft "C:Demo/work"
</IfModule>
文件夹访问控制的文件控制方式
通常,我们在 httpd.conf
配置文件中,使用 Directory 配置项,目的是用来控制文件夹的访问权限。
但我们也可以使用一个独立的文件来控制某文件夹的访问权限。该文件名必须是:.htaccess
-
注意:
- 1,只有后缀和点号(无文件名部分)
- 2,该文件必须放在要被控制访问权限的文件夹中(不同的文件夹可以放不同的该文件)
-
3,其‘上级文件夹’(通常是Directory设定中的文件夹)必须使用如下代码允许.htaccess发挥作用:
AllowOverride All
- 4,.htaccess文件中出现代码,几乎可以跟 Directory 设定中出现的代码一样。
- 5,如果.htaccess文件有效,则其设置会覆盖其上级设置。
- 6,此.htaccess文件修改后可以立即发挥作用,无需重启apache
多站点配置
首先,在
httpd.conf
中打开多站点配置文件:检索httpd-vhosts.conf
将其注释打开
注意:一旦进行多站点配置,则原来httpd.conf中的默认站点配置就失效了
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
打开该文件(
httpd-vhost.conf
)该文件在 apache 安装目录conf/extra/httpd-vhost.conf
设置要进行多站点配置的 ip 和端口 形式如下:
# "*"可以代表当前服务器的所有IP地址(通常也就一个)
NameVirtualHost *:80
#配置站点1
<VirtualHost *:80>
DocumentRoot "E:\amp\apache\htdocs\php_work1"
ServerName www.test1.com
<Directory "E:\amp\apache\htdocs\php_work1">
Options Indexes
AllowOverride All
Order allow,deny
allow from all
DirectoryIndex index.php index.html index.htm
</Directory>
</VirtualHost>
#配置站点2
<VirtualHost *:80>
DocumentRoot "E:\amp\apache\htdocs\php_work2"
ServerName www.test2.com
ServerAlias test2.com
<Directory "E:\amp\apache\htdocs\php_work2">
Options Indexes
AllowOverride All
Order allow,deny
allow from all
DirectoryIndex index.php index.html index.htm
</Directory>
</VirtualHost>
主机别名设置
在应用中,我们常常可以使用一下两种形式来访问一个站点:www.test.com、test.com。通常,现在越来越流行后者。此时,就相当于两个站点(主机名)但访问的是一个内容,此时就需要使用主机别名来实现:
<VirtualHost *:80>
DocumentRoot "E:\amp\apache\htdocs\php_work1"
ServerName www.test.com
#主机别名(可设置多个,前提:需要在dns服务器注册)
ServerAlias test.com test1.com test2.com
<Directory "E:\amp\apache\htdocs\php_work1">
Options Indexes
AllowOverride All
Order allow,deny
allow from all
DirectoryIndex index.php index.html index.htm
</Directory>
</VirtualHost>
注意事项
修改 httpd.conf 和 php.ini 一定要重启 apache 服务器,否则不会生效
调试时一定注意浏览器缓存,及时清理,防止数据不准确
调试时使用域名访问失败时,检查域名是否在 C:\Windows\System32\drivers\etc\hosts 中配置