【问题标题】:Laravel homestead IP address not workingLaravel宅基地IP地址不起作用
【发布时间】:2015-03-18 04:21:31
【问题描述】:

我正在为我的虚拟机使用 Laravel Homestead 2.0,并尝试在 YAML 文件 192.168.10.10 中的默认 IP 地址上为我的网站提供服务

我的 /etc/hosts 文件如下所示:

# Homestead
192.168.10.10   beta.dev
192.168.10.10   deploy.dev

我的 Homestead.yaml 文件如下所示:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
      to: /home/vagrant/Projects

sites:
    - map: beta.dev
      to: /home/vagrant/Projects/emorybeta/public
    - map: deploy.dev
      to: /home/vagrant/Projects/deploy/public

...

当我将我的域链接到 127.0.0.1 时,站点会出现,但我必须将端口 8000 附加到 URL 的末尾(这没什么大不了的,我只想让指定的 IP 地址正常工作) .

有谁知道为什么我的域指向 192.168.10.10 时无法连接到服务器?


更新:

当我 ping deploy.dev 时,会显示正确的 IP 地址,但我的浏览器仍然无法连接到服务器。我认为这可能与 Yosemite 中的 DNS 问题有关。

【问题讨论】:

  • 无辜的问题,你运行了命令 vagrant provision 吗?
  • 对于仍在为此苦苦挣扎的任何人,您需要将您的 php 版本与适当的宅基地盒版本相匹配,请参阅this。已经为此苦苦挣扎了一个星期,按照它所说的去做并让它发挥作用。
  • 根据我的经验,IP 地址有时会在某些设备上表现得“陈旧”,我从更改配置以使用新 IP 中受益:superuser.com/a/1214376/74576

标签: php laravel vagrant virtualbox homestead


【解决方案1】:

几周前我也遇到过同样的问题。

首先: 确保您的文件夹路径正确,如果正确,请仔细检查

下一步: 运行 homestead destroy 和 homestead up 来重新初始化虚拟机

如果这一切都不起作用: 检查您家中是否有任何设备也可能在 192.168.10.10 上。

如果这一切都不起作用,您的问题可能更难解决,我建议为它制作一个 github 问题。

【讨论】:

  • 我建议vagrant reload --provision 而不是销毁和重新启动。
  • @GoogleMac 为我做了诀窍 - 无需破坏图像。我猜我的盒子由于有一段时间没有使用而已经陈旧了。
【解决方案2】:

嘿,我遇到了同样的问题。我最终通过安装已弃用的 net-tools 包让它工作: sudo apt-get update 和 sudo apt-get install gnome-nettool

之后, homestead destroy 和 homestead up

这允许我使用我在 hosts 文件中指定的“域”从本地计算机的浏览器访问我的虚拟机站点 - 在您的情况下为 beta.dev 和 deploy.dev - 没有指localhost 或端口 8000。祝你好运,希望这会有所帮助。

【讨论】:

  • 这也解决了我在 Ubuntu Gnome 17.04 上的问题
【解决方案3】:

这是我为我的 Windows 10 机器所做的解决方案:

确保为你的 vagrant box 添加一个持久路由 在管理员命令提示符下输入 路由 -p 添加 192.168.10.0 掩码 255.255.255.0 192.168.10.1

并确保您能够ping 192.168.10.10

还要检查为 virtualbox 仅主机适配器配置的 IP 地址是 192.168.10.1,掩码为 255.255.255.0

【讨论】:

  • 经过数小时的搜索,这就是解决我的问题的方法。必须将仅虚拟机主机适配器更改为 192.168.10.1(它使用的是 192.168.10.10)谢谢
【解决方案4】:

昨天我在 Homestead 5 上遇到了类似的问题。结果我的问题的原因是我运行了错误的 Vagrantfile。

一个实例应该响应ip地址:192.168.10.10

为了纠正我的问题,我所做的是遵循以下说明:http://laravel.com/docs/5.0/homestead

回顾一下:

终端运行:

vagrant box add laravel/homestead

然后

git clone https://github.com/laravel/homestead.git Homestead

然后

