飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

windows环境下部署Apache、mysql、php环境--WAMP

Author:飘易 Source:飘易
Categories:PHP编程 PostTime:2015-2-20 23:45:49
正 文:
第一步:下载安装的文件
Apache下载地址:(httpd-2.2.21-win32-x86-no_ssl.msi)http://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.21-win32-x86-no_ssl.msi

Mysql下载地址(mysql-5.5.19-win32.msi)http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.19-win32.msi

PHP下载地址(php-5.3.28-nts-Win32-VC9-x86.zip)http://windows.php.net/downloads/releases/archives/php-5.3.28-nts-Win32-VC9-x86.zip
注意:这个版本的php是用vc9编译的(对应Visual C++ 2008),因此如果你的电脑没有安装过微软的vs工具,请手动安装下面的包
Visual C++ 2008 – http://www.microsoft.com/download/en/details.aspx?id=5582

mod_fcgid下载地址(mod_fcgid-2.3.6-win32-x86.zip)mod_fcgid-2.3.6-win32-x86.zip

mod_fastcgi和mod_fcgid的区别

mod_fcgid是一个跟mod_fastcgi二进制兼容的Apache module。

原来的mod_fastcgi因为实现方式的限制,所以可能会创建了很多不必要的进程,而实际上只需要更少的进程就能处理同样的请求。 mod_fastcgi的另外一个问题是每一个CGI的多个进程都共享同一个管道文件,所有到同一个fastcgi的通讯都通过这个同名的管道文件进行, 这样当出现通讯错误的时候,根本不知道正在通讯的是哪一个fastcgi,于是也没有办法将这个有问题的进程杀死。

mod_fcgid尝试使用共享内存来解决这个问题。共享内存里面有当前每个fastcgi进程的信息(包括进程号,进程使用的管道文件名等),当 每次尝试请求fastcgi工作的时候,Apache将会首先在共享内存里面查询,只有在共享内存里面发现确实没有足够的fastcgi进程了,才会创建 新的进程,这样可以保证当前创建的进程数量刚好能够处理客户的请求。另外,由于每一个fastcgi进程使用不同名称的管道文件,所以可以在通讯失败的时 候知道到底哪个fastcgi进程有问题,而能够尽早的将其剔除。程序实现的目标跟mod_fastcgi二进制兼容只要在Apache中用mod_fcgid替换了mod_fastcgi,就能工作。原来的fastcgi程序不用重新编译,立即可以工作。

更严格的控制进程的创建
Apache中每一个request handler都能通过共享内存知道当前系统fastcgi运行的情况,这样可以防止过度的创建fastcgi进程,无谓的消耗系统的资源。

简单清晰的进程创建速度控制策略
每一个fastcgi都会维护一个计数器,这个计数器在程序创建和程序结束的时候都会增加,而这个计数器每秒会减1,直到0。当计数器的值高于某个 阀值的时候,程序就会停止创建,直到计数器的值回落。这样既可以保证在请求突然增多的时候能够快速反应(特别是Apache刚启动,需要大量创建程序的时 候),也能保证当fastcgi程序有问题,不断重起的时候,重起的速度不会过高而消耗过多的系统资源。

自动检测出有问题的进程
因为每个fastcgi使用自己特定的管道文件,所以在通讯错误的时候可以轻易知道哪一个程序出现问题,而尽早的将其剔除。

可移植性
遵照Apache2的习惯,所有可移植的代码都放到一起,所有不可移植的代码都在arch目录下分开存放。当前已经测试过的系统包括 Linux , FreeBSD(已经包含入FreeBSD4和FreeBSD5的port中), Solaris, Windows 2000.

支持FastCGI方式运行的PHP
可以直接支持以FastCGI方式运行的PHP。因为PHP现在还不能保证所有的扩展代码都是线程安全的,所以并不建议在Apache2的线程模式 下使用mod_php。而以FastCGI方式运行的PHP则是其中一个解决办法。另外,使用mod_fcgi还可以在不修改任何PHP代码的情况下,获 得数据库连接池的功能,大大减少PHP进程到数据库的连接。

