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