Laravel homestead 安装与使用 From Scratch

前记

在开始接触 homestead 之前一直想着这货有什么卵用,本地安装个 XAMPP 直接开始码。后来为了保护系统的清洁性(-_-|||),避免开发环境污染到物理环境:

  • 所以开始考虑到虚拟机,接着在 VMware 上搭了个 Linux,用着一段时间:这尼玛每次都要开个 GUI 出来启动虚拟机好麻烦;
  • 于是开始考虑 Vagrant,Vagrant 是基于 VBox、VMware 等用于快速创建生产环境的工具,基于命令行的管理方式。此时并没有想着直接用 homestead 而是自己连滚带爬建一个 box (Vagrant 中的 box 相当于一个完整封装的虚拟机,homestead 就是一个 box),简单地搭建了一个开发环境,但是感觉不够全面,于是弃坑,但是至少了解了 Vagrant 的一些工作机制;
  • 最后回忆起有 homestead 这东西,Rock!

基础

Vagrant 基本原理就是通过配置文件,在后台启动一个预配置好的虚拟机(生产环境),通过端口映射,我们可以连接物理机并自动转发到虚拟机上进行通信。

环境准备

  • VirtualBox 4.3.12
  • Vagrant 1.7.4

这里的版本号仅供参考,笔者使用的系统为 Win10。

预配置

Vagrant 的环境变量 VAGRANT_HOME 用于指定当前下载 box 的存放位置,所以该文件夹会占用较大的空间,你可以将其指定到对应的路径。

安装 homestead

安装完 Vagrant 后其会自动添加到环境变量,使用 vagrant 命令添加 laravel/homestead 环境:

vagrant box add laravel/homestead

接着会显示下载源路径和进度信息,由于贵国墙高,建议复制下载源路径扔到某下载工具下载,之后切换到 box 文件的当前目录,使用如下方式添加本地 box:

vagrant box add laravel/homestead 这里_替换为_box_文件名称

Laravel homestead 安装与使用 From Scratch_第1张图片

配置 homestead

Laravel 官方为我们提供了 Vagrantfile 等开发环境初始化配置文件,省得手动配置,首先使用 git 把这些配置文件拉下来:

git clone https://github.com/laravel/homestead.git homestead

然后切换到该目录,运行初始化命令(注意这里要使用 Cygwin):

./init.sh

这里写图片描述

看看这个文件干了什么:

Laravel homestead 安装与使用 From Scratch_第2张图片

其实就是复制一些配置模板文件到 ~/.homestead 文件下,接着进入 ~/.homestead,修改 homestead 的配置文件:

Laravel homestead 安装与使用 From Scratch_第3张图片

其实这配置文件很容易理解,挑几个重要的讲,其余默认即可:

  • [ip] 物理机的 IP 地址,用于本地端口绑定

  • [authorize] 你的 SSH 连接公钥(如何生成 SSH 密钥请 参考这里)

  • [keys] SSH 私钥

  • [folders] 把你的本地文件映射到虚拟机(例如上图将 ~/Sources/Web 映射到虚拟机的 /home/vagrant/sources),这样可以物理机和虚拟机同步访问文件。

  • [sites] Nginx 配置中的网站根目录, map 为你的域名(如果自定义了域名,要添加到 hosts 文件),to 为网站根目录

  • [databases] 创建一个名为 homestead 的 MySQL 数据库

注意:Vagrant 启动时会替换 box 默认的 SSH 私钥,而 homestead 的配置文件也会将我们配置的 SSH 密钥进行替换。

默认 Vagrant 替换的 SSH 私钥会导致连接失败(至少我是这样),所以我们直接让 homestead 替我们工作即可,需要达成该目的你需要修改 homestead 配置目录下名为 Vagrantfile 的文件,添加一句

config.ssh.insert_key = false

Laravel homestead 安装与使用 From Scratch_第4张图片

启动 homestead

如此简单便配置完了,接下来在 homestead 目录下启动 homestead:

vagrant up

启动完成后,端口会被映射到本地,通过访问物理机的 8000 端口可以重定向到虚拟机的 80 端口,2222 重定向到虚拟机的 22 端口。

然后你可以随时关闭虚拟机:

vagrant halt

或者把环境废了(放心你重新 up 会自动生成一个新环境,而且映射的文件在本地,如果没有在虚拟机上存储附加信息,不会造成损失)

vagrant destory

注意:如果你是 win10,并且用着相同版本号的程序,应该会遇到 VBox 网络适配器而导致 homestead 无法启动的问题,打开 homestead/scripts/homestead.rb 文件,并将对应语句注释即可:

Laravel homestead 安装与使用 From Scratch_第5张图片

问题参考:

Windows host-only adapter creation fails due to slow background processing

Windows 10 + Vagrant + Virtualbox + Homestead

其实每次都要到 homestead 目录去进行启动有点不爽,笔者偷懒写了一个批处理,将批处理保存为 homestead.bat ,并把该批处理目录添加到 PATH 变量即可随处运行:

@echo off
set CWD=%cd%
rem 下面替换为你的 homestead 路径
set HOMESTEAD_HOME=C:\homestead

if exist %HOMESTEAD_HOME% (
    rem Redirect to the drive which is specified
    %HOMESTEAD_HOME:~0,2%
    chdir %HOMESTEAD_HOME%

    if "%1"=="up" ( goto up )
    if "%1"=="halt" ( goto halt )
    if "%1"=="status" ( goto status )
) else (
    echo The directory %HOMESTEAD_HOME% dosen't exist.
)
goto nothing

:up
vagrant up
goto nothing

:halt
vagrant halt
goto nothing

:status
vagrant status

:nothing
%CWD:~0,2%
chdir %CWD%

例如,启动 homestead:

homestead up

Laravel homestead 安装与使用 From Scratch_第6张图片

关机:

homestead halt

查看状态

homestead status

题外话:使用 SSH 连接到 homestead

可以使用 Putty 或者 Xshell 连接到物理机的 2222 端口对 homestead 进行操作,用户名为 vagrant:

Laravel homestead 安装与使用 From Scratch_第7张图片

你可能感兴趣的:(日常)