我们先选定一个固定的目录,用于存放 Windows 服务器软件。
例如:D:\server\bin
以下部署示例均以此目录为准。
注:Web 根目录可以是 D:\server\www
一、PHP
建议同时下载 PHP 5.6 / 7.0 / 7.1 / 7.2 (线程安全,64位)版,方便以后切换版本。
下载好后将压缩包内的文件解压到 D:\server\bin\php 中的对应版本的目录下,例如 PHP 7.1 的目录可以命名为 php7.1,效果如下:

不建议将目录命名为具体版本号,因为 php 版本更迭比较频繁,大约 4 周一次;而大版本更新则最多一年一次。
-
添加到系统变量
推荐使用 Windows 10 或 Windows Server 2016,不建议使用之前的版本。
打开 Cortana(或搜索),输入“环境变量”,选择“编辑系统环境变量”,也可以打开“系统属性”,转到“高级”选项卡。

点击“环境变量”按钮,在“环境变量”窗口中找到“系统变量”->“Path”:
双击“系统变量”的“Path”变量,进入变量编辑窗口:
该窗口只有 Windows 10 才会出现。低版本 Windows 只有一个文本框。如果编辑变量窗口只出现文本框,则需要在字符串末尾手动添加地址。不同地址之间需使用分号“;”隔开。
如果编辑的是当前用户的“Path”变量,则该环境变量只在当前用户状态下生效。
编辑完成后点击“确定”关闭所有窗口。
如果 PHP 的路径成功添加到 Path 环境变量,则可以直接使用 php 命令,例如:

二、Apache
下载好后将压缩包内的文件解压到 D:\server\bin\Apache\Apache24,例如:

bin 目录中包含了服务器程序 httpd。该程序为控制台程序,而且不会自动运行,所以我们将其加入到系统服务,并且在开机时自动启动。
以“管理员身份”运行“CMD”,然后切换到 httpd 所在目录,并输入命令,如下图:
因为添加服务需要管理员身份,所以必须以“管理员身份”运行命令提示符,否则会提示权限不足。
上图中提示 Apache 服务已成功安装,但是 httpd.conf 文件存在语法错误,大意是 ServerRoot 不是一个有效的目录,因此我们需要先修正这个错误才能启动。
在 conf 目录中找到 httpd.conf 文件并修改大约第 38 行的位置,如下图:
具体目录需要根据你的实际情况修改。注意用反斜杠。
服务安装成功后,打开“服务”,可以在 Cortana 中输入“services.msc”。打开后应该能看到“Apache2.4”,如下图:

尝试点击“启动”。如果不能重新启动,则可能会看到如下提示:

失败的原因需要到“事件查看器”中查看日志。
打开 Cortana 输入“eventvwr.msc”,打开后,在左侧“Windows 日志”->“应用程序”中找到来源为“Apache Service”的错误日志:

点击该错误信息的“详细信息”后,我们可以看到,443端口已被其他程序占用而无法绑定,导致失败。
因此我们需要先知道哪些应用程序占用了 443 端口。
打开CMD,输入“netstat -ano”命令,如下图所示:

我们可以看到,是PID为6648的应用程序占用了443端口。在任务管理器中发现,是vmware-hostd.exe占用了该端口。在“服务”中结束“VMware Workstation Server”服务即可,也可以将该服务改为“手动”启动。
此时再启动 Apache 就不会出错了。
Apache 启动后,打开浏览器,输入地址“localhost”或“127.0.0.1”,可以看到如下页面:

看到这个页面,就表示 Apache 正常运行了。
不过现在 Apache 还无法执行 php 程序,因为我们还没告诉 Apache 调用 PHP 的接口。
在 httpd.conf 文件中修改如下几处:
- 在所有LoadModule语句后,添加相关语句引用 php 的 apache 模块,并添加 php 类型:
LoadModule php7_module ${SRVROOT}/../../PHP/PHP7.2/php7apache2_4.dll <IfModule php7_module> PHPIniDir "${SRVROOT}/../../PHP/PHP7.2/" AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule>
- 将文档根目录改为我们自己的根目录:D:\Server\www(大约在250行左右。<Directory>内的部分可以不变)
DocumentRoot "${SRVROOT}/../../../www" <Directory "${SRVROOT}/../../../www"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
保存后,即可重新启动 Apache。
在 D:\Server\www 目录下新建 index.php 文件,并写入如下内容:
<?php phpinfo();
保存后,打开浏览器,地址栏输入“localhost”。如看到显示 php 信息的页面,则表示 php 模块加载成功:

如果在使用过程中还遇到其他问题,可以留言,我会尽量解答。
三、MySQL
下载好后将压缩包内的文件解压到 D:\server\bin\MySQL 目录中对应版本目录下,例如,可以将 MySQL 5.7 版本的文件夹命名为 MySQL5.7:
解压好之后的 MySQL 并不能直接使用,需要先设定好参数。
创建 my.ini 文件,并写入以下内容:
[mysqld] # set basedir to your installation path basedir=D:\\Server\\bin\\MySQL\\MySQL5.7 # set datadir to the location of your data directory datadir=D:\\Server\\bin\\MySQL\\MySQL5.7\\data
目录中并不包含 data 文件夹,所以我们需要先初始化。
以“管理员身份”运行CMD,并切换到 MySQL 的 bin 目录,并输入如下命令:
mysqld --initialize-insecure
如果运行正确,则不会有任何提示。相应的,MySQL 目录下会生成 data 目录,并放入原始数据:

初始化成功后,我们可以将 mysqld 加入到服务,实现开机自动运行。
还是刚才的命令行窗口,输入以下命令:
mysqld --install MySQL5.7
后面的“MySQL5.7”可以不加。如果不加,则默认名称就是“MySQL”。此处指定为“MySQL5.7”是为了和以后可能与其他版本共存时相区别。
安装成功后会有文字提示,同时在服务列表中也能看到该服务。
启动服务以后,还是回到刚才的命令提示符,输入以下命令:
mysqlshow -u root mysql
此命令是为了列出 mysql 数据库下的所有表名。
命令输入后如果能输出所有表,则表明 MySQL 已成功安装。
您必须登录才能发表评论。