Windows 10 系统下Laravel框架Homestead开发环境安装及配置详解

◇◆丶佛笑我妖孽 提交于 2020-03-09 10:58:48

转载:https://blog.csdn.net/xiaomayi721025/article/details/84727405

写在开头
关于Laravel框架的Homestead开发环境安装及部署,网上有很多相关的技术文章,其中Eagle Luo有一篇文章写得非常好,我的第一个homestead环境基本上就是在他这篇文章的指导下完成安装的。原文标题是:“”Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)”,原文地址如下:https://blog.sbot.io/articles/1 。
尽管Eagle Luo的这篇文章已经写得非常详细了,但我在安装过程中依然遇到了不少的问题,最主要的地方有两个:一个就是homestead默认安装位置(默认为C:\Users\XXX)的问题,另一个是当你的windows登录用户名使用的是中文时(如C:\Users\小蚂蚁)homestead虚拟机安装报错的问题。所以,我在这里把自己的安装过程做一个梳理,也给初次安装Laravel Homestead的小伙伴提供一个参考和借鉴。

Laravel Homestead简介
Laravel Homestead是Laravel官方为开发者提供的一套完善的重量级本地开发环境,它是一个打包好各种 Laravel 开发所需软件和工具的 Vagrant 盒子,该盒子为我们提供了一个优秀的开发环境,有了它,我们不再需要在本地环境安装 PHP、Composer、Nginx、MySQL、Memcached、Redis、Node 等其它工具软件,我们也完全不用再担心误操作搞乱操作系统 —— 因为 Vagrant 盒子是一次性的,如果出现错误,可以在数分钟内销毁并重新创建该 Vagrant 盒子!