第二步:安装文件
在要安装的磁盘建一个文件夹。为了以后管理方便我们在E盘的根目录下创建一个WAmp文件夹。 E:\wamp(wamp是 windows+apache+mysql+php的缩写)。
2.1、在wamp文件夹下创建一个www文件夹,用来存放你的PHP网站程序。E:\wamp\www
2.2、安装Apache服务器,把Apache服务器安装到 E:\wamp\Apache 文件夹。具体Apache安装过程可以参考文档 Apache安装图解 http://www.admin10000.com/document/66.html
2.3、把下载的php-5.3.28-nts-Win32-VC9-x86 解压到 E:\wamp\PHP 文件夹。
2.4、安装MySql数据库,把Mysql安装到 E:\wamp\mysql文件夹。具体mysql安装过程可以参考文档 mysql安装图解。http://www.admin10000.com/document/59.html

第三步:配置 Apache
首先使用文本编辑工具(推荐 EditPlus )打开 D:\WAmp\Apache\conf\httpd.conf 
文件,这个文件是Apache的配置文件,下面几步都是在修改这个文件的内容。要注意的是修改完 httpd.conf 文件需重新启动Apache服务,新设置才会生效。

设置监听端口
打开 httpd.conf 文件后,找到 Listen(大概在第46行),将它后面的数字改为8080,如下:

    
Listen 8080

这个参数用来设置Apache服务器的监听端口,一般默认为80。修改为8080 是为了避免
和Windows 2003系统的IIS端口号冲突,如果你没有启用IIS,也可以使用默认的80端口
号。

修改网站存放目录
我们知道Apache默认的网站存放目录为Apache安装目录下的htdocs文件夹。当你更改
网站存放目录,就必须修改相应的Apache配置。
在配置文件 httpd.conf 中查找 DocumentRoot,将其修改为指向网站目录的正确文件夹。
我们这里改为

    
DocumentRoot "E:/wamp/www"

同时,查找 This should be changed to whatever you set DocumentRoot to,在它
下面有行 <Directoy 默认的DocumentRoot >,将其修改为你自己配置的DocumentRoot 
路径。我们这里修改

   
 <Directory "E:/wamp/www">

mod_fcgid 配置
我们将下载的 mod_fcgid-2.3.6-win32-x86.zip 压缩包中的“mod_fcgid.so”文件复制到
apache的“modules”目录。
打开 httpd.conf 文件,在最后加入如下配置:

    LoadModule fcgid_module modules/mod_fcgid.so
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .fcgi .php
        #php.ini的存放目录
        FcgidInitialEnv PHPRC "E:/wamp/PHP"
        # 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
        FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
        #php-cgi每个进程的最大请求数
        FcgidMaxRequestsPerProcess 1000
        #php-cgi最大的进程数
        FcgidMaxProcesses 15
        #最大执行时间
        FcgidIOTimeout 120
        FcgidIdleTimeout 120
        #php-cgi的路径
        FcgidWrapper "E:/wamp/PHP/php-cgi.exe" .php
        AddType application/x-httpd-php .php
        #上传下载最大字节数
        MaxRequestLen 10000000000
    </IfModule>

修改DocumentRoot 路径的配置为:

    <Directory "E:/wamp/www">  
        Options -Indexes FollowSymLinks ExecCGI  
        Order allow,deny  
        Allow from all  
        AllowOverride All  
    </Directory>  

修改目录首页文件
在配置文件 httpd.conf 中查找 DirectoryIndex index.html 将其修改成:

    
DirectoryIndex index.html index.htm index.php

DirectoryIndex 指的是当客户浏览器访问的路径是一个目录时,Apache默认执行的文件。
以我们所修改的为例:当客户浏览器访问一个目录时,Apache会去找该目录下的index.html,
如果没有再找index.htm,还没有再找 index.php。都找不到则默认显示该目录下的文件列表。

参考文档:如果防止Apache显示文件列表 http://www.admin10000.com/document/71.html

如果需要虚拟主机配置,可以打开httpd-vhosts.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

