2

几个月前,我在 Mac OSX 10.6.8 上安装了 Apache。Apache 自动安装在 /usr/local/apache2。在一些小问题之后,我成功地让 Apache 监听端口 8080,并且我能够让 Apache 从 /usr/local/apache2/cgi-bin 执行 cgi 脚本。

从那时起我就没有使用过 apache,当我最近使用以下方式启动 apache 时:

/usr/local/apache2/bin$ sudo apachectl -k start

然后在我的浏览器中输入以下网址:

http://localhost:8080

apache 不会提供 index.html 页面或 /usr/local/apache2/htdocs 中的任何其他页面。但是,如果我使用网址:

http://localhost

然后apache确实提供了显示“它有效”的“一个index.html”页面。我检查了位于 /usr/local/apache2/conf/httpd.conf 的 httpd.conf 文件,并且 apache 设置为侦听端口 8080:

Listen 8080

接下来,我将文件 /usr/local/apache2/htdocs/index.html 更改为显示“Hello world”,但是当我使用 url 时,apache 仍然提供了一个显示“It works”的页面:

http://localhost

我再次检查了我的 httpd.conf 文件中的这一行:

DocumentRoot "/usr/local/apache2/htdocs"

所以我得出结论,我的 apache 安装没有使用位于 /usr/local/apache2/conf/httpd.conf 的 httpd.conf 文件。我用谷歌做了一些搜索,我发现了这个命令:

/usr/local/apache2/bin$ apachectl -V 

产生了输出:

Server version: Apache/2.2.22 (Unix)
Server built:   Jul 12 2012 15:09:37
Server's Module Magic Number: 20051115:30
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

我的 apache 安装现在使用的 httpd.conf 位于 /private/etc/apache2/httpd.conf,其中包含以下几行:

ServerRoot "/usr"

Listen 80

DocumentRoot "/Library/WebServer/Documents"

我的问题是:这些变化到底是怎么发生的?apache 文档说 httpd.conf 的路径是在编译时设置的。我考虑了 /usr/local/apache2/bin/apachectl 可能是符号链接到系统 apache 的可能性,但是这个输出:

/usr/local/apache2/bin$ ls -al
total 2104
drwxr-xr-x  20 root   admin     680 Feb 19 12:36 .
drwxr-xr-x  15 root   admin     510 Feb 19 12:36 ..
-rwxr-xr-x   1 root   admin   57200 Feb 19 12:36 ab
-rwxr-xr-x   1 7stud  staff    3410 Feb 19 12:32 apachectl

并不表示情况如此。

4

1 回答 1

3

which表明您正在运行系统apachectl而不是自定义系统。尝试

sudo /usr/local/apache2/bin/apachectl -k start

...运行您的并启动您自己的自定义 apache。

于 2013-04-21T09:47:30.423 回答