开发工具及软件请在右侧点击下载哦~
系统要求
Windows 7 及以上系统
主要步骤
- 设置 SublimeText
- 安装 Git
- 安装 VirtualBox
- 安装 Vagrant
- Homestead介绍
- 导入Homestead Box(虚拟机盒子)
- 下载 Homestead 管理脚本及配置
- 启动 Homestead 虚拟机
- 创建第一个Laravel应用
- 创建第二个Laravel应用
- 附录
1. 设置 SublimeText
在系统的环境变量中添加SublimeText路径
;C:Program FilesSublime Text Build 3176 x64
2. 安装 Git
直接双击安装并检测是否成功安装:
> git --version
3. 安装 VirtualBox
VirtualBox 号称是一款免费的虚拟机软件,支持主流操作系统,如:Mac, Windows, Linux 等,当然也可使用 vmware 或 Parallels 等。
直接双击安装即可。
4. 安装 Vagrant
Vagrant 是用来管理虚拟机的工具,例如通过指令来控制虚拟机的启动,在团队开发项目中,您只需要同步 Vagrantfile 文件,就可以保证团队每位成员的机器上拥有一致的开发环境。
5. Homestead介绍
Homestead是一个官方预封装的Vagrant虚拟机盒子,Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及您在使用 Laravel 开发时需要用到的各种软件。
Homestead 里面包含:
- Homestead 管理脚本
- Homestead Box 虚拟机盒子
6. 导入Homestead Box(虚拟机盒子)
在虚拟机盒子目录(非中文目录)运行以下命令导入 Box:
> vagrant box add metadata.json
注:导入成功后即可删除。
7. 下载 Homestead 管理脚本及配置
> cd ~
> git clone https://github.com/laravel/homestead.git Homestead
下载完成之后我们在 Homestead
目录,检出需要的 Homestead 版本:
> cd Homestead && git checkout v7.8.0
初始化 Homestead
> bash init.sh
初始化完成之后,会在 Homestead
目录下生成以下三个文件:
- Homestead.yaml – 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
- after.sh – 每一次 Homestead 盒子重置后(provision),会调用的 shell 脚本文件;
- aliases – 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的
~/.bash_aliases
文件中,aliases
里可以放一些快捷命令的定义。
配置 Homestead.yaml 文件
可通过Sublime Text直接打开 Homestead.yaml
文件
> subl ~/Homestead/Homestead.yaml
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
folders:
- map: ~/code
to: /home/vagrant/code
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public
databases:
- homestead
variables:
- key: APP_ENV
value: local
authorize:主机上的公钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/authorized_keys文件中, 用于 SSH免密登陆
keys:主机的SSH私钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/ 目录中, 使虚拟机能共享主机上的密钥文件, 具备等同于主机的身份认证( 主机和虚拟机用同一个ssh私钥文件认证github)
创建密钥对,请将 lyc@studyfox.cn
替换为您自己的邮箱
> ssh-keygen -t rsa -C "lyc@studyfox.cn"
主机里直接访问虚拟机站点,必须绑定 hosts
来实现,可直接在以下路径打开或使用以下命令在Sublime Text打开
> subl C:/Windows/System32/Drivers/etc/hosts
在 hosts
文件中加入以下一行
192.168.10.10 homestead.test
8. 启动 Homestead 虚拟机
Vagrant 常用命令行:
命令行 | 说明 |
---|---|
vagrant init | 初始化 vagrant |
vagrant up | 启动 vagrant |
vagrant halt | 关闭 vagrant |
vagrant ssh | 通过 SSH 登录 vagrant(需要先启动 vagrant) |
vagrant provision | 重新应用更改 vagrant 配置 |
vagrant destroy | 删除 vagrant |
启动虚拟机
> cd ~/Homestead && vagrant up
启动成功后,在 ~/Homestead
目录中,登录 Homestead 虚拟机
> vagrant ssh
登录成功后如需退出虚拟机
$ exit
关闭虚拟机
> vagrant halt
9. 创建第一个Laravel应用
修改 composer 的全局配置文件
> composer config -g repo.packagist composer https://packagist.phpcomposer.com
开启 Homestead 虚拟机并登录
> cd ~/Homestead && vagrant up
> vagrant ssh
启动成功后新建一个 Laravel 项目
$ mkdir code
$ cd code
$ composer create-project laravel/laravel Laravel --prefer-dist "5.7.*"
10. 创建第二个Laravel应用
在虚拟机code目录中从git克隆一个应用
$ cd ~/code
$ git clone https://github.com/lycstudyfox/lesson.git Lesson
Homestead.yaml文件中添加如下内容
sites:
- map: lesson.test
to: /home/vagrant/code/Lesson/public
databases:
- lesson
hosts中添加
192.168.10.10 lesson.test
重新加载 vagrant 配置并重启 Homestead 虚拟机
> cd ~/Homestead && vagrant provision && vagrant reload
登录 Homestead 虚拟机
> vagrant ssh
下载项目依赖,存入vendor目录中
$ composer install
拷贝 .env.example
为 .env
$ cp -r .env.example .env
生成key
$ php artisan key:generate
11. 附录
连接虚拟机的数据库信息
ip: 127.0.0.1
端口: 33060
用户名: homestead
密码: secret
ssh登录虚拟机的配置信息
ip: 192.168.10.10
用户名: vagrant
密码: vagrant
解决 Laravel 本地项目运行缓慢的问题(由VirtualBox 的 IO 引起,需安装NFS Plugin
插件)
在主机中安装
> vagrant plugin install vagrant-winnfsd
安装成功后修改配置文件homestead/scripts/homestead.rb
# Register All Of The Configured Shared Folders
if settings.include? 'folders'
settings["folders"].each do |folder|
if File.exists? File.expand_path(folder["map"])
mount_opts = []
if (folder["type"] == "nfs")
mount_opts = folder["mount_options"] ? folder["mount_options"] : ['actimeo=1', 'nolock']
elsif (folder["type"] == "smb")
mount_opts = folder["mount_options"] ? folder["mount_options"] : ['vers=3.02', 'mfsymlinks']
end
# For b/w compatibility keep separate 'mount_opts', but merge with options
options = (folder["options"] || {}).merge({ mount_options: mount_opts })
# Double-splat (**) operator only works with symbol keys, so convert
options.keys.each{|k| options[k.to_sym] = options.delete(k) }
config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, **options
# Bindfs support to fix shared folder (NFS) permission issue on Mac
if Vagrant.has_plugin?("vagrant-bindfs")
config.bindfs.bind_folder folder["to"], folder["to"]
end
else
config.vm.provision "shell" do |s|
s.inline = ">&2 echo "Unable to mount one of your folders. Please check your folders in Homestead.yaml""
end
end
end
end
将以上代码替换为下方代码
if settings.include? 'folders'
settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }
settings["folders"].each do |folder|
config.vm.synced_folder folder["map"], folder["to"],
id: folder["map"],
:nfs => true,
:mount_options => ['nolock,vers=3,udp,noatime']
end
end
修改文件夹共享方式Homestead.yaml
folders:
- map: ~/code
to: /home/vagrant/code
type: nfs
重新加载 vagrant 配置并重启 Homestead 虚拟机
> cd ~/Homestead && vagrant provision && vagrant reload