在你的Windows上搭建AMP(Apache+MySQL+PHP)环境

古明地觉

2019-03-16 13:54:09

Personal

# 前言 由于不可抑制的好奇心,本蒟蒻开始尝试在我自己的windows环境下搭建http服务器,或者说,是WAMP ( **W** indows+**A**pache+**M**ySQL+**P**HP)环境~~并不会用Nignx~~,来本地搭建WordPress博客。在尝试各种WAMP集成环境(如XAMPP,AMPPS)后,我苦于出现的奇奇怪怪的错误,决定手动搭建WAMP环境。~~明明这样更麻烦好吗???~~ # 警告 1. 本安装过程中可能会出现大量神奇的问题,无折腾2h的耐心的人慎入。 2. 本安装过程中将大量使用命令提示符(管理员),黑框框过敏者,命令恐惧症者慎入。 # 准备 1. 一台**Windows**操作系统的计算机(具有root权限 && 联网)。 ~~笨蛋谁没有啊~~ 2. [**Apache**](http://httpd.apache.org/) - 最新版本的Apache,官网早就没有 Window 的下载版本了,不过有许多第三方制作的可以使用,可以随便选择一个。比如:[ApacheHaus](http://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC11),[查看更多](http://httpd.apache.org/docs/current/platform/windows.html#down) (zip解压版) 3. [**MySQL**](http://dev.mysql.com/downloads/) - 请下载 MySQL8 Community Server 社区版本(zip解压版) 4. [**PHP7**](http://php.net/) - 可任意选择一个版本进行下载安装(建议最新版)。__(thead safe)__(zip解压版) ![1.png](https://cdn.luogu.com.cn/upload/pic/54181.png) # 安装步骤 ## 预处理 如果你之前安装过其他环境(WAMP,Nginx,IIS and so on),请将它们卸载,否则会出现端口占用之类的麻烦问题。 ## 第一步:安装Apache - ### 安装 以 ApacheHaus 版本的为例,具体如下。 1. 将下载到的zip压缩包解压,并重命名为Apache24。 2. 把 Apache24 文件夹复制到安装目录下(如E:\WAMP\,建议安装在同一目录)。 3. 修改ServerRoot。打开 /Apache24/conf/httpd.conf,修改 ServerRoot 的地址,即 Apache 的安装目录,即 /path/to/Apache24。 4. 启动 Apache。打开命令行工具,把目录切换到 /Apache24/bin,执行 httpd。 此时,如果没有任何异常信息(控制台不动了),表明 Apache 已经启动成功。在浏览器中,输入 localhost,既可以看到页面输出。 ![2.png](https://cdn.luogu.com.cn/upload/pic/54182.png) - ### 设为服务 1. 命令行进入 ServerRoot/bin。 2. 输入`httpd -k install`,将Apache安装为服务。 3. 启动服务,输入`httpd -k start`或`net start Apache2.4`。 4. 若要关闭服务,输入`httpd -k stop` 或 `httpd -k shutdown`,或`net start Apache2.4`。 5. 若要重启服务,输入`httpd -k restart `。 - ### 错误处理 - __端口冲突__ 在尝试启动Apache时,可能会得出如下的错误信息: ![3.png](https://cdn.luogu.com.cn/upload/pic/54183.png) 其提示443或/和80端口被占用,导致apache无法启动。 - 80端口被占用 命令行键入`netstat -ano`,查看端口信息。可以发现80端口被pid为4的进程占用,然鹅最无可奈何的是,pid为4的进程是。。。__System__ ~~难不成你想干掉它???~~ 此进程是Http.sys。它是http API的驱动组件,Http栈服务器。如果80端口被Http.sys占用,说明一些正在使用http.sys的应用程序在运行。这就是阻止Apache运行的原因,因为Http.sys占用着80端口。 于是,我们就要禁用http.sys,来解决这个问题。 1. 输入`net stop http`,停止http.sys。 2. 输入`Sc config http start= disabled`,禁用它。 这样,80端口被占用问题便解决了。 - 443端口被占用 同样键入`netstat -ano`,查看端口信息。443端口被vm虚拟机占用了。这时候,本蒟蒻不建议去干掉虚拟机进程(毕竟还要用),而是修改apache监听的端口号。 1. 打开httpd-ssl.conf,将其中的443改为4430(或其它)。 2. 再打开httpd-alssl.conf,同理。 ![4.png](https://cdn.luogu.com.cn/upload/pic/54184.png) 这样,443端口被占用问题便解决了。 ## 第二步:安装MySQL 1. 解压MySQL zip压缩包,重命名后复制到安装目录。 2. 在MySQL根目录创建my.ini,将以下内容复制进去: ```ini [mysqld] # port 设置端口 ,若设置3306是默认端口可生路 # basedir 设置MySQL的安装目录 # datadir 设置MySQL数据库的数据的存放目录 port = 3306 basedir = E:\WAMP\mysql datadir = E:\WAMP\mysql\data # mysql8 默认值为caching_sha2_password default_authentication_plugin=mysql_native_password [client] # cmd.exe MySQL命令行所用端口 与上方保持一致 port = 3306 ``` 3. 将MySQL安装为服务。cmd进入basedir\bin,键入`mysqld -install`即可。但这时启动mysql服务会失败,接下来还有步骤。![5.png](https://cdn.luogu.com.cn/upload/pic/54185.png) 4. 键入`mysqld --initialize --console`,初始化data文件夹。这时它会给出随机的root密码 ~~赤裸裸的乱码~~,注意在冒号后面(不包括第一个空格)全都是password的一部分 ~~不然你看我怎么输了三遍~~ 5. 启动mysql服务,`net start mysql`。 6. 输入`mysql -u root -p`,打开MySQL,(这货是个纯控制台程序),再键入上面给你的密码。如果不出意外,MySQL便可以正常启动。![6.png](https://cdn.luogu.com.cn/upload/pic/54186.png) 7. 接下来就是MySQL的常规操作了,如修改root密码,创建数据库,创建新用户等等,就不多赘述了,可以参考菜鸟编程的[MySQL教程](http://www.runoob.com/mysql/mysql-tutorial.html)。 ![7.png](https://cdn.luogu.com.cn/upload/pic/54187.png) (这里是为了安装wordpress做准备) 完成后应该看起来像这个样子: ![8.png](https://cdn.luogu.com.cn/upload/pic/54188.png) ## 第三步:安装PHP 1. 检查下载的zip压缩包是否为线程安全。正确的安装包文件名应像这样:![9.png](https://cdn.luogu.com.cn/upload/pic/54189.png)中间没有__`nts`__,如果有,请返回官网重新下载。 2. 解压到安装目录,然后修改一下文件夹名称如php7。 3. 下面,对php进行配置。在php根目录下,复制一个php.ini-development重命名为 php.ini,然后打开php.ini文件进行修改。先打开必要的php扩展库~~其实我也不知道哪些有用哪些没用,总之全都打开吧~~。 ```ini ;将所有extension=前的分号都去掉: ;extension= ... extension= ... ;如: ;extension=mysqli ;改为 extension=mysqli ``` 4. 修改php的默认时区 ```ini ;date.timezone = date.timezone = PRC ``` 5. php安装完毕。 ## 第四步:整合Apache,MySQL,PHP ### 整合Apache与MySQL 把MySQL安装目录下的lib/libmysql.dll复制 Apache的bin目录下即可。 ### 整合Apache与PHP 打开 /Apache24/conf/httpd.conf 文件进行修改。 1. 引入php处理模块 ```ini LoadModule php7_module E:/WAMP/php7/php7apache2_4.dll PHPIniDir "E:/WAMP/php7" AddType application/x-httpd-php .php .html .htm ``` 2. 修改Apache默认执行的文件类型 ```ini # # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> ``` ------ 至此,搭建WAMP已经完成,重启Apache后,在htdocs目录下,新建一个脚本 index.php,粘贴以下内容: ```php <?php echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" $conn=mysqli_connect("localhost","用户","密码"); if($conn){ echo"ok"; }else{ echo"error"; } ?> ``` 浏览器进入localhost,如果显示ok则说明搭建成功。 # 全文完 参考文献:https://segmentfault.com/a/1190000004537925