这些年来,也一直都在运维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
所有软件均从官网直接下载
解压后软件存放路径:C:\AMP,软件名称的下级均无其它多余外层目录
为了方便日后排查错误,建议修改默认配置文件之前,先复制一份以备日后排错比对使用。
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++ 环境
Visual C++ Redistributable for Visual Studio 2015官方下载地址:
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145&6B49FDFB-8E5B-4B07-BC31-15695C5A2143=1
下载并成功安装后,再次启动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报文头会显示如下信息
隐藏版本信息之后
修改完httpd.conf配置文件之后再次重启httpd
cmd命令行停止前台阻塞的httpd程序,使用CTROL+C组合键
此时打开浏览器访问localhost已经正常了
此时我们可以向Httpd的网页根目录添加一个自己的页面进行测试
C:\AMP\httpd\htdocs\test.html
恭喜你,你的httpd服务器已经可以正常工作了!
再次使用浏览器访问localhost/test.html进行测试
如果能看到上图结果说明你的httpd作为静态服务器已经正常了,接下来需要修httpd及PHP的相关配置,使httpd能够和PHP应用服务器进行整合。
配置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报文头信息如下
如果httpd隐藏了版本信息只会看到X-Powered-By: PHP/7.2.11这一行信息
隐藏PHP版本信息之后(不会显示php应用的任何信息)
添加httpd整合php之后的测试面
C:\AMP\httpd\htdocs\httpd-php.php
echo "恭喜你,你的HTTPD调用PHP配置已经成功!"
?>
首先使用httpd.ext –t做一下配置文件格式的检查,没问题之后再次启动
再次使用浏览器访问localhost/httpd-php.php进行测试
如果能看到上图的结果,说明你的httpd整合php已经没有问题了。
接下来就是mariadb的安装及配置了
创建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窗口不可以关闭
再打一个新的cmd窗口使用mysql客户端工具连接测试
C:\Users\lucker>cd c:\amp\mariadb\bin
c:\AMP\mariadb\bin>mysql.exe -uroot
能够看到如上画面说明MariaDB服务器的安装基本完成,接下来写一个php连接MariaDB的测试面进行测试了
C:\AMP\httpd\htdocs\httpd-mariadb.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访问测试
出现上述报错提示是源于php的mysqli模块没开启,需要修改php.ini配置文件,指定php扩展组件所在目录,以及启用需要的扩展组件。
extension_dir = "C:\AMP\php\ext"
extension=mysqli
注意:由于我这里仅仅为了给大家展示PHP连接MariaDB,常规来说,需要启用的模块不止这一个,需要根据自己的实际情况选择性的进行开启。
再次重启httpd服务刷新访问页面,成功页面展示如下
至此为止,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>
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>
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一键安装包,毕竟这种分开安装的方式坑会比较多,配置比较复杂。如果想日后维护升级方便,或者有更高的使用需求,自己整合的这种方式当然也就用得上了。