首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mac上的虚拟主机定向到ServerRoot

Mac上的虚拟主机定向到ServerRoot
EN

Stack Overflow用户
提问于 2018-05-30 11:17:04
回答 1查看 1.6K关注 0票数 1

我主要使用XAMPP来满足本地的开发需求,但我觉得是时候去掉拐杖,从命令行界面开始工作了。

我遇到的问题是我的虚拟主机指向ServerRoot,而不是虚拟主机指向的地方。我目前正在尝试的是laravel应用程序,所以我的文件结构是

/usr/local/var/www/domain1/laravel

/usr/local/var/www/domain1/public_html

下面是我的配置文件

代码语言:javascript
复制
# /etc/apache2/httpd.conf
ServerRoot "/usr/local/var/www"
ServerName 127.0.0.1
DocumentRoot "/usr/local/var/www"

# /etc/apache2/extra/httpd-vhosts.conf
<VirtualHost *:80>
      DocumentRoot "/usr/local/var/www/mydomain.com/public_html"
      ServerName dev.mydomain
      ServerAlias www.dev.mydomain
      ErrorLog "/private/var/log/apache2/dev.mydomain/error_log"
      CustomLog "/private/var/log/apache2/dev.mydomain/access_log" common
</VirtualHost>

# /ect/hosts
127.0.0.1   localhost
127.0.0.1   dev.mydomain
::1         localhost
::1         dev.mydomain

当我在浏览器中转到dev.mydomain时,它会将我转到/usr/local/var/www而不是/usr/local/var/www/mydomain/public_html

我已经重启了服务器。

编辑1:

当我遍历文件路径时,php文件也没有解析,而是作为常规文本文件打开。

编辑2:

我注释掉了httpd.conf DocumentRoot行并重新启动了apache,但问题仍然存在。当我执行apachectl -t -D DUMP_VHOSTS时,虚拟配置返回空白。我已经包含了未注释的/private/etc/apache2/extra/httpd-vhosts.conf和LoadModule vhost_alias_module。

我变了

包含/private/etc/apache2/extra/httpd-vhosts.conf

包含/etc/apache2//httpd-vhosts.conf

但它们都链接到同一个文件。

编辑3:

执行apachectl -S会返回与我建立的根目录不同的服务器根目录。` `apachectl -t -D DUMP_VHOSTS也返回为空。我认为我运行的apache版本可能与OSX上的默认版本不同。我几年前就玩过了。有没有办法知道当前运行的Apache配置路径在哪里?

编辑4:

我检查了httpd的运行位置,发现运行的apache与默认的不同。

代码语言:javascript
复制
MacBook-Pro:extra Daniel$ whereis httpd
/usr/sbin/httpd
Daniels-MacBook-Pro:extra Daniel$ /usr/sbin/httpd -V
Server version: Apache/2.4.29 (Unix)
Server built:   Jan 17 2018 18:20:31
Server's Module Magic Number: 20120211:68
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -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=256
 -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_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

我在另一个配置中再次取消对vhosts行的注释,但现在我在重新启动时收到错误消息:

httpd: /usr/local/etc/httpd/Httpd.conf的第69行出现语法错误:无法将lib/httpd/

/mod_mpm_prefork.so加载到服务器: dlopen(/usr/local/var/www/lib/httpd/modules/mod_mpm_prefork.so,10):找不到

EN

回答 1

Stack Overflow用户

发布于 2018-05-30 20:03:39

好吧,问题是我几年前用Homebrew安装了apache,但是忘记了。我正在配置OSX apache配置文件。要找出正在使用的配置文件,请使用:

代码语言:javascript
复制
$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V

Server version: Apache/2.4.29 (Unix)
Server built:   Jan 17 2018 18:20:31
Server's Module Magic Number: 20120211:68
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -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=256
 -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_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf" <- where you config is, mine wasn't here

模块没有加载的原因是因为我很久以前更改了ServerRoot行,并且没有意识到这一点。缺省的ServerRoot是/usr/local/opt/httpd,它包含lib目录,模块位于该目录中并从中加载。将httpd.conf重置为默认值,并在我更改路径之前查看该目录,这有助于我捕获它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50595872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档