如何在Windows10上使用Homestead在本地运行第一个Laravel网站

我发现尝试在Windows 10上使用Laravel和Homestead启动并运行时,比预期的要复杂得多。因此,我决定为自己甚至您自己撰写此博客。

如果您使用的是Mac,则可能会有更好的时间。 如果使用Mac,我会看Laravel Valet。

我一直在寻找一个好的技术堆栈来开发我的下一个应用程序。 Laravel Spark直接提供了很多有用的东西。 我决定安装Laravel并尝试使用基本框架。

要在服务器上运行Laravel,它必须满足以下要求

  • PHP> = 7.1.3
  • OpenSSL PHP扩展
  • PDO PHP扩展
  • Mbstring PHP扩展
  • Tokenizer PHP扩展
  • XML PHP扩展
  • Ctype PHP扩展
  • JSON PHP扩展

正确设置本地开发服务器以满足这些要求可能非常棘手。 解决方案是使用Laravel的Homestead。 Homestead是虚拟机的快照,该虚拟机已预先配置了运行Laravel所需的所有软件。

请按照以下说明进行操作:
https://laravel.com/docs/5.6/homestead

运行虚拟机基本上就像在您自己的计算机上运行另一台计算机一样。 您可以启动虚拟机,暂停它,销毁它,然后通过一个窗口查看它。 人们使用虚拟机来匹配生产服务器上的设置,以进行更准确的测试。 其他用途是运行Windows的旧副本以模拟IE7或从Mac运行Windows的副本。

在这种情况下,我们将从Windows运行Linux的副本。 我们将使用SSH在Homestead框上运行命令,因为它没有可查看或单击的桌面。

宅基是一个无业游民的形象。 Vagrant是一种工具,可让您使用自己选择的软件配置VM。 Homestead配置有Linux,Nginx,MySQL和PHP 7。

要运行Vagrant VM映像,我们需要在PC上安装虚拟化软件。 安装说明中提到了一些选项。 我选择了VirtualBox。 您还需要安装Vagrant。

GOTCHA: VirtualBox无法正常运行。 我无法运行64位VM。 此问题是因为Windows 10 Pro拥有自己的名为HyperV的虚拟化软件。 需要禁用此功能,然后我们才能正确运行VirtualBox。 这样做的方法不是我错误地相信的在BIOS中,而是通过在控制面板中打开和关闭功能。 所以我们要做:

 控制面板->打开/关闭Windows功能->关闭Hyper-V 

但是请注意,是否还要运行docker。 你不能那么容易。 看这里:

在VirtualBox和Windows 10中使用Docker

去年,我建造了一台游戏PC,配备了出色的视频卡,出色的固态驱动器和32 gigs RAM。 由于这台PC是…

medium.com

首先在您要保留Laravel网站的目录中运行以下命令:

  laravel新的testsite.test 

要在浏览器中访问您的站点,您需要在主机文件中找到一个条目,该文件位于此处。

  C:\ Windows \ System32 \ Drivers \ etc \ hosts 

主机文件使您可以将域名与IP地址相关联。 您的浏览器将首先服从hosts文件中的内容,因此您可以通过将其所有IP地址设置为垃圾邮件来执行诸如在计算机上屏蔽Facebook之类的奇怪操作。 还要使testsite.test转到新的Laravel网站。 将此放置在主机文件中的任何位置。

  192.168.10.10 testsite.test 

如果不习惯编辑主机文件,这将非常棘手。 您需要管理员权限才能进行编辑。 您需要以管理员身份运行编辑器。 您可以通过右键单击编辑器启动图标并选择以管理员身份运行来实现。 我通常使用Notepad ++打开它,当我尝试保存时会提示我以管理员身份重新打开。 如果您正在运行任何防病毒软件,通常会警告您主机文件已被篡改。

如果您按照说明设置了Homestead文件夹,则需要在homestead.yaml中添加条目

您还将需要在homestead.yaml中输入一个内容来告诉Nginx您的网站。

GOTCHA:您可以将多个站点添加到yaml文件中。 但是请注意,文件对缩进和行距敏感。 如果您没有在站点之间放置多余的行距,那将是行不通的。

 网站: 
