配置 apache + php + mysql 搭建web服务器

目录:

    • 下载安装
    • 配置 apache 运行 php 代码
    • 配置 php 的基本运行环境
    • 配置 php 使用 mysql 数据库
    • 虚拟主机配置(在 apache 中)
      • 端口监听
      • 主机配置关键项
      • 配置文件夹访问权限
      • 配置默认网页
      • 目录别名设置Alias
      • 文件夹访问控制的文件控制方式
      • 多站点配置
      • 主机别名设置
    • 注意事项

下载安装

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模块去“执行”
"\.php$">
       setHandler application/x-httpd-php

或在 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 的子模块)
    配置 apache + php + mysql 搭建web服务器_第1张图片
    这个时候还是不可以用,因为 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"

配置文件夹访问权限

"E:/amp/apache/htdocs">
    #当无可显示网页的时候,可显示文件列表
    Options Indexes
    #设置权限的排判断顺序,先允许,后拒绝
    Order allow,deny
    #表示允许所有用户访问
    Allow from all
    #表示拒绝 192.100.1.1 这个用户访问
    Deny from 192.100.1.1

配置默认网页

打开 apache 的 httpd.conf检索 DirectoryIndex 修改即可


    #这里就配置了三种默认网页,如果你访问的地址不存在,那么就会在这三种之中依次查找显示
    DirectoryIndex index.html index.php xindex.html


--------------------------------------------------------------------------------------

#如果在文件夹访问权限中配置 DirectoryIndex 那么只在该文件夹中生效
"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

目录别名设置Alias

目录别名也叫虚拟目录,在一个站点中,如果不存在某个文件夹(目录),我们可以通过配置项,来做到“对外”看起来却存在一样。假设站点中不存在 test 目录,我们需要打开 httpd.conf,检索到 alias_module ,在其中添加配置 :


   #将虚拟目录转到 C:Demo/work 目录下
   Alias /soft "C:Demo/work"

文件夹访问控制的文件控制方式

通常,我们在 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
80>
    DocumentRoot "E:\amp\apache\htdocs\php_work1"
    ServerName www.test1.com
    "E:\amp\apache\htdocs\php_work1">
        Options Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        DirectoryIndex index.php index.html index.htm
    


#配置站点2
80>
    DocumentRoot "E:\amp\apache\htdocs\php_work2"
    ServerName www.test2.com
    ServerAlias test2.com

    "E:\amp\apache\htdocs\php_work2">
        Options Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        DirectoryIndex index.php index.html index.htm
    

主机别名设置

在应用中,我们常常可以使用一下两种形式来访问一个站点:www.test.com、test.com。通常,现在越来越流行后者。此时,就相当于两个站点(主机名)但访问的是一个内容,此时就需要使用主机别名来实现:

80>
    DocumentRoot "E:\amp\apache\htdocs\php_work1"
    ServerName www.test.com
    #主机别名(可设置多个,前提:需要在dns服务器注册)
    ServerAlias test.com test1.com test2.com 

    "E:\amp\apache\htdocs\php_work1">
        Options Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        DirectoryIndex index.php index.html index.htm
    

注意事项

  • 修改 httpd.conf 和 php.ini 一定要重启 apache 服务器,否则不会生效
  • 调试时一定注意浏览器缓存,及时清理,防止数据不准确
  • 调试时使用域名访问失败时,检查域名是否在 C:\Windows\System32\drivers\etc\hosts 中配置

你可能感兴趣的:(php)