在httpd-vhosts.conf文件里,默认第一个作为未绑定域名访问的默认路径,如
#默认,不能删除
<VirtualHost *:80>
    ServerAdmin webmaster@eg.com
    DocumentRoot "D:/wamp/www"
    #ServerName dummy-host.eg.com
    #ServerAlias www.eg.com www2.eg.com www3.eg.com
    #ErrorLog "logs/dummy-host.eg.com-error.log"
    #CustomLog "logs/dummy-host.eg.com-access.log" common
</VirtualHost>

第四步:配置PHP(修改完php.ini记得重新启动Apache服务)
    打开PHP安装目录,即E:\wamp\PHP,我们可以看到目录下有两个这样的文件 php.ini-development 
和 php.ini-production,第一个是开发使用的配置文件,第二个是生产环境的配置,因为我们是在本机
做开发,所以选择前者。将php.ini-development复制一份到同目录下,并改名为 php.ini。这个php.ini
就是当前使用的配置文件,以下几步都是在修改这个php.ini文件的内容。要注意的是,修改php.ini文件
后需重新启动Apache服务,新设置才会生效。

指定PHP扩展库的存放目录
在Windows下PHP的扩展库通常以 DLL 形式存放在PHP的ext目录中。
使用文本工具打开php.ini文件,查找extension_dir = "ext",也就是
在 On windows 下面那一行。把它前面的分号“;”去除掉,改为如下:

            
 extension_dir = "E:/wamp/PHP/ext"

extension_dir 表示PHP扩展库的具体目录,以便调用相应的DLL文件。

开启相应的扩展库
默认情况下许多PHP的扩展库都是关闭的,比如默认PHP不支持连接
Mysql数据库,需开启相应的扩展库。这里我们开启一些常用的扩展库.
查找 ; Windows Extensions(大概在941行),在它的下面是extension
列表。找到如下扩展:

        ;extension=php_curl.dll
        ;extension=php_gd2.dll
        ;extension=php_mbstring.dll
        ;extension=php_exif.dll
        ;extension=php_mysql.dll
        ;extension=php_mysqli.dll
        ;extension=php_pdo_mysql.dll
        ;extension=php_pdo_odbc.dll
        ;extension=php_sockets.dll
        ;extension=php_xmlrpc.dll
        ;extension=php_xsl.dll

把以上extension 前面的分号 “;” 去掉。如果你希望加载其它扩展模块,方法相同,
只要去掉前面的分号即可。

提示1:重启Apache提示 “unable to load dynamic library......php_curl.dll”,
        加载php_curl.dll错误。解决方法是拷贝 PHP 目录下的 libeay32.dll 和 
        ssleay32.dll 到 windows 目录或 windows/system32 目录下,只要是
        系统 Path 环境变量里包含的路径就可以。如果不想拷贝,你也可以直接
        把 PHP 路径放到系统 Path 环境变量里。 右击我的电脑=>属性=>高级=>环境变量=>系统变量里有个Path,
        双击打开,把你的PHP路径加个分号“;”再前面( ;E:\wamp\PHP ),
        添加进去就OK了。重启Apache不再提示该错误。
             
提示2:Exif 扩展是用来显示图片的 exif 信息的,因为该扩展需要 mbstring.dll 
        支持,所以必须将 extension=php_exif.dll 这一行写到extension=php_mbstring.dll 的后面
            
提示3:如果PHP自带的扩展库不能满足你的需要,你可以去 pecl.php.net 查找并
        下载你需要的库。windows用户可以去 pecl4win.php.net 或者 http://downloads.php.net/pierre/ 
        下载已经编译好的DLL文件,也可以去http://museum.php.net/php5/ 载PECL集合压缩包。
            
提示4:很多人在找php_zip.dll,其实从php5.3开始已经集成了zip扩展,你可以用<?php phpinfo()  ?>
        找到zip扩展的说明。

让PHP支持短标签
在 php.ini 配置文件查找 short_open_tag = Off (大概在266行)把它修改成:short_open_tag = On 让其支持短标签。
php的代码一般包含在<?php .... ?>的标签内,设置 short_open_tag = On 之后,可以写成更简洁的形式:<? .... ?>。

