# mac10.13配置apache2 php mariadb


### 前戏

最近经常碰到没网的情况，看到behance的desplay应用，可以很单纯的只上传、管理自己的项目（设计），然后可以很方便的演示，就动心了…… 经过n轮各种过程，最后还是决定在本机配置php环境，直接用wp的博客演示更富弹性。 

→ 开工

mac 自带apache  php ， 只是默认未开启，只需要开启就行了。 至于mysql以前装过，只需要启动就可以了。  

先从简单的着手，结果图样图森破了，mysql并启动不起来。想起来mariadb为什么不用mariadb呢？  why？ 经过0轮思想斗争，卸载mysql。想卸载干净听说要手动的，如下：

```bash
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
```

ok，世界清爽了。

### 安装 mariadb

brew 太好用了，为啥不用。

```bash
brew install mariadb 
```
<!--more-->

```
==> Installing mariadb
==> Downloading https://homebrew.bintray.com/bottles/mariadb-10.2.11.high_sierra
######################################################################## 100.0%
==> Pouring mariadb-10.2.11.high_sierra.bottle.tar.gz
==> /usr/local/Cellar/mariadb/10.2.11/bin/mysql_install_db --verbose --user=jovi
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

MySQL is configured to only allow connections from localhost by default

To connect:
    mysql -uroot

To have launchd start mariadb now and restart at login:
  brew services start mariadb
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
🍺  /usr/local/Cellar/mariadb/10.2.11: 640 files, 170MB
```

稍等一会儿，安装好了。 就喜欢省心的，看提示，有两条还很方便:

```````bash
To have launchd start mariadb now and restart at login:
  brew services start mariadb
```````

```bash
Or, if you don't want/need a background service you can just run:
  mysql.server start
```

### 接下来是apache 和 php

mac 自带，直接启动就好了

查看当前版本：

`httpd -v`

```bash
Server version: Apache/2.4.28 (Unix)
Server built:   Oct  9 2017 19:54:20
```

没错，继续

```bash
sudo apachectl start  //启动
sudo apachectl restart  //重启
sudo apachectl stop  //停止 是不是可以有reload 的？  命令跟linux一样，很亲切有木有。
```

浏览器输入地址确定是否成功：

http://localhost

http://127.0.0.1

如果Apache服务启动成功,页面会显示It works!

apache 的默认目录 

`/private/etc/apache2`

mac方便进入隐藏、系统文件的方式就是在“仿达”（翻译碉堡了）按 `shift+command+G` 输入路径，同样支持tab匹配。

默认web路径 `/资源库/WebServer/Documents/`

你肯定不会愿意吧网站文件放到这里的，想直接修改那就改httpd.conf  或者你可以考虑直接用 用户级的web路径，上面这个是系统级的，修改系统级路径一会儿再说，先说用户级路径。

访问地址：

`http://localhost/~username` 

`http://127.0.0.1/~username`

默认系统是没有这个目录的，需要手动创建一下，如果你用户目录下有 “站点”这个目录，就不用了。

```bash
mkdir ~/Sites
```

你可以再目录下放个index.php,写上如下内容。  测试站点&php是否正常。

```bash
<?php 
phpinfo(); 
?>
```

继续，在apache用户配置目录配置用户目录权限

>    -    打开终端
>    -    输入: `cd /etc/apache2/users`
>    -    输入: `sudo nano username.conf` ( 注意：这里的username是当前用户名，请根据实际情况修改 ) 如果你装了nano编辑器的话，或者用vim，我喜欢nano，更小白。
>    -    输入：

```
<Directory "/Users/username/Sites/">
    Options Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
```

>    -    修改当前文件的访问权限：`sudo chmod 775 username.conf`
>         打开浏览器，访问[http://localhost/~username/](https://link.jianshu.com?t=http://localhost/~username/)    , 此时页面提示～username服务器不存在，我们还需要进入下一步的设置

修改apache的httpd.conf文件

-    `cd /etc/apache2/`
-    `cd /etc/apache2/`
-    `sudo vim httpd.conf`

>    找到以下信息，将其前面的＃去掉：

```
LoadModulephp5_module libexec/apache2/libphp7.so  //php 支持

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule userdir_module libexec/apache2/mod_userdir.so //用户目录

Include /private/etc/apache2/extra/httpd-userdir.conf
```

-    `cd /etc/apache2/extra/`
-    `sudo vim httpd-userdir.conf`

系统级目录更改搜索 “DocumentRoot”

```
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
```

btw: nano 搜索是 `ctrl+w` ，输入关键词`Enter`。  **搜索下一个**是搜索完以后再按`ctrl+w` 然后直接 `Enter`

>    找到以下信息，将其前面的＃去掉：
>    `Include /private/etc/apache2/users/*.conf`
>
>    此时访问[http://localhost/~username/](https://link.jianshu.com?t=http://localhost/~username/), 依然无法访问，提示：You don‘t have permission to access /~username/ on this server

修改 httpd.conf

-    `sudo vim /etc/apache2/httpd.conf`

找到：

```
<Directory />
    AllowOverride none
    Require all denied
</Directory>

```

修改为：

```
<Directory />
    AllowOverride none
    Require all granted
</Directory>

```

验证结果

重启apache：`sudo apachectl restart`
访问：[http://localhost/~username/](https://link.jianshu.com?t=http://localhost/~username/) 
