1. 修改 apache 服务器指向的根目录
macOS 默置了 apache,有以下几个常用命令:
sudo apachectl -v // 查看 apache 版本
httpd -v // 同上
sudo apachectl start
sudo apachectl stop
sudo apachectl restart
sudo apachectl -t // 查看当前 apache 运行情况
当我们启动 apache 后,在浏览器地址栏输入 localhost,看到 "It works!" 字样就对了。这个 html 文件位于 /Library/Webserver/Documents/
下,该目录也就相当于 wampserver 下的 www 目录。如果不修改默认指向的目录,以后所有的文件都必须放在该目录下,不大方便,我们可以修改 /etc/apache2/httpd.conf
文件,搜索 DocumentRoot
,进行修改(sudo vi http.conf)。(因为接下来的每个虚拟主机配置都会设定 DocumentRoot,所以修改这里的 DocumentRoot 看起来并不是必须的)
DocumentRoot "/Users/fish/www"
<Directory "Users/fish/www">
比如我把根目录指向了 /Users/fish/www
目录下,这时启动 apache,输入 localhost,打开的就是该目录下的 index 文件了。
2. 配置文件中开启 virtual hosts
上一步骤中的 httpd.conf 文件中,打开 vhosts 开关(去掉行首注释 #)
Include /private/etc/apache2/extra/httpd-vhosts.conf
3. 修改 httpd-vhosts.conf 文件
该文件位于 /etc/apache2/extra/
文件夹中。现在比如我在 /Users/fish/www/
目录中新建了个名为 test
的文件夹,想用 www.test.com 去访问,可以在该文件中添加如下:
<VirtualHost *:80>
DocumentRoot "/Users/fish/www/test"
ServerName www.test.com
ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>
这里注意修改的话都要用管理员权限 (sudo vi xxx)
4. 修改 hosts 文件
sudo vi /etc/hosts
添加一行 127.0.0.1 www.test.com
5. localhost 不能访问了?
这个时候,我们启动或者重启下 apache,便能访问 www.test.com,但是访问 localhost 却出错了,这时我们需要再次修改 httpd-vhosts.conf 文件,添加如下:
<VirtualHost *:80>
DocumentRoot "/Users/fish/www/"
ServerName localhost
ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>
6. 其他
如果出现这样错误 AH00557: httpd: apr_sockaddr_info_get() failed for fishdeMacBook-Pro.local
,在 hosts 文件中添加 127.0.0.1 fishdeMacBook-Pro.local
即可。