在你的Windows上搭建AMP(Apache+MySQL+PHP)环境
古明地觉
2019-03-16 13:54:09
# 前言
由于不可抑制的好奇心,本蒟蒻开始尝试在我自己的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