您的位置:首页 > 编程语言 > PHP开发

Laravel homestead 安装与使用 From Scratch

2015-10-31 03:34 946 查看

前记

在开始接触 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_文件名称




配置 homestead

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

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


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

./init.sh




看看这个文件干了什么:



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



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

[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




启动 homestead

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

vagrant up


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

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

vagrant halt


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

vagrant destory


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



问题参考:

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




关机:

homestead halt


查看状态

homestead status


题外话:使用 SSH 连接到 homestead

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vagrant homestead laravel