![](/img/trans.png)
[英]Laravel Homestead PHP: Running projects on computer's IP Address
[英]Laravel homestead IP address not working
我正在為我的 VM 使用 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 地址顯示出來,但我的瀏覽器仍然無法連接到服務器。 我認為這可能與優勝美地的 DNS 問題有關。
幾周前我遇到了同樣的問題。
首先:確保您的文件夾路徑正確,如果是,請仔細檢查
Next: 運行 homestead destroy 和 homestead up 來重新初始化虛擬機
如果這一切都不起作用:檢查您家里是否有任何設備也可能在 192.168.10.10 上。
如果這一切都不起作用,那么您的問題可能更難解決,我建議為它創建一個 github 問題。
嘿,我遇到了完全相同的問題。 我最終通過安裝已棄用的 net-tools 包使其工作: sudo apt-get update
和sudo apt-get install gnome-nettool
此后, homestead destroy
, homestead up
這使我可以使用我在主機文件中指定的“域”從本地計算機的瀏覽器訪問我的虛擬機站點 - 在您的情況下是 beta.dev 和 deploy.dev -無需參考本地主機或端口 8000。祝你好運,希望如此有幫助。
這是我為我的 Windows 10 機器所做的解決方案:
確保將持久路由添加到 vagrant 框在管理員命令提示符下輸入route -p add 192.168.10.0 mask 255.255.255.0 192.168.10.1
並確保您能夠ping 192.168.10.10
還要檢查為 virtualbox 僅主機適配器配置的 IP 地址是 192.168.10.1,掩碼為 255.255.255.0
在 ubuntu 上安裝 net-tools 為我解決了這個問題
$ sudo install net-tools
$ vagrant destroy
$ vagrant up
我遇到了這個問題,結果是 nginx 由於加載 TLS 證書時出錯而無法啟動。 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
並從主機再次運行nmap
。
$ nmap homestead.app -p 80,443
...
PORT STATE SERVICE
80/tcp open http
443/tcp closed https
端口 80 已打開,現在應該可以從http://homestead.app訪問。 當然 TLS 將無法工作,但您應該能夠通過生成新證書來修復它。 我不確定證書無法首先加載的原因。
我有同樣的情況,但我做了改變。
我用這個 IP 127.0.0.1
更改了我的 /etc/hosts 文件
昨天我在 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
到該 Vagrantfile,它應該已經在./Homestead
創建
以下是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
在我的情況下,問題是通過讓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)
我在我的 Windows 機器上出現了這個問題,結果我不小心顛倒了文件夾部分“map”和“to”。 當我發現該文件夾不在 vagrant ssh 會話中的 ~/code/ 下時,很明顯它無法正常工作,但仔細檢查路徑並沒有產生任何結果。
以下是在 Windows 計算機上映射文件夾部分的正確方法:
folders:
- map: D:/Development/PHP/projects/
to: /home/vagrant/code
唯一的原因是需要將主機名和 IP 放在主機文件中
C:\\Windows\\System32\\drivers\\etc
完畢!
使用這個 Vagrant 插件
vagrant plugin install vagrant-hostmanager
然后在您的 homestead 文件夾中運行它以再次配置
vagrant reload --provision
這樣就不用每次添加新項目都更新host文件了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.