我正在尝试在我的Ubuntu系统上开始一个Laravel项目。我的所有项目都像往常一样在~/Documents/Projects/
文件夹中。我总是单独为这些项目使用Vagrant,因此每个项目都有一个虚拟环境。
我试着和Laravel一样。我通过Composer安装了Laravel安装程序,并使用命令laravel new myproject
创建了一个新项目。然后我进入文件夹并使用vagrant init hashicorp/precise32 | vagrant up
初始化了一个新的Vagrant环境。虚拟机像往常一样启动,但当我尝试在localhost:2222
检查安装是否正常时,我收到以下错误:
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
Protocol mismatch.
我也尝试在myproject/public
文件夹中启用vagrant,但是我得到了同样的错误。
我做错了什么?
答案 0 :(得分:2)
在默认的Vagrant配置中,端口2222转发SSH,端口8080转发HTTP。要通过主机上的Web浏览器访问您的网站,请访问http://localhost:8080/。
如果您尝试使用Web浏览器访问端口2222,则SSH不知道如何响应HTTP请求,这就是您看到错误的原因。
如果这不起作用,请检查Vagrantfile
这样的行:
config.vm.network "forwarded_port", guest: 80, host: 8080
您正在寻找guest: 80
行。 host:
之后的整数是您在主机上用来访问来宾计算机上的HTTP的端口。
答案 1 :(得分:1)
在评论中,你说:
我刚刚注意到,由于某种原因,流浪者将我的所有端口转发到:2222,包括ssh。
虚拟机上要提供的每个端口都应映射到主机上的唯一端口。例如,以下映射是常见的
VM Port Host Port
--------------------
20 -> 2222
80 -> 8080
3306 -> 3306
如果您看到类似的内容:
VM Port Host Port
--------------------
20 -> 2222
80 -> 2222
3306 -> 2222
Vagrantfile中的配置存在问题。检查那里的映射以确保每个VM端口都映射到唯一的主机端口。运行vagrant reload
以重新启动VM并重新映射端口。
接下来,通过SSH登录虚拟机并验证Web服务器是否正在运行。做
sudo service apache2 status
或
sudo service nginx status
或尝试直接连接到端口80以查看是否有任何响应:
telnet localhost 80
如果没有响应,则表示您的Web服务器未运行。启动虚拟机时,请更新基本映像或配置脚本以启动Web服务器。
如果服务在端口80上响应,请返回主机并再次尝试通过正确映射的端口访问网站。例如,如果VM上的端口80现在映射到主机上的端口8080,请打开浏览器并浏览到
http://localhost:8080
您现在应该看到Laravel默认主页。