配置PHP的Session功能
在使用session功能时,我们必须配置session文件在服务器上的保存目录。
我们需要为session建立一个可读写的目录,这个目录最好独立于网站目录之外。
这里把目录上建在了E:\wamp\sessiontmp,然后在 php.ini 配置文件中找 
;session.save_path = "/tmp" (大概在1467行),去掉前面的分号“;” ,改为如下:
         
 session.save_path = "E:/wamp/sessiontmp"

配置PHP的文件上传功能
同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败。
我们建立一个可读写的目录文件夹 E:\wamp\fileuploadtmp,然后在 php.ini 配置文件中找到 
;upload_tmp_dir = (大概875行),修改为:
        
 upload_tmp_dir = "E:/wamp/fileuploadtmp"

PHP默认上传文件大小不超过2M,要想上传大于2M的文件,请参考文档 配置php.ini实现文件上传功能http://www.admin10000.com/document/69.html

设置时区
在 php.ini 配置文件查找 ;date.timezone = ,去掉前面的分号“;” 改为如下:
       
 date.timezone = PRC

date.timezone是PHP5.1开始新增加的配置参数,用来设置时区。默认date.timezone是被注释掉的,也就是默认时区是UTC格林威治标准时间。
我们这里改为 date.timezone = PRC(PRC,People’s Republic of China,中华人民共和国),也就是日期使用中国的时区。这样可以解决时间相差八小时的问题。

*配置php的安全设置,php.ini 查找 open_basedir
open_basedir = "E:/wamp/www/;E:/wamp/fileuploadtmp/;E:/wamp/sessiontmp/"
注意,win下多个路径用分号隔开,linux下是冒号隔开。通过 open_basedir 的设置,可以将php的读写权限限制在指定目录下,防止跨域。需要把上传文件的临时目录和session的临时目录加入进来,否则上传或设置session时会出错。

如果同时启用了多虚拟主机配置,需要在php.ini配置文件的最后加入限制
[PATH=D:/wamp/www/eg1.com]
open_basedir=E:/wamp/www/eg1.com/;E:/wamp/fileuploadtmp/;E:/wamp/sessiontmp/

把每个虚拟主机访问的路径限制死,防止A网站下的php读写B网站下的文件。

或者用下面的这个方法设置:网站根目录下增加 .user.ini 文件

在php.ini中找到user_ini.filename 、 user_ini.cache_ttl 去掉前面的分号。
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
user_ini.filename = ".user.ini"
 
; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
user_ini.cache_ttl = 300

 
在网站根目录下创建.user.ini 加入:
open_basedir=E:/wamp/www/eg1.com/;E:/wamp/fileuploadtmp/;E:/wamp/sessiontmp/

这种方式不需要重启apache服务。特别注意,需要取消掉.user.ini文件的写权限,这个文件只让最高权限的管理员设置为只读

参考

第五步:测试
将如下代码保存为index.php文件,放到E:\wamp\www目录下面。
<?php
    echo phpinfo();
?>

第六步:安装ZendLoader
下载ZendLoader.dll (下载地址 ZendLoader.rar) ,放置在PHP的ext目录下(推荐)编辑php.ini, 修改为
[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="E:\wamp\PHP\ext\ZendLoader.dll"

把php.ini拷贝到C:\Windows (如果没有这步,无法运行加密的)

增加环境变量  
变量名:PHPRC   
变量值:(你PHP安装路径):E:\wamp\PHP\ (如何添加环境变量,这里就不解说了)

命令窗口 php -v出现
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
说明Zend Guard Loader 没有运行起来,配置有问题。
出现
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
说明 Zend Guard Loader成功。

*安全配置
配置 
参考:
*windows-Apache单机部署(开发版本) http://www.ec-os.net/single_deployment/windows-apache.html
*在windows XP中安装PHP5.4.7和Apache2.4(关键词:最新版、VC9) http://www.cnblogs.com/ChengDong/articles/2872798.html
作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:没有了
下一篇:IOS APP 企业发布:in-house方式
0条评论 “windows环境下部署Apache、mysql、php环境--WAMP”
No Comment .
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有