这些年来,也一直都在运维Linux环境,突然有朋友自学PHP开发,说要在自己的windows笔记本上搭建一套PHP的开发环境,之前的开发环境也都是开发人员自己搞定的,所以也没去研究过。应邀接单后竟然发现自己都不会玩windows的在WAMP环境,说来可悲啊!技术无国界,技术无高低。所以苦水往肚子里面咽。一翻的google后,在自己高性能的笔记本上使用vmware开始安装了个全新的windows10系统,然后直接上官网下载了AMP所需的各个部件,一路的尝试,WAMP架构终于成功了,但有一个感觉是windows环境比Linux环境更难玩啊!为了能够让大家看的更清晰的过程,又重头到尾来了一次,所以有了下文。

 

环境展示:

操作系统:windows 10专业版(官方原版)

Httpd版本:httpd-2.4.35-o110i-x64-vc14

PHP版本:php-7.2.11-Win32-VC15-x64

MariaDB版本:mariadb-10.3.10-winx64

所有软件均从官网直接下载

image.png

解压后软件存放路径:C:\AMP,软件名称的下级均无其它多余外层目录

image.png

image.png

为了方便日后排查错误,建议修改默认配置文件之前,先复制一份以备日后排错比对使用。

 

Httpd的主配置文件:C:\AMP\httpd\conf\httpd.conf

Httpd的小配文件:C:\AMP\httpd\conf\extra

Httpd的默认证书目录:C:\AMP\httpd\conf\ssl

Httpd的网页根目录:C:\AMP\httpd\htdocs

打开cmd窗口,尝试启动httpd

C:\Users\lucker>cd c:\amp\httpd\bin

 

c:\AMP\httpd\bin>httpd.exe

如果收到如下报错,说明你的系统缺少Visual C++ 环境

image.png

Visual C++ Redistributable for Visual Studio 2015官方下载地址:

https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145&6B49FDFB-8E5B-4B07-BC31-15695C5A2143=1

image.png

下载并成功安装后,再次启动httpd又会收到如下报错:

c:\AMP\httpd\bin>httpd.exe

httpd.exe: Syntax error on line 40 of C:/AMP/httpd/conf/httpd.conf: ServerRoot must be a valid directory


httpd.conf需要修改的地方有以下几处:

Define SRVROOT "/Apache24"

需要修改为自己的httpd的根目录

Define SRVROOT " C:\AMP\httpd"

 

修改完此处,httpd已经可以正常启动了

 

顺便说明一下httpd隐藏版本设定

ServerTokens Prod

可以放在Define SRVROOT " C:\AMP\httpd"

下一行即可

 

没有隐藏版本信息之前http报文头会显示如下信息

image.png

隐藏版本信息之后

image.png

修改完httpd.conf配置文件之后再次重启httpd

image.png

cmd命令行停止前台阻塞的httpd程序,使用CTROL+C组合键

此时打开浏览器访问localhost已经正常了

image.png

此时我们可以向Httpd的网页根目录添加一个自己的页面进行测试

C:\AMP\httpd\htdocs\test.html

<html>

<title>test page</title>

<body>

<h1><center>恭喜你,你的httpd服务器已经可以正常工作了!</center></h1>

</body>

</html>

再次使用浏览器访问localhost/test.html进行测试

image.png

如果能看到上图结果说明你的httpd作为静态服务器已经正常了,接下来需要修httpd及PHP的相关配置,使httpd能够和PHP应用服务器进行整合。

image.png

配置httpd调用php的接口

LoadModule php7_module "C:\AMP\php\php7apache2_4.dll"

PHPIniDir "C:\AMP\php"

 

配置httpd对php文档格式的支持

IfModule mime_module

AddType application/x-httpd-php .php

 

PHP程序主配置文件,默认没有,需要自行复制C:\AMP\php\php.ini-production为php.ini并进行相应修改,

当然如果有需要,也可以复制C:\AMP\php\php.ini-development为php.ini后进修改。

两者不同之外通过原来的文件名足以区分。Development环境开启的调试性参数更多。

 

修改时区为Asia/Shanghai

date.timezone = Asia/Shanghai


顺便说一下隐藏PHP相关信息设定

expose_php = On

修改为

expose_php = Off

 

没有隐藏PHP版本信息之前http报文头信息如下

image.png

如果httpd隐藏了版本信息只会看到X-Powered-By: PHP/7.2.11这一行信息

 

隐藏PHP版本信息之后(不会显示php应用的任何信息)

image.png

添加httpd整合php之后的测试面

C:\AMP\httpd\htdocs\httpd-php.php

<?php

    echo "恭喜你,你的HTTPD调用PHP配置已经成功!"

?>

首先使用httpd.ext –t做一下配置文件格式的检查,没问题之后再次启动

image.png

再次使用浏览器访问localhost/httpd-php.php进行测试

image.png

如果能看到上图的结果,说明你的httpd整合php已经没有问题了。

 

接下来就是mariadb的安装及配置了

image.png