-地图:homestead.test
到:/home/vagrant/code/homestead.test

-地图:laravel.test
到:/home/vagrant/code/laravel.test/public

-地图:testsite.test
到:/home/vagrant/code/testsite.test/public

为了让Nginx接受更改,您需要运行以下命令:

 无业游民的重载 

从您的宅基地目录。 您还需要经常从homestead目录中运行这些命令,这些命令可能会有些烦人。

 无所事事 
无业游民的破坏力

关于如何进行设置,有一些建议,以便您可以在任何地方运行命令,但是我发现以下方法最适合我。

在homestead目录中创建三个.bat文件,分别名为up,reload和destroy或最适合您的文件,每个文件都包含以下命令之一。 然后在桌面上为其添加快捷方式。 要运行它们,只需双击桌面上的快捷方式。

您已经为Nginx配置了站点和主机文件设置。 您在您喜欢的浏览器中键入testsite.test,但看到这样的错误。

 警告:要求(/home/vagrant/code/testsite.test/public/../vendor/autoload.php):无法打开流:/home/vagrant/code/testsite.test/public中没有此类文件或目录/index.php,第24行 

您需要使用PHP的软件包管理器Composer安装一堆PHP软件包。 您运行以下命令

 作曲家安装 

但是该命令无法引发有关您的PHP版本的许多错误。 您需要做的是直接在虚拟机中运行该命令,因为它已安装PHP 7,而您自己的PC可能没有。

这是我们通过SSH连接到VM的地方。 如果按照说明设置了SSH密钥,则应该可以运行此命令。

 流浪的SSH 

现在,您的命令窗口将包含SSH,并且将对Homestead VM运行更多命令。 您需要通过CD进入正确的目录来进入站点的目录,然后重新运行composer安装。

  cd代码/testsite.test 
作曲家安装

安装后,刷新浏览器,并在页面中心得到以下格式的正确消息。

哎呀,看起来出事了。

若要查看此消息的真正含义,我们需要将站点置于调试模式。 编辑config / app.php的第42行以将调试模式设置为true。

  testsite.test \ config \ app.php 
'调试'=> env('APP_DEBUG',true),

刷新我们看到的浏览器。

  RuntimeException 
没有指定应用程序加密密钥。

我们需要运行此命令以自动生成加密密钥,然后在SSH进入虚拟机后再次运行该密钥。

  PHP的工匠键:生成 

这将引发错误,没有.env文件。 您需要将.env.exmaple重命名为.env并再次运行命令。

刷新浏览器时,您将最终看到Laravel的默认保存页面。 呜呼。

但是此站点尚无数据库。

SSH进入虚拟机。 您可以运行以下命令:

  mysql -uroot -p; 
密码:秘密
创建数据库测试站点;
显示数据库;
使用测试现场;
显示表格;

GOTCHA:请不要忘记每个命令末尾的分号,否则它将无提示地失败。

使用数据库的一种好方法是将数据库的构造与版本控制系统联系在一起。 如果需要,您希望有一种方法可以将数据库还原到较早的架构。 Laravel使用迁移来做到这一点,PHP代码使用添加或删除模式更新的方法逐步构建数据库模式。

要运行迁移,我们需要在站点的.env文件中设置数据库名称。 因此,在这种情况下,数据库名称为“ testsite”。

然后,SSH进入虚拟机,并从站点根目录运行以下命令。

  PHP的工匠迁移 

如果一切正常,您现在应该有三个数据库表。

  • 迁移
  • password_resets
  • 使用者

您可能不希望仅使用命令行来检查数据库。 我选择了MySQL Workbench,并使用以下详细信息来连接到在VM内运行的MySQL实例。

 连接方式:标准(TCP / IP) 
主机名:127.0.0.1
端口:33060
用户名:homestead
密码:秘密

就是这样,您具有数据库的第一个站点设置。 您可以在浏览器中看到您的站点,并使用MySQL Workbench检查数据库。

现在开始有趣的部分,编写代码!

我是一位在 www.designandcode.com 工作的Web开发人员,请 通过Twitter @graemebenzie 跟随我