cd ./Homestead  

并从新的“Homestead”文件夹中运行此命令

bash init.sh

然后运行命令vagrant up 和vagrant provision 到应该在./Homestead 中创建的Vagrantfile

这是vagrant provision 命令在我的系统上的输出:

    vagrant provision
==> default: Running provisioner: file...
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-17xwlzk.sh
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-rncs6l.sh
==> default: nginx stop/waiting
==> default: nginx start/running, process 1751
==> default: php5-fpm stop/waiting
==> default: php5-fpm start/running, process 1766
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-e9qxwn.sh
==> default: Warning: Using a password on the command line interface can be insecure.
==> default: Warning: Using a password on the command line interface can be insecure.
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-14rlz2c.sh
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-16ethaq.sh
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: php5-fpm stop/waiting
==> default: php5-fpm start/running, process 1861
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: You are already using composer version 92faf1c7a83a73794fb914a990be435e1df373ca.
==> default: Running provisioner: shell...
    default: Running: /var/folders/q6/pgygb1ln4rg7_nvv0p8n1v300000gn/T/vagrant-shell20150714-94163-btuuhg.sh

【讨论】:

    【解决方案5】:

    在 ubuntu 上安装 net-tools 为我解决了这个问题

    $ sudo install net-tools
    $ vagrant destroy
    $ vagrant up
    

    【讨论】:

    • 为什么投反对票?如果它对您不起作用,我认为不需要投票吗?它对其他人和我自己都有效。
    【解决方案6】:

    我确实遇到了这个问题,结果发现由于加载 TLS 证书时出现错误,nginx 无法启动。 vagrant up 命令不报告 nginx 启动失败,或者任何端口绑定失败。

    为了诊断这个问题,我做了以下事情:

    $ nmap homestead.app
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-03 16:16 NZDT
    Nmap scan report for homestead.app (192.168.10.10)
    Host is up (0.00077s latency).
    Not shown: 995 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    1025/tcp open  NFS-or-IIS
    3306/tcp open  mysql
    5432/tcp open  postgresql
    

    列表中没有端口 80。让我们仔细检查一下 80 端口。

    $ nmap homestead.app -p 80
    ...
    Host is up (0.00020s latency).
    PORT   STATE  SERVICE
    80/tcp closed http
    

    所以它肯定是关闭的。访客日志说什么? vagrant ssh 和...

        $ systemctl status nginx.service
        ...
        Active: failed (Result: exit-code) since Tue 2017-10-03 03:06:12 UTC; 1min 30s ago
        ...
     homestead systemd[1]: Starting A high performance web server and a reverse proxy server...
     homestead nginx[1250]: nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/ssl/homestead.app.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICA
     homestead nginx[1250]: nginx: configuration file /etc/nginx/nginx.conf test failed
     homestead systemd[1]: nginx.service: Control process exited, code=exited status=1
     homestead systemd[1]: Failed to start A high performance web server and a reverse proxy server.
     homestead systemd[1]: nginx.service: Unit entered failed state.
    homestead systemd[1]: nginx.service: Failed with result 'exit-code'.
    

    由于配置错误,Nginx 无法启动。 PEM_read_bio_X509_AUX 错误指向 /etc/nginx/ssl/homestead.app.crt 文件。配置中使用的那个文件在哪里?

    $ sudo vim /etc/nginx/sites-enabled/homestead.app
    

    我把相关的行注释掉了:

    @@ -1,6 +1,6 @@
     server {
         listen 80;
    -    listen 443 ssl http2;
    +#    listen 443 ssl http2;
         server_name homestead.app;
         root "/home/vagrant/Code/public";
    
    @@ -42,7 +42,7 @@ server {
             deny all;
         }
    
    -    ssl_certificate     /etc/nginx/ssl/homestead.app.crt;
    -    ssl_certificate_key /etc/nginx/ssl/homestead.app.key;
    +#    ssl_certificate     /etc/nginx/ssl/homestead.app.crt;
    +#    ssl_certificate_key /etc/nginx/ssl/homestead.app.key;
     }
    

    使用$ sudo service start nginx 启动nginx,然后从主机再次运行nmap。

    $ nmap homestead.app -p 80,443
    ...
    PORT   STATE SERVICE
    80/tcp open  http
    443/tcp closed https
    

    端口 80 已打开,现在应该可以从 http://homestead.app 访问。当然 TLS 不起作用,但您应该能够通过生成新证书来修复它。我不确定首先无法加载证书的原因。

    【讨论】:

      【解决方案7】:

      我有同样的情况,但我做了改变。

      我用这个 IP 127.0.0.1 更改了我的 /etc/hosts 文件

      【讨论】:

      • 我试图避免使用 127.0.0.1 这样我就不必将 :8000 附加到每个 URL :/
      【解决方案8】:

      在我的情况下,通过让vagrant up 安装来宾添加解决了问题:

      ~/Homestead (master|✔) $ vagrant up
      Bringing machine 'default' up with 'virtualbox' provider...
      ==> default: Checking if box 'laravel/homestead' is up to date...
      ==> default: Clearing any previously set forwarded ports...
      ==> default: Clearing any previously set network interfaces...
      ==> default: Preparing network interfaces based on configuration...
          default: Adapter 1: nat
          default: Adapter 2: hostonly
      [...]
      GuestAdditions versions on your host (5.0.26) and guest (5.0.20) do not match.
      [...]
      Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
      mount: /dev/loop0 is write-protected, mounting read-only
      Installing Virtualbox Guest Additions 5.0.26 - guest version is 5.0.20
      Verifying archive integrity... All good.
      Uncompressing VirtualBox 5.0.26 Guest Additions for Linux............
      VirtualBox Guest Additions installer
      Removing installed version 5.0.20 of VirtualBox Guest Additions...
      Removing existing VirtualBox DKMS kernel modules ...done.
      Removing existing VirtualBox non-DKMS kernel modules ...done.
      Copying additional installer modules ...
      Installing additional modules ...
      Removing existing VirtualBox DKMS kernel modules ...done.
      Removing existing VirtualBox non-DKMS kernel modules ...done.
      Building the VirtualBox Guest Additions kernel modules ...done.
      Doing non-kernel setup of the Guest Additions ...done.
      You should restart your guest to make sure the new modules are actually used
      

      在这一点之后,我得到了一个带有预期 IP 地址的新接口:

      enp0s8    Link encap:Ethernet  HWaddr 08:00:27:e8:04:04
                inet addr:192.168.8.10  Bcast:192.168.8.255  Mask:255.255.255.0
                inet6 addr: fe80::a00:27ff:fee8:404/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000
                RX bytes:0 (0.0 B)  TX bytes:996 (996.0 B)
      

      【讨论】:

        【解决方案9】:

        我的 Windows 机器上出现了这个问题,结果发现我不小心颠倒了文件夹部分“map”和“to”。当我发现文件夹不在 vagrant ssh 会话中的 ~/code/ 下时,很明显它工作不正常,但仔细检查路径并没有产生任何结果。

        这是在 Windows 机器上映射文件夹部分的正确方法:

        folders:
            - map: D:/Development/PHP/projects/
              to: /home/vagrant/code
        

        【讨论】:

          【解决方案10】:

          唯一的原因是需要将主机名和IP放在主机文件中

          C:\Windows\System32\drivers\etc

          • 以管理员身份打开记事本
          • 点击打开文件并选择“主机”文件
          • 输入您的域名(例如 192.168.10.10 homestead.app)
          • 保存(确保您以管理员身份保存)

          完成!

          【讨论】:

            【解决方案11】:

            使用这个 Vagrant 插件

            vagrant plugin install vagrant-hostmanager
            

            然后在你的 homestead 文件夹中运行它以再次配置

            vagrant reload --provision
            

            那你就不用每次添加新项目都更新宿主文件了!

            【讨论】:

              猜你喜欢
              • 2016-03-30
              • 1970-01-01
              • 2017-04-24
              • 1970-01-01
              • 2015-10-08
              • 1970-01-01
              • 2016-04-17
              • 2019-06-15
              • 2015-12-09
              相关资源
              最近更新 更多