11

我正在试用 Valet,据我所知,它看起来非常不错。

我已经完成了“整个”安装过程,Valet 安装成功。

但是当我cd进入我的项目文件并输入valet park并浏览到时http://blog.dev,我得到“找不到 blog.dev 的 DNS 服务器地址”。

我不知道我做错了什么。:)

4

4 回答 4

41

当您运行valet install它时,它会尝试安装 dnsmasq。它需要 sudo 权限。

您可以检查它是否已安装并运行使用

brew services list

你应该看到类似的东西

dnsmasq started root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

但是,您可能需要先点击 brew/services

brew tap homebrew/services

如果它不存在,请运行

brew install dnsmasq
brew services start dnsmasq

再次运行valet install以设置 dnsmasq 并留意任何错误。这应该做的是在 /usr/local/etc/dnsmasq.conf 的底部添加一行,类似于

conf-file=/Users/{YOURUSER}/.valet/dnsmasq.conf

/Users/{YOURUSER}/.valet/dnsmasq.conf 然后应该包含

address=/.dev/127.0.0.1

检查您的 dns 服务器是否响应请求

dig testing.dev @127.0.0.1

您应该会看到类似的响应

;; ANSWER SECTION:
testing.dev. 0 IN   A   127.0.0.1

要真正确保您的 Mac 知道它应该使用本地 DNS 服务器解析 *.dev,需要告知它这样做。Valet 也为您处理此问题,但您可以通过执行以下操作来检查它是否已完成。

在该目录内/etc/resolver,应该有一个文件dev,其内容如下

nameserver 127.0.0.1

这将为 *.dev 创建一个自定义 DNS 解析器,并将所有请求指向您的本地 DNS 服务器。

使用以下任一命令重新启动 dnsmasq,然后再试一次。

// this
brew services restart dnsmasq

// or this
sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq

如果这一切正常,您应该能够 ping 任何东西.dev

ping anything.dev

PING anything.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.039 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.081 ms

这确保了与 DNS 相关的位正在工作。


最终的问题是与 DNS 相关的问题,但由于这是你需要尝试的一切,我将把它留在下面。也就是说,如果您无法 ping something.dev 或收到“找不到 blog.dev 的 DNS 服务器地址”之类的错误。根据OP,这与需要解析的DNS有关。

由于 Caddy 在 80 端口上为网站提供服务,因此您需要确保在 80 端口上没有运行其他任何东西。

sudo lsof -n -i:80 | grep LISTEN

理想情况下,如果代客按预期运行,这应该返回球童。您想看下面的示例,或者理想情况下什么都不想;没什么,因为这意味着我们可以启动 Valet。

caddy     76234 root    3u  IPv6 0x4f871f962e84fa95      0t0  TCP *:http (LISTEN)

在下面的示例中,您可能会看到其他 Web 服务器,例如 Apache 或 Nginx(及其子进程_wwwnobody)。

httpd       79     root    4u  IPv6 0xf4641199930063c5      0t0  TCP *:http (LISTEN)
httpd      239     _www    4u  IPv6 0xf4641199930063c5      0t0  TCP *:http (LISTEN)
nginx     4837     root    6u  IPv4 0xf4641199a4e8e915      0t0  TCP 127.0.0.1:http (LISTEN)
nginx     4838   nobody    6u  IPv4 0xf4641199a4e8e915      0t0  TCP 127.0.0.1:http (LISTEN)

假设您已经使用 homebrew 安装了 Nginx,您可以运行以下命令来停止它。

brew services stop nginx

OSX 附带安装了 Apache,因此如果它正在运行,您可以停止使用以下内容。

sudo apachectl stop

此时,您可能可以使用 Valet 启动valet start它,它会起作用。

你可能会得到一个进一步的错误,这是由于在没有 FPM 的情况下安装 PHP 引起的。您可以使用

brew info php70 | grep php70-fpm

这应该会产生一些类似的东西

控制脚本位于 /usr/local/opt/php70/sbin/php70-fpm

如果它似乎没有安装,请使用以下内容。

brew uninstall homebrew/php/php70
brew install homebrew/php/php70 --with-fpm
valet restart
于 2016-05-11T22:22:17.860 回答
3

我遇到了同样的问题 - 卡在 ping foobar.dev - 并通过重新启动我的 Macbook(代客安装后)来修复它。我确信这不是一个确切的解决方案,我认为有一种方法可以在不重新启动的情况下做到这一点。然而,它对我有用。我不必执行任何其他步骤。

[编辑-此外,在重新启动之前,我确保尝试使用 fpm 提示进行安装,并在安装 php70 时遵循所有 brew 的建议(调整路径,确保 php70 在系统启动时启动。我不能说这些东西是否有帮助,所以可能首先想尝试重新启动。如果它真的只是需要重新启动,或者其他一些额外的步骤来正确启动服务,我认为 laravel 文档可能需要一些澄清。]

于 2016-06-01T20:55:04.393 回答
2

我遇到了同样的问题,安装后我卡在 ping foo.dev 上。

我检查了正在运行的服务。

> brew services list

Name    Status  User Plist
dnsmasq stopped
nginx   stopped
php71   stopped

手动启动所有三个服务

> brew services start dnsmasq
> brew services start nginx
> brew services start php71

valet install

Ping 成功到 foo.dev

于 2017-02-17T05:48:03.143 回答
1

如果您是 Windows 用户,请执行 Acrylic 配置,然后重新启动适配器(禁用和启用)

http://mayakron.altervista.org/wikibase/show.php?id=AcrylicWindows10Configuration

为我工作

于 2018-09-29T22:12:07.257 回答