这些年来,也一直都在运维Linux环境,忽然有朋友自学PHP开发,说要在本身的windows笔记本上搭建一套PHP的开发环境,以前的开发环境也都是开发人员本身搞定的,因此也没去研究过。应邀接单后居然发现本身都不会玩windows的在WAMP环境,说来可悲啊!技术无国界,技术无高低。因此苦水往肚子里面咽。一翻的google后,在本身高性能的笔记本上使用vmware开始安装了个全新的windows10系统,而后直接上官网下载了AMP所需的各个部件,一路的尝试,WAMP架构终于成功了,但有一个感受是windows环境比Linux环境更难玩啊!为了可以让你们看的更清晰的过程,又重头到尾来了一次,因此有了下文。php
环境展现:html
操做系统:windows 10专业版(官方原版)mysql
Httpd版本:httpd-2.4.35-o110i-x64-vc14sql
PHP版本:php-7.2.11-Win32-VC15-x64数据库
MariaDB版本:mariadb-10.3.10-winx64apache
全部软件均从官网直接下载windows
解压后软件存放路径:C:\AMP,软件名称的下级均无其它多余外层目录浏览器
为了方便往后排查错误,建议修改默认配置文件以前,先复制一份以备往后排错比对使用。服务器
Httpd的主配置文件:C:\AMP\httpd\conf\httpd.confphp7
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官方下载地址:
下载并成功安装后,再次启动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
<html>
<title>test page</title>
<body>
<h1><center>恭喜你,你的httpd服务器已经能够正常工做了!</center></h1>
</body>
</html>
再次使用浏览器访问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
<?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
<?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一键安装包,毕竟这种分开安装的方式坑会比较多,配置比较复杂。若是想往后维护升级方便,或者有更高的使用需求,本身整合的这种方式固然也就用得上了。