谭兄

导航

 

 

apache支持php有三种方式, cgi, fastcgi, 子模块加载.

 

Windows下php作为Apache的子模块加载

 

1.安装Apache后,找到httpd.conf文件,加入下列三行

#将php作为Apache的一个模块来处理
LoadModule php5_module "E:\server\php\php5apache2_2.dll"

#设置php.ini文件配置路径(这里改成php目录的位置)
PHPIniDir "E:\server\php"

#处理php文件
AddType application/x-httpd-php .php

设置默认访问页面为index.php

<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>

 

2.安装php文件

复制一份php.ini-development文件,将其改名为php.ini

在php.ini中配置扩展库目录

extension_dir = "E:\server\php\ext"

开启一些常用扩展,比如

extension=php_gd2.dll

extension=php_mysql.dll
extension=php_mysqli.dll

设置时区

date.timezone = PRC

 

 

3.安装mysql,这个比较简单,但是有一点要注意.

Mysql安装最容易出问题的当然,是卸载之后的安装,原因在于卸载并不彻底,主要是这数据存放目录data。默认在C:\C:\ProgramData\Mysql\Mysql server\data

 

 

4.连接测试

$link = mysql_connect("localhost",'root','root');

if(!$link){
    echo "连接失败";
}else{
    echo "连接成功";
}

 

以上的所有文件夹路径应该根据实际情况来进行修改.

 

 

 

 

虚拟主机配置

我们可以直接在httpd.conf当中进行配置,也可以使用extra中的httpd-vhosts.conf配置,建议使用第二种方式。

首先要开启vhost.conf配置

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

打开vhost.conf进行配置

为了使用基于域名的虚拟主机技术,我们需要指定服务器的ip和端口来接收服务。

这个通过NameVirtualHost 指令完成。

NameVirtualHost *:80

其中*表示所有的ip地址,如果是一个具体的ip,你可以写上这个ip,但建议使用*,80指的是端口。

接下来,要单独的配置具体的域名,通过 VirtualHost 指令段,其参数必须和NameVirtualHost

而且在指令段中必须包含ServerName 和 DocumentRoot

<VirtualHost *:80>
DocumentRoot "E:/server/apache/htdocs/app"
ServerName www.myapp.com
</VirtualHost>

接下来

配置hosts文件,指定域名和DNS的对应关系。

通过浏览器访问某个域名的时候,需要进行域名的解析,首先找本地的hosts文件,如果能解析,就使用本地的配置,如果不能解析,则去外网进行解析

如果要访问原来的localhost,再配置一个

<VirtualHost *:80>
DocumentRoot "E:\server\apache\htdocs"
ServerName localhost
</VirtualHost>

 

访问权限配置

两种配置方法,第一种在主配置文件中配置,第二种是在辅助配置文件中配置(推荐)

<VirtualHost *:80>
    DocumentRoot "E:\server\apache\htdocs\demo"
    ServerName www.myapp.com
    <Directory "E:\server\apache\htdocs\demo">
    Options Indexs FollowSymLinks
    AllowOverride None
    Order allow,deny
    Deny from all
    Allow from all
    </Directory>
</VirtualHost>

 

 

默认的索引页,

<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

在默认情况下,只索引index.html,如果要默认能够访问index.php,可以在此处添加

DirectoryIndex index.html index.php

索引列表

如果没有默认的索引页,它会将该文件夹下面的所有文件以列表的形式展示出来,但是需要有权限才行

上面配置内容中

Options Indexs FollowSymLinks  其中Indexs开启索引列表

在实际的网站部署时,索引列表是应该 关闭的 。

 FollowSymLinks 是指的符号链接,linux系统才有效

关于Deny 和 Allow 的说明

[总则]:

影响最终判断结果的只有两点:

  • order语句中allow、deny的先后顺序;
  • allow、deny语句中各自包含的范围。

 

 修改完配置后要保存好并重启Apache服务,配置才能生效;

 开头字母不分大小写;

 allow、deny语句不分先后顺序,谁先谁后不影响最终判断结果,但都会被判断到;

 order语句中,“allow,deny”之间“有且只有”一个逗号(英文格式的),而且先后顺序很重要;

 Apache有一条缺省规则,“order allow,deny”本身就默认了拒绝所有的意思,因为deny在allow的后面;同理,“order deny,allow”本身默认的是允许所有;

 “order allow,deny”代表先判断allow语句再判断deny语句,反之亦然。

 

如果主文件和辅助文件都配置了权限,会怎么办?

以辅助文件为主

注意options这个指令,不会叠加,所以有时候我们会看到在indexes 有一个 + 或者 -的出现。

 

分布式配置文件

 .htaccess

分布式配置文件,名字是固定的

#LoadModule rewrite_module modules/mod_rewrite.so  前面#去掉

配置分布式文件步骤:

1.开启分布式配置,默认情况下,这个是关闭的

将 AllowOverride None 改为 AllowOverride All 就开启了分布式配置

2.创建.htaccess

使用editplus编辑器或其他高级编辑器来创建

3.配置相应的权限

凡是写在directory中的权限配置都可以写在这个文件当中。

deny from All

 

分布式配置文件修改之后,不需要重启,立即生效。

和directory配置一样,所配置的权限在该目录及其子目录生效

优点:方便,给内容提供者一个自由配置权限的机会。

缺点:性能所损失(不小),只要开启分布式配置,那么它会在每个文件夹下搜索.htaccess



















posted on 2016-06-25 13:37  谭兄  阅读(155)  评论(0编辑  收藏  举报