Windows 10部署IIS+PHP7+MYSQL

虽然在IIS下跑PHP并不是常见的做法,但是有时在Windows下开发PHP程序,又不想装Apache之类的Webserver,所以可以直接利用windows自带的IIS来作为简单的PHP开发环境的Web服务器。部署其实一点都不复杂,甚至比在Linux下简单。本文部署基于以下基础环境:

  • 系统:Windows 10家庭中文版(64位)
  • IIS版本:IIS 10
  • PHP版本:7.1.0
  • MYSQL版本:5.7.16

一、安装IIS功能

打开“启用或关闭Windows功能”窗口(在任务栏左下角小娜框里输入“启用”二字即可找到)。
在打开的窗口中找到“Internet Information Services”一项,选中,并找到下级“应用程序开发功能”->“CGI”选中,如下图:
启用或关闭Windows功能
点击确定,系统将完成IIS的安装,并在安装完成后自动启动IIS,默认端口为80。安装完成后在浏览器中访问http://localhost,看到如下图欢迎页面,说明IIS成功安装并启动。
 IIS默认页面

二、安装配置PHP

2.1 安装PHP

根据PHP官方建议,IIS+FastCGI模式下运行PHP需要下载非线程安全版本,并根据系统选择32位或64位的zip包,这里选择64位非线程安全版本下载。
下载后将zip包解压到自己喜欢的地方(本文以“C:\Program Files\php-7.1.0-nts-Win32-VC14-x64”为例)就完成PHP的安装了,很简单有没有!

2.2 添加IIS对PHP的支持

启动IIS管理器(同样在小娜里输入IIS即可),在界面中部找到并双击“处理程序映射”
处理程序映射
进入处理程序映射界面,如下图:
处理程序映射
在界面右侧,点击“添加模块映射”,弹出“添加模块映射”窗口如下图填写:
添加模块映射
注意在选择可执行文件,浏览到PHP所在目录时,默认后缀名筛选是“*.dll”,需要手动改成“*.exe”,然后选择“php-cgi.exe”(如下图)。填写好后点确定,弹出确认框后点击“是”保存。
选择程序

2.3 配置PHP

将PHP目录下php.ini-development(开发环境)或php.ini-production(正式环境)文件复制一份名为php.ini的文件到同一目录下,并打开php.ini,找到以下值并修改为:

开启以下常用扩展(去掉前面的分号):

后续如果要再添加PHP的扩展,不仅需要重启IIS的网站,还需在IIS管理器中找到“应用程序池”->“DefaultAppPool”停止然后启动,如下图:

应用程序池

2.4 安装url-rewrite模块

大部分PHP框架都需要使用web server的rewrite来实现路由功能,所以需要让IIS支持url-rewrite功能,可以通过安装扩展来实现。
如果安装失败出现如下图错误,提示“需要IIS 7.0版或更高版本”:
web安装程序
不要紧,可能是Web平台安装程序bug,把IIS 10.0的版本号判断得比7.0小了(1<7?我猜的)。在小娜里输入“regedit”启动注册表编辑器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp”位置
编辑注册表
双击MajorVersion,把数值数据一项的值改为9,保存。重新安装url-rewrite。安装完成之后,重启IIS,并看到IIS管理工具中多了一项“URL 重写”,说明安装成功。不要忘了安装成功后再把MajorVersion的值改回10(十六进制下是a)。
url rewrite
配置网站根目可以在IIS管理工具中进行,都是可视化图形界面操作,比apache方便很多,这里不再详述。在网站根目录下放置一个php文件(如test.php),内容如下

访问http://localhost/test.php,可以看到PHP的详细信息,说明到此IIS+PHP环境配置成功。

三、安装配置MySQL

3.1 安装MySQL

选择64位的zip包下载,并解压到想要的目录,这里以“C:\Program Files\mysql-5.7.16-winx64”为例。在该目录下添加名为“data”的文件夹,之后默认mysql的数据都会放到这个目录下。
在程序目录下找到“my-default.ini”,改名为“my.ini”,并打开编辑,在“[mysqld]”节点加入加入以下定义

3.2 初始化MySQL

以管理员身份运行PowerShell,并执行以下命令

执行命令后,在data目录会创建初始的数据文件,找到.err后缀名的文件用文本编辑器打开,会发现一行日志:

