Laravel on Ubuntu 14.10 with Vagrant

时间:2015-01-25 14:54:31

标签: ubuntu laravel laravel-4 vagrant vagrantfile

我正在尝试在我的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,但是我得到了同样的错误。

我做错了什么?

2 个答案:

答案 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默认主页。