创建mysql配置文件C:\AMP\mariadb\my.cnf

[mysqld]

innodb_buffer_pool_size=128M

datadir=C:\amp\mariadb\data

socket=C:\amp\mariadb\socket\mysql.sock

symbolic-links=0

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

####Self config####

bind-address=0.0.0.0

character-set-server=utf8

skip-name-resolve

innodb_file_per_table

default_storage_engine=innodb

log-warnings=1

slow_query_log=1

long-query-time=2

slow_query_log_file=C:\amp\mariadb\log\slow.log

 

[mysqld_safe]

log-error=C:\amp\mariadb\log\error.log

 

注意:此配置文件需要是unix格式

 

需要自己创建两个目录

存放socket的目录C:\AMP\mariadb\socket

存放日志目录C:\AMP\mariadb\log

 

Cmd下启动MariaDB服务器的命令

 

C:\Users\lucker>cd c:\AMP\mariadb\bin

 

c:\AMP\mariadb\bin>mysqld.exe --basedir=C:\AMP\mariadb --datadir=C:\amp\mariadb\data --log-error=C:\amp\mariadb\log\error.log --socket=C:\amp\mariadb\socket\mysql.sock

MariaDB服务器启动后会处于前台阻塞状态,此cmd窗口不可以关闭

image.png

再打一个新的cmd窗口使用mysql客户端工具连接测试

C:\Users\lucker>cd c:\amp\mariadb\bin

 

c:\AMP\mariadb\bin>mysql.exe -uroot

image.png

能够看到如上画面说明MariaDB服务器的安装基本完成,接下来写一个php连接MariaDB的测试面进行测试了

C:\AMP\httpd\htdocs\httpd-mariadb.php

<?php

//定义参数

$servername = "localhost";

$username = "root";

$password = "";

 

// 创建连接

$conn = new mysqli($servername, $username, $password);

 

// 检测连接

if ($conn->connect_error) {

    die("抱歉,MariaDB数据库连接失败!: " . $conn->connect_error);

}

    echo "恭喜你,MariaDB数据库连接成功,你的WAMP搭建成功!!!";

?>

 

使用浏览器打开localhost/httpd-mariadb.php访问测试

image.png

出现上述报错提示是源于php的mysqli模块没开启,需要修改php.ini配置文件,指定php扩展组件所在目录,以及启用需要的扩展组件。

extension_dir = "C:\AMP\php\ext"

extension=mysqli

 

注意:由于我这里仅仅为了给大家展示PHP连接MariaDB,常规来说,需要启用的模块不止这一个,需要根据自己的实际情况选择性的进行开启。

 

再次重启httpd服务刷新访问页面,成功页面展示如下

image.png

至此为止,WAMP环境搭建完成,但要想用的更方便一些,需要把httpd以及mariadb服务端都安装成服务并设定为开机自启动,这样以后就不用使用烦琐的cmd命令来服务。


Cmd命令行将httpd安装为服务

c:\amp\httpd\bin>httpd.exe -k install -n httpd

Installing the 'httpd' service

The 'httpd' service is successfully installed.

Testing httpd.conf....

Errors reported here must be corrected before the service can be started.

 

c:\amp\httpd\bin>httpd.exe -k start

 

c:\amp\httpd\bin>httpd.exe -k stop

The 'Apache2.4' service is stopping.

The 'Apache2.4' service has stopped.

 

c:\amp\httpd\bin>

image.png

Cmd命令行将MariaDB安装为服务

c:\amp\mariadb\bin>mysqld.exe --install mysql --defaults-file=c:\amp\mariadb\my.cnf

Service successfully installed.

 

c:\amp\mariadb\bin>net start mysql

mysql 服务正在启动 .

mysql 服务已经启动成功。

 

c:\amp\mariadb\bin>net stop mysql

mysql 服务正在停止.

mysql 服务已成功停止。

 

c:\amp\mariadb\bin>

image.png

windows服务都在cmd命令行下使用net命令进行管理

格式:net start|stop service_name(如果默认名称很复杂建议安装服务时人工指定)

c:\amp\httpd\bin>net start httpd

httpd 服务正在启动 .

httpd 服务已经启动成功。

 

c:\amp\httpd\bin>net start mysql

mysql 服务正在启动 .

mysql 服务已经启动成功。

 

c:\amp\httpd\bin>net stop httpd

httpd 服务正在停止.

httpd 服务已成功停止。

 

c:\amp\httpd\bin>net stop mysql

mysql 服务正在停止.

mysql 服务已成功停止。

 

c:\amp\httpd\bin>

 

至此为止,终于搞定了windows环境下的WAMP架构的搭建,如果要想调试自己的代码,就把代码放置于C:\amp\httpd\htdocs就可以随心所欲的折腾自己的PHP程序了。


当然对于新手来说,还是强烈建议使用phpstudy或者xampp一键安装包,毕竟这种分开安装的方式坑会比较多,配置比较复杂。如果想日后维护升级方便,或者有更高的使用需求,自己整合的这种方式当然也就用得上了。