Mac更新系统后续 – 恢复本地Apache配置

Mac每次更新系统后,Apache会被重置,例如127.0.0.1无法访问,或者之前的项目无法访问。但是配置文件已经被自动备份,本文介绍如何恢复Apache配置信息。


  • 查看原先项目
# 注意是 /Library 不是~/Library

cd /Library/WebServer/Documents

1. 恢复Apache配置文件

进入Apache目录

cd /etc/apache2

在此目录和extra里面会看到一堆 ~previous 结尾的文件,这些文件就是系统帮我们自动备份的文件,现在我们逐步恢复。

(1) 恢复httpd.conf

一般这个目录下面大家可能只是打开了部分扩展功能,比如我只打开了php7、rewrite和Include httpd-vhost.conf, 如果打开的扩展不多的话可以直接在最新的httpd.conf里面修改,如果忘记之前是如何配置的,则可以使用旧文件代替,具体步骤如下:

# 备份源文件

sudo cp httpd.conf httpd.conf.backup

# 使用旧文件替换

sudo cp httpd.conf~previous httpd.conf

(2) 恢复先前项目配置

上述配置完成之后,重启Apache只会显示Its Works!,如果之前的项目绑定了本地域名,则仍然无法用本地域名访问,接下来修改原项目配置文件

# 进入extra文件夹

cd extra

# 备份源文件

sudo cp httpd-vhosts.conf httpd-vhosts.conf.backup

# 使用旧文件替换

sudo cp httpd-vhosts.conf~previous httpd-vhosts.conf

在此目录下方有多个~previous文件,请根据需求选择性恢复,一般只恢复上述文件即可恢复项目配置。

注:先前配置的 /etc/hosts 不受影响,可以不用恢复

2. 启动Apache

# 启动Apache

sudo apachectl restart

3. 问题排查

(1) 上述步骤完成后重启Apache,仍然无法访问 (拒绝访问)

这里请自行排查端口是否被占用,我只介绍另外一种可能。

由于 apachectl restart 命令并不会报错,所以我们使用下面命令启动

sudo /usr/sbin/httpd -k start

此命令会爆出异常,请根据异常去修改httpd.conf,或其他配置文件

(2) 个别现象分析

当我修改好上述配置之后,我的ThinkPHP项目都报MySQL异常。

SQLSTATE[HY000] [2002] No such file or directory

# 创建mysql文件夹,如果已经存在该文件请跳过

sudo mkdir /var/mysql

# 将mysql.sock文件映射到/var/mysql路径中

sudo ln -s /private/tmp/mysql.sock  /var/mysql/mysql.sock