Laravel Homestead的预装软件
Laravel Homestead 可以运行在 Windows、Mac 以及 Linux 等主流操作系统上,预装的软件和工具列表如下:
Ubuntu 18.04
Git
PHP 7.2
PHP 7.1
PHP 7.0
PHP 5.6
Nginx
Apache(可选)
MySQL
MariaDB(可选)
SQLite3
PostgresSQL
Composer
Node(With Yarn, Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Mailhog
Neo4j(可选)
MongoDB(可选)
Elasticsearch(可选)
ngrok
wp-cli
Zend Z-Ray
Go
Minio

安装Laravel Homestead 需要的软件及工具
1、Git
2、VirtualBox
3、Vagrant
4、Homestead Box (Lavavel官方提供的Vagrant盒子)

具体安装配置步骤及测试方法详解
1、安装Git
Windows版本的Git官网地址:https://gitforwindows.org/

 

 


Git 的安装很简单,按默认选项进行就可以了。
安装完毕之后,我们在桌面或文件夹的空白位置单击鼠标右键,选择“Git Bash Here”,就可以打开Git的命令窗口。

 

 

初次使用Git的小伙伴可以在git窗口右击,选择“options”,然后对Git窗口的text等选项进行设置。

2、安装VirtualBox
VirtualBox 是一款开源虚拟机软件,使用者可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。Laravel Homestead就是使用VirtualBox创建的一个虚拟机。

VirtualBox的官网地址:https://www.virtualbox.org/

 

 

 

单击Download按钮进入下载页面,选择windows版本进行下载,安装。

 

 


3、安装Vagrant
vagrant是一款虚拟机管理工具,使用它可以快速搭建可复用、可移植的开发环境。 Laravel Homestead就是一个配置好了的虚拟机开发环境,Laravel官方将它打包成了一个Vagrant盒子,方便使用者将它移植到自己的电脑上。

Vagrant的官网地址:https://www.vagrantup.com/

 

 


单击Download按钮进入下载页面,选择windows版本进行下载,安装。

 

 


4、安装Laravel Homestead
安装好上面3个软件之后,我们就可以开始安装Homestead了。安装方式有两种:

第一种是在线安装方式:
如果你觉得你的网速足够快,可以在线下载Homestead的box(服务器在国外),那么可以打开Git Bash,输入

vagrant box add laravel/homestead

系统将会自动为你下载及安装Homestead盒子。

第二种是离线安装方式:(强烈推荐)
(1)、下载Laravel Homestead 的box盒子
使用离线安装的方式,我们首先要去下载一个最新版本的Laravel Homestead 的盒子,其目前最新版本为6.4.0。

下载地址:https://vagrantcloud.com/laravel/boxes/homestead/versions/6.4.0/providers/virtualbox.box
该盒子的大小为2.18GB,建议大家使用迅雷等下载工具进行下载。

注意:如果你需要下载不同版本(或最新版本),请将以上地址中versions/后的数字版本号替换成相应的版本号。

下载完成后,我们将下载的文件命名为Homestead-6.4.0.box。并将该文件放到一个指定目录存放,我把它放在F:\virtualBox VMS\homesteadbox文件夹中。

(2)、设置VAGRANT_HOME环境变量改变默认位置
Vagrant 执行add box命令的时候会将Laravel Homestead盒子相关的文件默认保存在 C:\Users\xxx.vagrant.d文件夹中(其中,会有一个大小约为2.2GB左右的虚拟磁盘文件),

 

 

如果你的C盘空间太小,或者你不想将这些文件放在默认的用户文件夹中,我们可以通过设置VAGRANT_HOME环境变量改变默认位置,设置方法可以在git命令行窗口执行下面2条命令:

setx VAGRANT_HOME “F:\HomeStead\.vagrant.d”
setx VAGRANT_HOME “F:\HomeStead\.vagrant.d” /M (系统变量)

或者直接在windwos环境变量中添加VAGRANT_HOME用户变量和系统变量

 

 


(3)、安装Laravel Homestead
设置好VAGRANT_HOME环境变量后,我们就可以来安装Laravel Homestead 了。

在Windows中,打开你存放Homestead-6.4.0.box的文件夹(我的是F:\virtualBox VMS\homesteadbox),在该文件夹窗口右击,选择“Git Bash Here”,进入Git的命令行窗口

 

 


在这里执行命令

vagrant box add laravel/homestead Homestead-6.4.0.box
1
输入命令后,会开始导入并安装我们下载的Homestead盒子。

 

稍微等待一会儿之后,Laravel/Homestead盒子就添加完成了。

 

此时,在我们指定的目录(F:\HomeStead)中就多出了一个名为.vagrant.d的文件夹,里面有Laravel/Homestead盒子的一些相关文件。

在Git中使用vagrant box list命令可以看到,Vagrant盒子列表中就有了一个名为laravel/homestead的box盒子。


但是,列表中显示的laravel/homestead的版本号为0,我们要把它改成正确的版本号(6.4.0),可以打开F:\HomeStead文件夹,找到以下路径:

F:\HomeStead.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead

将文件夹中名为0的文件夹改名为我们下载的Homestead的版本号,即6.4.0。

然后在该文件夹下新建一个叫metadata_url的空白文件 (注意不要有任何文件名后缀,如果你的系统设置了自动隐藏后缀名,请将隐藏去掉,确认文件无任何后缀):

 

文件的内容里,添加以下链接:

https://app.vagrantup.com/laravel/boxes/homestead
1
保存好之后,我们再次使用vagrant box list 命令查看盒子列表,就会发现,laravel/homestead的版本号已经正确显示了。


至此,Laravel Homestead盒子安装完毕。

5、配置Laravel Homestead
首先,我们去laravel官方的Git上下载一个Homestead的配置文件夹。
在Git Bash里输入

git clone https://github.com/laravel/homestead.git ~/homestead
1
该命令会将Github上Homestead项目配置克隆至本地~/homestead文件夹中(也就是c:\users\xxx目录,xxx为你的用户名)。打开下载的homestead配置文件夹,会发现里面有很多homestead的项目配置文件

 

将里面所有的文件复制到我们之前指定的目录F:\HomeStead之中

 

此时,该文件夹中既包含了vagrant盒子的文件夹.vagrant.d,也包含了Homestead的配置文件,也就是和laravel/homestead相关的文件我们都放在这个文件夹中了,以后我们启动Homestead虚拟机时就可以直接在F:\HomeStead目录下进行,从而解决了windows登录用户名为中文时启动虚拟机报错的问题。

接下来,我们就可以开始创建Homestead配置文件了:

在F:\HomeStead目录中启动Git Bash,执行命令:

bash init.sh
1


然后在F:\HomeStead文件夹中,我们可以看到多出了一个名为Homestead.yaml的文件。使用文本编辑器打开它,可以看到内容如下:

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

authorize: ~/.ssh/id_rsa.pub

keys:
- ~/.ssh/id_rsa

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

sites:
- map: homestead.test
to: /home/vagrant/code/public

databases:
- homestead

# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp

# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar

# zray:
# If you've already freely registered Z-Ray, you can place the token here.
# - email: foo@bar.com
# token: foo
# Don't forget to ensure that you have 'zray: "true"' for your site.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
这些配置项的主要含义是:

ip: "192.168.10.10"
1
指的是虚拟机的IP地址,初次使用homestead的小伙伴可以不用修改这个地址。

memory: 2048
1
指的是给虚拟机的配置的内存大小,默认值是2048MB

cpus: 1
1
指的是给虚拟机的配置CPU数量,默认是一个

provider: virtualbox
1
表示使用哪个 Vagrant 提供者:virtualbox或者vmware_workstation,你可以将其设置为自己喜欢的提供者,默认是virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
- ~/.ssh/id_rsa
1
2
3
4
authorize后面的文件是用来ssh进入虚拟机的公钥,而keys后面的文件是我们的私钥。

folders:
- map: ~/code
to: /home/vagrant/code
1
2
3
folders用来设置本机和虚拟机的同步文件夹,map后指定的文件夹(即~/Code)将被映射到虚拟机系统中to后指定的路径,即/home/vagrant/Code。
我们把本机Code文件夹同步至虚拟机中,这样一来我们在可以在虚拟机系统中访问到我们的项目文件,并且在~/Code中所进行的修改会实时同步在虚拟机系统对应的文件中。

sites:
- map: homestead.test
to: /home/vagrant/code/public
1
2
3
sites用来设置站点域名地址的映射,这里是指将homestead.test域名映射到/home/vagrant/code/public文件夹。这样,我们在浏览器地址栏中输入http://homestead.test就可以访问 /home/vagrant/code项目的首页了。

databases:
- homestead
1
2
这里指虚拟机的数据库名称。

注:虚拟机环境下默认的MySQL服务器管理员用户名为homestead,密码是secret。推荐使用phpmyadmin或HeidiSQL来进行数据库管理

假设我们要创建一个blog项目,项目代码放在F:\code\blog中,我们就可以进行如下的配置:

 

如果你要进行多站点的配置,可以参照如下方法:


要想让你设置的域名生效,还要在hosts文件中添加域名指向:

192.168.10.10 homestead.test
192.168.10.10 meetup.test
1
2
*hosts文件的路径:C:\Windows\System32\drivers\etc*

要注意的是,host文件在该路径下修改后不能直接保存,我们可以先把它移动到桌面,修改完毕后再移动回原地。修改后的host文件内容:

 

6、建立用于ssh的公钥和私钥
今后我们要通过ssh连接homestead虚拟机的话,需要有连接虚拟机的公钥和私钥,下面我们就来建立公钥和私钥。

首先,我们在F:\HomeStead文件夹中启动Git Bash,执行命令mkdir .ssh,创建.ssh文件夹;

mkdir .ssh
1
接着,执行命令cd .ssh,进入.ssh文件夹中;

cd .ssh
1
接下来,我们运行生成密钥的命令:

ssh-keygen -t rsa
1
系统提示输入保存秘钥的文件路径,输入路径 /f/HomeStead/.ssh/id_rsa ,按回车。接下来的两个提示直接按回车,最后显示秘钥创建成功,就OK了。

 

打开F:\HomeStead下的.ssh文件夹,你会发现多了两个文件,这就是我们刚才创建的公钥和私钥

 

创建好公钥和私钥后,别忘了在Homestead.yaml文件中把它们的路径设置好。


接下来,我们可以尝试启动虚拟机了!

7、启动Homestead虚拟机
启动Homestead虚拟机,系统会在virtualbox中创建一个虚拟机,虚拟机保存的默认位置是C:\Users\xxx\VirtualBox VMs,可以打开virtualbox,单击“管理”->"全局设定"菜单查看

 

我们把这个虚拟机的保存位置也修改一下,我把它设置为F:\virtualBox VMS (请自行创建好改文件夹)

 

设置好后,我们来尝试启动虚拟机。(请保持virtualbox为启动状态,据说是windows10的bug)

在F:\HomeStead文件夹中以管理员身份启动Git Bash,打开Git窗口,执行命令vagrant up 来启动虚拟机。

vagrant up
1
系统开始启动虚拟机

 

如果一切正常,Homestead虚拟机将成功启动。

 

此时,virtualbox中也将出现一个新的虚拟机homestead-7

 

虚拟机文件也存储在我们指定的位置F:\virtualBox VMS,而不是存储在默认的C:\Users\xxx\VirtualBox VMs目录。

 

输入域名http://homestead.test/ ,也能访问,只是由于我们暂时没有创建项目,系统显示“No input file specified.”

 

注意:启动homestead虚拟机后,php开发环境就已经在运行了,本地主机无需去启动wamp、xampp等php开发环境。我曾经犯过这样低级的错误,以为本地主机还要启动PHP开发环境

8、创建一个laravel项目
在windows中进入代码文件夹F:\code,在F:\code文件夹中启动Git Bash,新打开一个Git窗口,执行下面的命令,在code文件夹中创建一个名为blog的laravel项目。(laravel的安装需要有composer的支持,如果你的电脑上没有安装composer,请先行下载安装)

composer create-project --prefer-dist laravel/laravel blog
1


出现下图所示后项目创建成功。

 

项目创建好后,用vagrant reload命令重启一下虚拟机。

vagrant reload
1
此时,打开域名http://homestead.test/ ,就可以访问我们新创建的blog项目的首页了~~

 

9、查看主机和虚拟机项目同步情况
用vagrant up命令启动homestead虚拟机后,使用vagrant ssh 命令可以连接虚拟机

vagrant ssh
1


进入虚拟机后,用pwd命令查看一下当前目录位置,可以看到当前的位置是/home/vagrant ,用ll命令查看一下,会发现在当前目录中有一个code文件夹。

 

用cd code 命令进入code文件夹

cd code
1
用ll命令查看一下,可以看到里面有一个blog文件夹,这就是我们在本地主机F:\code里面创建的blog项目同步过来的。

 

10、数据库连接的问题
homestead虚拟机启动之后,我们就可以去连接虚拟机的mysql数据库了,用户名为homestead,密码是secret。我用的数据库管理工具是HeidiSQL,打开HeidiSQL之后,新建一个会话,命名为homestead,输入上面的用户名、密码,端口是33060,然后单击“打开”按钮。

 

会发现,里面已经有我们在Homestead.yaml文件里配置的两个数据库了

 

打开F:\code\blog项目中的.env文件,配置数据库选项

 

说明
Homestead 默认已经在虚拟机中为 MySQL 和 Postgres 数据库做好了配置,更方便的是,这些配置值与 Laravel 的 .env 中默认提供的配置一致。想要通过本地的 Navicat 或 Sequel Pro 连接到 Homestead 上的 MySQL 或 Postgres 数据库,可以通过新建连接来实现,主机 IP 都是 127.0.0.1,对于 MySQL 而言,端口号是 33060,对 Postgres 而言,端口号是 54320,用户名/密码是 homestead/secret。只有从本地连接 Homestead 的数据库时才能使用这些非标准的端口,在 Homestead 虚拟机中还是应该使用默认的 3306 和 5432 端口进行数据库连接配置。

至此,Homestead开发环境的安装及配置就全部完成了!

常用的几个vagrant命令
最后,列出几个常用的vagrant命令,方便小伙伴们使用时查阅:

$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ exit # 从虚拟机退出
$ vagrant init # 初始化
$ vagrant suspend # 挂起虚拟机
$ vagrant resume # 唤醒虚拟机
$ vagrant status # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机

#box管理命令
$ vagrant box list # 查看本地box列表
$ vagrant box add "box名称" # 添加box到列表
$ vagrant box remove "box名称" # 从box列表移除
————————————————
版权声明:本文为CSDN博主「云上飘过」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaomayi721025/article/details/84727405

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!