[Note] A temporary password is generated for root@localhost: 5#J2.dM0pp%:
这是mysql初始化的用户名(root)和密码(5#J2.dM0pp%:)
在PowerShell(管理员身份)运行以下命令启动mysql

登陆mysql并修改初始密码


运行以下mysql命令


至此,MySQL已经准备就绪。

四、常见问题及解决办法

4.1 访问出现401或403

出现这种错误是没有权限造成的。在资源管理器中右键点击站点根目录文件夹,点击“属性”项 ->“安全”Tab ->“编辑”按钮,在弹出的窗口中点击“添加”,在弹出的窗口中的“输入对象名称来选择”一项填写“IUSR”,点击右边的“检查名称”按钮,”IUSR”会被加上下划线,如下图:
添加用户和组
点击“确定”,回到刚才的权限窗口选中IUSR用户,赋予如下图所示的三个权限,然后一路确定即可。
选择权限
如果还是不行,尝试用同样的方法添加Everyone(将上面的IUSR改为EVERYONE)用户的权限。

4.2 访问出现“No input file specified”

打开IIS管理器,在中间双击“FastCGI设置”图标,在之后页面的第一条记录点右键选择“编辑”,在弹出的窗口中将“监视对文件所做的更改”一项的值改为php配置文件所在的地方:“C:\Program Files\php-7.1.0-nts-Win32-VC14-x64 \php.ini”

在“环境变量”一项点旁边的”…”,弹出的窗口中点“添加”, 并如下设置:


PHP FastCGI

确定保存,并重启IIS。

Server unable to read htaccess file, denying access to be safe

安装好Apache 2.4.23并启动服务后,访问任何页面都出现403错误,和以前的版本不同,错误提示多了以下一句:

Server unable to read htaccess file, denying access to be safe

于是打开apache错误日志(默认是apache安装目录/logs/error_log),发现如下日志:

[Mon Sep 12 12:10:29.497929 2016] [core:crit] [pid 6412:tid 140242582202112] (13)Permission denied: [client 10.9.18.133:53255] AH00529: /home/fynas/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that ‘/home/fynas/’ is executable

于是就按提示在/home/fynas/下新建了“.htaccess”文件,写入如下内容并保存:

再将目录设置为可执行

同时修改apache配置文件中Directory节点,大致如下:

重启apache再访问就ok了。

参考文章:

‘NoneType’ object has no attribute ‘decompressobj’

CentOS 6.5中自带了python 2.6.6,把它升级到2.7.9后,安装Django,提示缺少setuptools,然后去setuptools官方页面找到安装方法,如下:

运行后发现当前目录下已经下载了一个setuptools的zip包,但却提示错误:

‘NoneType’ object has no attribute ‘decompressobj’

网上查了一下,是因为python缺少zlib导致的;

于是运行:

运行后会发现有可能系统已经有zlib了,真正原因是安装python 2.7的时候没有指定zlib依赖,于是重新安装python 2.7

如果不行可以试试

重新安装python后再用最上面的命令安装setuptools,ok后到Django文件夹下运行

大功告成!

 

Gradle升级后出现几个问题

1、Gradle DSL method not found: ‘runProguard()’

改成:

 

2、Could not find property ‘Compile’:

改成:

 

安装Ubuntu 14.10出现failed to load ldlinux.c32解决办法

在网上下载了Ubuntu 14.10 ISO文件镜像,用UltraISO刻录到U盘,在BIOS里将u盘设置为默认启动盘,安装时出现如下错误:

failed to load ldlinux.c32

在网上查了不少人也都遇到这样的问题,有很多种说法,这里说一下我试验过可行的方案。参考ubuntu官方的一个说明:https://wiki.ubuntu.com/Win32DiskImager

里面提到一句:

Win32DiskImager supports writing an ISO image to USB too, which is very valuable right now at the release of Ubuntu 14.10, because there are problems with the Ubuntu Startup Disk Creator.

大概意思是说Win32DiskImager支持将ISO镜像刻录到USB设备中,对于14.10来说非常有价值,因为Ubuntu启动盘制作工具有点问题。(搞不懂明明发现有问题为什么不重新发行过ISO镜像)。不管了,到Win32DiskImager官方下载地址:http://sourceforge.net/projects/win32diskimager/ 下载Win32DiskImager软件,然后用该工具把ubuntu 14.10的ISO刻录到U盘中,如图,再次安装就ok了。

win32-imagewriter