我看到很多人在研究windows环境下配置NginX + PHP(FASTCGI) + MySQL。
当然我也尝试过NginX + PHP(FASTCGI) + MySQL + memcached。
之后感觉就是其实windows下都是开发程序,也就是写代码,然后测试代码是否正常执行。
而使用ISAPI方式通过Apache运行正常的php程序,往往以FASTCGI方式在nginx下也可以很好的运行。
因此没有必要非要在windows环境下用FASTCGI的方式运行php。
等程序都开发好了真正上传到linux服务器上的时候根据需要选择ISAPI方式或者FASTCGI方式了。
并且根据这个来选择NginX 或者Apache了。
可能会有人说官方推荐大家使用性能更好的FASTCGI模式,你开发环境(windows)下的php程序只有你自己在跑。
还用担心性能吗?
===========================================================================================================
以下是Windows环境下使用解压包来配置开发环境的过程,对配置文件做最小的改动,并且重装系统之后也可以照常运行
目录结构:
D:\Server 服务器根目录
D:\Server\BAT\ 运行批处理文件通通放这里
D:\Server\SOURCE 下载下来的文件通通放进去
===========================================================================================================
第一步:MySQL
MySQL永远第一个安装,因为和PHP或者WEB服务器没有关联,它只要独立能跑起来就可以了。
从MySQL官方网站以下下载地址列表中下载Windows (x86, 32-bit), ZIP Archive(mysql-5.5.9-win32.zip)
地址:http://dev.mysql.com/downloads/mysql/
把下载下来的解压包解压到D:\Server目录下
复制my-huge.ini生成新的my.ini
看着官方文档修改my.ini文件
MySQL 5.5 Reference Manual::2 Installing and Upgrading MySQL::2.3 Installing MySQL on Microsoft Windows::2.3.5 Installing MySQL on Microsoft Windows Using a noinstall Zip Archive:: 2.3.5.2 Creating an Option File
这里my.cnf中可以使用相对路径,不过《当前目录》为bin目录,需要注意这一点
我在这里也把两处socket = /tmp/mysql.sock改成D:/Server/mysql-5.5.9-win32/tmp/mysql.sock, 并且在D:\Server\mysql-5.5.9-win32目录下新建一个tmp目录,看了官方文档之后发现windows下其实是用不到这个 mysql.sock,windows下是pipe,而不是sock,不过这个设置不影响正常运行,所以不管了,先这样了。
另外再把tmpdir设置到安装路径下,以便能查看到MySQL到底生成什么临时文件
配置文件中与路径信息相关的配置如下:
[mysqld]
# set basedir to your installation path
basedir=D:/Server/mysql-5.5.9-win32/
# set datadir to the location of your data directory
datadir=D:/Server/mysql-5.5.9-win32/data
tmpdir=D:/Server/mysql-5.5.9-win32/tmp
另外MySQL5.5开始使用InnoDB引擎作为默认引擎,我是跟着官网的推荐走。所以以下跟InnoDB有关的都取消注释,并且修改路径信息
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = E:/Server/mysql-5.5.9-win32/data
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = E:/Server/mysql-5.5.9-win32/data
# You can set .._buffer_pool_size up to 50 – 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
MySQL 5.5 Reference Manual::2 Installing and Upgrading MySQL::2.3 Installing MySQL on Microsoft Windows::2.3.5 Installing MySQL on Microsoft Windows Using a noinstall Zip Archive:: 2.3.5.4 Starting the Server for the First Time
这里没什么可说明的。
另外比较重要的是字符集设置:
在[client]中添加一行
default-character-set=utf8
在[mysqld]中添加两行
character_set_server=utf8
collation_server=utf8_unicode_ci
修改root密码的命令:
D:\Server\mysql-5.5.9-win32\bin\mysqladmin -u root password xxxxxx
===========================================================================================================
第二步:PHP
同样是解压到D:\Server目录下
复制php.ini-development生成新的php.ini文件
===========================================================================================================
第三步:Apache
因为官方没有提供没有解压包,只有msi安装程序下载。
不过没关系,用安装程序安装其实就是简单的解压,重装系统之后照样可以正常使用。
安装到D:\Server\”去掉.msi的文件名”
写主机名的步骤我写了,其实写什么无所谓。
localdomain
localhost
han_zhi_xing@hotmail.com
记得一定要自定义安装选择安装路径
D:\Server\httpd-2.2.17-win32-x86-openssl-0.9.8o\
===========================================================================================================
第四步: 配置
php的配置放到这一步是因为只有运行了Apache你才能看到php支持情况。
先配置apache:
httpd.conf复制一份改名为httpd.conf.default。以下为需要修改的地方。
—————————————————————————————————————————————————————————-
DocumentRoot “D:/Server/httpd-2.2.17-win32-x86-openssl-0.9.8o/htdocs”
修改为
DocumentRoot “D:/WWWROOT”
<Directory “D:/Server/httpd-2.2.17-win32-x86-openssl-0.9.8o/htdocs”>
修改为
<Directory “D:/WWWROOT”>
DirectoryIndex index.html
修改为
DirectoryIndex index.html index.php
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
下一行添加
LoadModule php5_module “D:/Server/php-5.3.5-Win32-VC9-x86/php5apache2_2.dll”
AddType application/x-gzip .gz .tgz
下一行添加
AddType application/x-httpd-php .php4 .php3 .php .htm .html .phtml .ph .inc
AddType application/x-httpd-php-source .phps
在文件尾添加
PHPIniDir “D:/Server/php-5.3.5-Win32-VC9-x86″
#Include conf/extra/httpd-vhosts.conf
下一行添加
# Alias directories
Include conf/extra/httpd-alias.conf
在extra下新建一个httpd-alias.conf文件,主要是为了使用http://localhost/myadmin的方式访问phpMyAdmin
—————————————————————————————————————————————————————————-
经过以上修改之后你在D:\WWWROOT目录下新建一个phpinfo.php文件
然后访问http://localhost/phpinfo.php
是可以正常访问的。
接下来配置php.ini
访问phpinfo.php文件的时候会发现中间data处有Warning警告,php.ini中修改以下内容就可以了。
—————————————————————————————————————————————————————————-
;date.timezone =
下一行添加
date.timezone = “Asia/Shanghai”
—————————————————————————————————————————————————————————-
;session.save_path = “/tmp”
下一行添加
session.save_path = “E:\Server\SESSION”
这样可以方便查看产生session文件
—————————————————————————————————————————————————————————-
; PHP’s default setting for include_path is “.;/path/to/php/pear”
; http://php.net/include-path
下一行添加
include_path = “.”
—————————————————————————————————————————————————————————-
; extension_dir = “ext”
下一行添加
extension_dir = “D:\Server\php-5.3.5-Win32-VC9-x86\ext”
—————————————————————————————————————————————————————————-
extension=php_gd2.dll
extension=php_mbstring.dll phpMyAdmin会用到这个
extension=php_mysql.dll
这三个是最低要求,gd没有不使用的吧,其他跟根据需要开启就行。
===========================================================================================================
第五步:phpMyAdmin
修改apache安装目录的conf/extra/httpd-alias.conf文件添加以下内容
# phpMyAdmin
Alias /myadmin “D:/Server/phpMyAdmin-3.3.9.2-all-languages/”
<Directory “D:/Server/phpMyAdmin-3.3.9.2-all-languages/”>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
复制phpMyAdmin目录下的config.sample.inc.php文件创建一个config.inc.php文件,并修改以下内容
$cfg['blowfish_secret'] = ‘blowfish_secret_string’; /* 引号内随便填写一些字符 */
取消注释以下内容
$cfg['Servers'][$i]['pmadb'] = ‘phpmyadmin’;
$cfg['Servers'][$i]['bookmarktable'] = ‘pma_bookmark’;
$cfg['Servers'][$i]['relation'] = ‘pma_relation’;
$cfg['Servers'][$i]['table_info'] = ‘pma_table_info’;
$cfg['Servers'][$i]['table_coords'] = ‘pma_table_coords’;
$cfg['Servers'][$i]['pdf_pages'] = ‘pma_pdf_pages’;
$cfg['Servers'][$i]['column_info'] = ‘pma_column_info’;
$cfg['Servers'][$i]['history'] = ‘pma_history’;
$cfg['Servers'][$i]['tracking'] = ‘pma_tracking’;
$cfg['Servers'][$i]['designer_coords'] = ‘pma_designer_coords’;
解决phpMyAdmin无法上传大文件:
在phpMyAdmin根目录下创建一个目录Temp,并在config.inc.php中最下面修改以下内容。
这样就可以把大的sql文件放到这个目录中进行导入了。
$cfg['UploadDir'] = ‘Temp’;
$cfg['SaveDir'] = ‘Temp’;
复制phpMyAdmin目录下scripts\create_tables.sql中的内容,然后进入phpMyAdmin管理界面导入创建一个名为phpmyadmin的数据库,这样就可以解决《链接表的附加功能尚未激活》的问题
===========================================================================================================
第六步:实现bat批处理文件管理《启动》《关闭》《重启》
下载RunHiddenConsole.exe放到D:\Server目录下,这是一个隐藏cmd窗口的小工具
在D:\Server\BAT目录下创建以下文件:
—————————————————————————————————————————————————————————-
文件:mysql_start.bat
@ECHO OFF
cd “%~dp0″
..\RunHiddenConsole.exe ..\mysql-5.5.9-win32\bin\mysqld.exe
文件:mysql_stop.bat
@ECHO OFF
taskkill /F /IM mysqld.exe
文件:mysql_restart.bat
@ECHO OFF
cd “%~dp0″
taskkill /F /IM mysqld.exe
..\RunHiddenConsole.exe ..\mysql-5.5.9-win32\bin\mysqld.exe
文件:apache_start.bat
@ECHO OFF
cd “%~dp0″
..\RunHiddenConsole.exe ..\httpd-2.2.17-win32-x86-openssl-0.9.8o\bin\httpd.exe
文件:apache_stop.bat
@ECHO OFF
taskkill /F /IM httpd.exe
文件:apache_restart.bat
@ECHO OFF
taskkill /F /IM httpd.exe
cd “%~dp0″
..\RunHiddenConsole.exe ..\httpd-2.2.17-win32-x86-openssl-0.9.8o\bin\httpd.exe
文件:server_start.bat
@ECHO OFF
cd “%~dp0″
..\RunHiddenConsole.exe ..\mysql-5.5.9-win32\bin\mysqld.exe
..\RunHiddenConsole.exe ..\httpd-2.2.17-win32-x86-openssl-0.9.8o\bin\httpd.exe
文件:server_stop.bat
@ECHO OFF
taskkill /F /IM mysqld.exe
taskkill /F /IM httpd.exe
文件:server_restart.bat
@ECHO OFF
taskkill /F /IM mysqld.exe
taskkill /F /IM httpd.exe
cd “%~dp0″
..\RunHiddenConsole.exe ..\mysql-5.5.9-win32\bin\mysqld.exe
..\RunHiddenConsole.exe ..\httpd-2.2.17-win32-x86-openssl-0.9.8o\bin\httpd.exe
之后就可以卸载掉apache安装程序在系统服务中安装的服务,并且删掉开始菜单中的apache快捷方式目录了。
把上面的server_start.bat, server_stop.bat, server_restat.bat文件发送快捷方式到桌面,快捷方式的名字可以随便改了。