win10 Laravel开发环境搭建
步骤简略
接下来让我们按照这几个步骤来完成整个 Laravel 开发环境的安装及配置:
- 安装 VirtualBox (**虚拟机软件**)
- 安装 Vagrant (** 管理虚拟机的工具 **)
- 导入 Homestead Box 虚拟机盒子,并配置Homestead.yaml (** Homestead Box就是打包好的linux系统镜像, 集成了nginx/php/mysql/node等;; Homestead.yaml 就是镜像的配置文件 **)
- 安装 Git (** 这货不用解释吧,,程序员都用的版本管理工具 **)
- 安装 Homestead 管理脚本
(*** 使用 Ruby 和 Shell 脚本编写而成。原理是对 Vagrantfile 文件做定制。将从Homestead.yaml
读取的配置信息,在 provision 时,解析为 Vagrant 命令并进行对虚拟机的配置。Homestead 脚本的作用在于,提供了极其简单易用的接口,使我们只需要通过傻瓜化配置,即可完成复杂的任务 ***) - 配置
Homestead.yaml
文件 - 启动 Homestead 虚拟机
- 开启 NFS 挂载模式
- 下载virtualbox(**下载6.0,6.1目前不兼容vagrant,无法启动).傻瓜式默认安装.
- 下载Vagrant(2.2.6_x86_64),并安装.
- 安装git (下载链接)
- 下载 Homestead Box(国情版),并解压备用 (解压后目录lc-homestead-8.2.1-2019112300下包含两个文件:virtualbox.box、metadata.json)
进入目录,执行命令vagrant box add metadata.json 导入虚拟机/*** 解压路径行万不能为中文***/ - 载Homestead管理脚本
打开Git Bash(这货安装git自带的,开始菜单里有),运行以下命令
cd ~ git clone https://git.coding.net/summerblue/homestead.git Homestead cd ~/Homestead git checkout v7.8.0 bash init.sh
运行以上命令后,会在
~/Homestead
目录下生成以下三个文件:- Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
- after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
- aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的
~/.bash_aliases
文件中,aliases
里可以放一些快捷命令的定义。
接下来我们将会对
Homestead.yaml
文件的各项配置信息进行详细讲解。Homestead.yaml 配置文件
Homestead.yaml
文件在~/Homestead
文件夹里,在 Git-Bash 里,你可以使用以下命令使用文件夹打开当前命令行所在目录:cd ~/Homestead explorer .
可通过运行下面命令快速打开
Homestead.yaml
文件:notepad ~/Homestead/Homestead.yaml
为了行文方便,后面如果没有提示的话,
Homestead.yaml
指的是~/Homestead/Homestead.yaml
文件。Homestead.yaml
里的配置大致可以分为以下几种:- 虚拟机设置;
- SSH 秘钥登录配置;
- 共享文件夹配置;
- 站点配置;
- 数据库配置;
- 自定义变量;
接下来我们逐个讲解。
1. 虚拟机设置
Homestead 支持我们对虚拟机的 IP,内存,CPU,虚拟机的默认提供者进行配置。这里我们基本不需要做任何配置,因此可以跳过。
ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox
2. SSH 秘钥登录配置
authorize
选项是指派登录虚拟机授权连接的公钥文件,此文件填写的是主机上的公钥文件地址,虚拟机初始化时,此文件里的内容会被复制存储到虚拟机的/home/vagrant/.ssh/authorized_keys
文件中,从而实现 SSH 免密码登录。在这里我们默认填写即可。authorize: ~/.ssh/id_rsa.pub
keys
是数组选项,填写的是本机的 SSH 私钥文件地址。虚拟机初始化时,会将此处填写的所有 SSH 私钥文件复制到虚拟机的/home/vagrant/.ssh/
文件夹中,从而使虚拟机能共享主机上的 SSH 私钥文件,使虚拟机具备等同于主机的身份认证。此功能为 SSH 授权提供了便利,例如在后面章节中,我们只需要在 GitHub 上配置一个 SSH 公钥,即可实现 GitHub 对虚拟机和主机共同认证。此处我们将公钥和私钥一起同步到虚拟机中:
keys: - ~/.ssh/id_rsa - ~/.ssh/id_rsa.pub
接下来我们来生成 SSH Key,开始之前,我们先使用以下命令来检查主机上是否已经生成过 SSH Key:
ls -al ~/.ssh
如果存在
id_rsa
和id_rsa.pub
的话,请跳过以下生成 SSH 的步骤继续阅读剩下内容。否则使用以下方法来生成 SSH Key,请将
your_email@example.com
替换为你的邮箱:ssh-keygen -t rsa -C "your_email@example.com"
命令行会提示让你指定秘钥的名称,按回车键将 SSH Key 保存到默认文件名即可:
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
接下来会询问你为 SSH Key 设置密码,按回车键即可,默认为空密码:
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]
可以都选择默认,一路
Enter
键即可,大致如下:这个时候如果我们再使用:
ls -al ~/.ssh
查看的话,会出现:
SSH 秘钥的两个文件:
id_rsa
—— SSH 秘钥的 私钥 (Private Key)id_rsa.pub
—— SSH 秘钥的 公钥 (Public Key)
3. 共享文件夹配置
我们可以通过
folders
来指明本机要映射到 Homestead 虚拟机上的文件夹。map
对应的是我们本机的文件夹,格式例如:E:/Homestead/Code,以开发者实际项目目录为准。to
对应的是 Homestead 上的文件夹。
为了后续课程讲解,请统一配置如下:
folders: - map: ~/Code to: /home/vagrant/Code
默认
Homestead
会将我们本机的~/Code
文件夹映射到/home/vagrant/Code
文件夹上。现在我们本机还没有~/Code
文件夹,让我们来创建一个:cd ~ mkdir Code
执行成功后,同样的,我们可以通过
explorer .
命令在文件夹中打开此目录:在后面的章节中,我们将会在该文件夹下放置我们所有的 Laravel 项目,Homestead 会把该文件夹下的项目自动映射到虚拟机的
/home/vagrant/Code
文件夹上。4. 站点配置
站点配置允许你在主机里,通过域名来访问虚拟机里的 Laravel 应用。如下面
sites
配置所示,将homestead.test
映射到一个 Laravel 项目的public
目录上。这一行配置,会命令 Homestead 为我们新建一个 Nginx 站点,并且把 Web Root 配置到指定目录下。Laravel 应用的 Nginx 站点 Web Root 配置,默认就是在根目录下的public
目录。sites: - map: homestead.test to: /home/vagrant/Code/Laravel/public
目前
Laravel
项目并不存在。这里先统一配置为以上,请不用着急,在后续的章节中,我们会创建该Laravel
项目。另外,主机里直接访问虚拟机站点,必须通过绑定
hosts
来实现。接下来我们利用hosts
文件绑定homestead.test
到虚拟机 IP192.168.10.10
上。hosts
文件的完整路径为C:\Windows\System32\Drivers\etc\hosts
,可使用下面命令打开:notepad C:/Windows/System32/Drivers/etc/hosts
在
hosts
文件的最后面加入以下一行(注意host是否有写入权限):192.168.10.10 homestead.test
至此站点就配置好了,等我们在后面章节创建
Laravel
项目后,即可通过浏览器访问homestead.test
站点。5. 数据库配置
我们可以为 Homestead 指定数据库名称,这里使用默认设置即可。
databases: - homestead
6. 自定义变量
最后,如果你需要自定义一些在虚拟机上可以使用的自定义变量,则可以在
variables
中进行定义。variables: - key: APP_ENV value: local
Homestead 自定义变量在本书中并未使用,知悉有此功能即可。
运行 Vagrant
完成了 Homestead 的配置,接下来我们要开始启动虚拟机了。
在命令中输入
vagrant
,能看到 Vagrant 为我们提供了一些便利的命令行,下面简单介绍一下 Vagrant 常用的一些命令行的使用:命令行 说明 vagrant init 初始化 vagrant vagrant up 启动 vagrant vagrant halt 关闭 vagrant vagrant ssh 通过 SSH 登录 vagrant(需要先启动 vagrant) vagrant provision 重新应用更改 vagrant 配置 vagrant destroy 删除 vagrant 让我们开始启动 Homestead:
cd ~/Homestead && vagrant up
第一次启动时,Vagrant 会做以下这几件事情:
- 以导入的 Homestead 虚拟机盒子为模板,新建一台虚拟机;
- 并按照
Homestead.yaml
里的配置信息,对这台新建的虚拟机进行配置; - 配置完成后启动虚拟机。
成功启动后,还是在
~/Homestead
目录中,通过以下命令来 SSH 登录 Homestead 虚拟机中:vagrant ssh
在我们登录成功后,你能看到类似于如下图的界面,现在我们在该终端界面中输入的所有命令都将运行在 Homestead 虚拟机上。
在虚拟机界面下可以输入退出虚拟机:
exit
最后尝试关闭 Homestead:
vagrant halt
开启 NFS 挂载
使用 Homestead 开发时经常遇到站点龟速响应的问题,解决方案请见: Wiki:Laravel Homestead:开启 NFS 解决站点响应缓慢
问题描述
使用 Homestead 在开发 Laravel 应用程序,经常会遇到网页响应速度缓慢,有时甚至十几秒甚至几十秒才返回响应,极大影响了开发体验:
造成此问题的原因,是虚拟机共享文件系统 IO 速度慢所导致的。而一个全新安装的 Laravel 应用响应一个请求时,需要读取 600 的文件,瓶颈尤为明显。
解决问题
解决方案是让虚拟机使用 IO 效率更高的 NFS 挂载方式。
第一步、安装 NFS 服务
我们需要在主机的系统里安装 NFS 服务供虚拟机使用。
Mac 用户默认支持 NFS 挂载。
Windows 用户 需要安装 Vagrant WinNFSd ,在你的 Git Shell (或者其他 Windows Shell)里运行以下命令进行安装:
vagrant plugin install vagrant-winnfsd
Ubuntu 用户 可以使用以下命令安装 NFS 服务:
apt-get install nfs-kernel-server
第二步、修改配置
接下来修改 Homestead.yaml
文件里的 folders
文件挂载信息,指定挂载的 type
为 NFS:
. . . folders: - map: ~/code to: /home/vagrant/code type: "nfs" . . .
第三步、重启并应用虚拟机
因为我们修改了 Homestead.yaml
,需要 --provision
参数来应用虚拟机修改,并使用 reload
来重启虚拟机:
vagrant reload --provision
结语
以上配置成功后,一般情况下,你应该可以得到 1s 内的响应速度。
版权声明:
作者:xiaoniba
链接:https://blog.xiaoniba.com/2020/01/21/win10-laravel%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba/
来源:小泥吧的博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论