Mac 上配置 MNMP 环境
前言
今天打算实践一下 Wordpress 主题开发,但由于电脑上没有 PHP 和 MySQL 的环境,于是折腾了一下,结果发现安装配置过程一堆的坑,虽然最终选择了 Docker 环境开发,但毕竟已经踩坑了,就记录一下。
本文记录如何在 Mac OS 上配置 Ngnix + PHP + MySQL,以及最后如何成功安装 Wordpress。
过程
Nginx
1. 安装
1 | brew install nginx |
2. 开启
1 | # 启动 |
3. 访问
nginx 默认监听 8080 端口,可以这样看一下是否能够访问:
1 | curl localhost:8080 |
4. 配置主机
为了方便管理,我们在 nginx 配置目录下的 servers
新增一个配置文件:
1 | vim /usr/local/etc/nginx/servers/www.conf |
并填充以下内容:
1 | server { |
注意:最好每个项目都单独一个配置文件。
从上面的配置可以看到我们将项目放在用户下的 www
下,在这个目录新建一个 html 文件:
1 | mkdir ~/www |
这时候重启一下 nginx 服务,访问刚刚配置的主机,就可以访问到上面这个 html 文件
1 | brew services restart nginx |
PHP
1. 安装
Mac 已经自带有 PHP,你可以通过以下命令查看本机是否存在 PHP:
1 | brew list | grep php |
如果没有,或者你想安装其他版本的话,那就先安装
1 | # 可以先搜索以下是否有你想要的版本 |
2. 配置
配置 php-fpm 权限
1 | vim /usr/local/etc/php/7.3/php-fpm.d/www.conf |
修改如下:
1 | - user = _www |
如果正在运行 php-fpm,那就先关闭
1 | sudo killall php-fpm |
然后启动:
1 | sudo php-fpm -D |
这时候如果遇到以下报错:
1 | ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2) |
错误信息显示,不能打开配置文件, cd /private/etc
,发现没有 php-fpm.conf 文件,但是有 php-fpm.conf.default 文件。这个文件是默认配置,我们可以复制一份,改名为 php-fpm.conf,然后再根据需要改动配置。
1 | sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf |
执行 php-fpm
,再次报错:
1 | ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2) |
错误信息显示,不能打开错误日志文件。 cd /usr/var/log
发现根本没有这个目录,甚至连 var 目录都没有,加上为了避免权限问题,干脆配置到 /usr/local/var/log 目录。
1 | vim /private/etc/php-fpm.conf |
执行 sudo php-fpm
,再次报错:
1 | ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48) |
说是 9000 端口被占用了,但 lsof -i:9000
又看不见,于是只能换个端口:
1 | vim /private/etc/php-fpm.d/www.conf |
再执行 sudo php-fpm -D
,就能够正常启动了。
3. 配置 nginx
这时候我们修改 nginx 的主机配置,使它支持 PHP
1 | server { |
然后重启 nginx 服务
1 | brew services restart nginx |
这时候在项目根目录新增一个 php 文件
1 | vim ~/www/index.php |
测试一下
1 | curl localhost |
MySQL
通常来说 Mac OS 也是自带有 MySQL,你可以通过以下命令查看本机是否存在 MySQL
1 | brew list --formula | grep mysql |
如果没有安装的话,那就先安装
1 | brew install mysql |
安装完成以后,会发现并没有让我们设置密码,运行以下进入密码设置
1 | mysql_secure_installation |
设置完密码之后,就可以登录了
1 | mysql -uroot -p |
Wordpress
环境终于配置好了,终于可以安装 Wordpress 啦,然而事情并没有这么简单,当我满心欢喜把 wordpress 下载到项目根目录下,就好像这样:
1 | cp -r ~/download/wordpress ~/www/wordpress |
然后我们创建一个数据库:
1 | [root@host]# mysql -u root -p |
然后我们通过浏览器访问 localhost/wordpress
,就可以看到一个 Wordpress 的安装界面,输入数据库相关的信息后,本以为可以像往常一样成功进入下一步,结果我看到了这个错误:WordPress 建立数据库连接时出错。
结果再尝试了几次,确保所有表单都已经填写正确,依然无法正常建立数据库连接,意识到事情可能并没有这么简单, 于是我在网上找到了一个解决方案,大概就是说无法使用 root 进行登录,需要新增一个用户:
1 | grant all on wordpress-test.* to 'wp-test'@'localhost' identified by 'password' |
然后使用这个用户进行登录,然后在我这里却行不通,依然显示同样的错误,于是我开启一下 debug
,看一下导致是什么问题
1 | cp wp-config-sample.php wp-config.php |
做以下改动:
1 | // 填写以下数据库信息 |
再访问一下,可以看到以下错误:
1 | No such file or directory 建立数据库连接时出错 |
其实原因是 PHP 配置中的 mysql.sock
与本机的 MySQL 中的路径不一致,可以通过这样查看:
1 | vim ~/www/phpinfo.php |
然后打开 localhost/phpinfo
,搜索 default_socket
。
然后再查看 MySQL 的 socket
路径:
1 | [root@host]# mysql -u root -p |
如果与 PHP 中的 mysql.sock
路径不一致,则需要修改:
1 | sudo cp /private/etc/php.ini.default /private/etc/php.ini |
然后重启一下 php-fpm
1 | sudo killall php-fpm |
再看看 phpinfo
,应该就生效了。
然后再尝试登录一下 Wordpress,又发现了以下错误:
1 | error: The server requested authentication method unknown to the client [duplicate] |
解决方案如下:
1 | [root@host]# mysql -u root -p |
应该就可以了。
🥳 加载 Disqus 评论