macOS 中 apache vhosts 配置备忘

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 即可。

上一篇:在foreach的判断条件里执行方法会有效率问题吗?


下一篇:学习 WebService 第二步:知识准备——WSDL文件解析