[Laravel] mac下通过 homestead 搭建环境 到运行项目
之前学习过一段时间的
Laravel ,换 mac 后一直没空做相关的事情,而且刚使用 mac
有点不习惯,怕坑太多,所以环境搭建就一直耽搁了下来。终于今天有一个比较完整的时间,一狠心就把这件事做了。一共花了差不多 5
个小时,回头看看其实还是非常简单的,主要是因为之前在 win
上面搭建环境的经验有一些先入为主的错误想法还有网上资料时效性导致绕了一些弯路。
homestead 是什么
Laravel
官方推荐使用 homestead 搭建环境,那么这个 homestead
究竟是什么鬼?相信很多和我一样不是专门搞服务器的同学看过各种资料后还会有点迷糊。刚开始看了一些介绍后我以为 homestead 是一个整合了 Nginx +
PHP + MySQL + Composer 还有其他 Laravel 需要环境的安装包加管理器的概念,类似 win 平台上的 wnmp
之类的东西。不过装一半就发现完全是另一回事。
实际上 homestead
是一台虚拟机的原型,类似我们买电脑后预装的系统,只是这个系统预装了一切 Laravel 需要的东西。而我们最先进行的步骤安装 VirtualBox 和
Vargrnt 实际上就是安装了虚拟机。这意味着实际上 homestead 安装完成后我们的 mac 上并没有也不需要安装 PHP、Nginx、MySQL
等等的东西,所有东西都安装在另一台机器上(虚拟机)。

安装VirtualBox、Vargrant
VirtualBox
下载地址
Vagrant下载地址
这一步非常简单,官网都有
dmg 安装包,正常安装即可。
验证是否安装成功在终端使用以下命令行,显示版本信息就 OK
了。
vagrant -v
安装 Homestead Vagrant Box
直接输入以下命令行:
vagrant box add laravel/homestead
然后会提示选择版本,选择
virtualbox 版本相应序号即可。
这个步骤相当于下载虚拟机的预装系统,文件超过
1G,全程最耗时的步骤,请挂
VPN,你懂的。另外实在不行也可以考虑对 homestead.box 直接进行下载,并且手动导入。由于我自己是挂了 VPN
直接下了,手动导入的内容就不多说,文末会给出相应教程链接。
安装 Homestead
#切换到用户文件夹
cd ~
#克隆homestead项目 到 home/Homestead 文件夹
git clone https://github.com/laravel/homestead.git Homestead
git
项目克隆完成后,切换到 Homestead 文件夹,创建相关配置文件:
#切换到homestead目录
cd ~/Homestead
# Mac / Linux...
bash init.sh
编辑 Homestead.yaml
走完上面步骤后
Homestead 文件夹里会出现一个 Homesstead.yaml 配置文件。这个文件可以配置 mac 与虚拟机的共享文件夹、Nginx
站点、数据库等等、虚拟机使用 cpu 数、内存等等。 现在我们的目的是先安装并运行 Laravel
就行了,先使用其预设值即可,先不进行修改。但是我们需要根据其预设值对 mac 进行一些操作。
打开
Homesstead.yaml,先看一眼 folders 的值:
folders:
- map: ~/Code
to: /home/vagrant/Code
folders
决定了 mac 与虚拟机的共享文件夹,以上预设值指:mac 的 ~/Code 目录与虚拟机的 /home/vagrant/Code 是映射的关系。这时我们的 mac 上并没有 ~/Code 这个目录,自行新建即可。
#切换到用户目录
cd ~
#创建文件夹
mkdir -p code/lexing
编辑 /etc/hosts 文件
这时我们再看一看
Homesstead.yaml 的 ip 和 sites 两项:
ip: "192.168.10.10"
......
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
......
ip
是指 Homestead 的 ip,sites 则是指定域名去对应虚拟机的文件目录。记住这两个值,相应的去 /etc/hosts 文件最后添加如以下格式内容即可。另外提一下 etc 文件夹使用 Fider
的前往文件夹,输入/etc/ 就可以进入了。
192.168.10.10 homestead.app
到这里准备工作就已经完成了,我们可以启动虚拟机了。
启动虚拟机
由于进入虚拟机就都要用命令行干活了,这里推荐一下可以使用 iTerm 这个命令行工具。
在mac命令行中输入 cd ~/Homestead,切换到homestead项目所在到目录,然后输入 vagrant up,启动画面如下图:

SSH 登入虚拟机
启动成功之后,输入vagrant ssh 登陆到
vagrant 虚拟机,如下图所示:

在虚拟机中安装 Laravel
成功登入后使用以下命令在虚拟机中使用
Composer(虚拟机中已经预装好了) 下载 Laravel。当然,VPN 不能停。如果使用 VPN
还是不行的话可能需要挂国内镜像,网上有部分资料比较陈旧,导致镜像网址 https 少了个 s,注意确认。
镜像用法点我!
cd Code
composer create-project laravel/laravel Laravel --prefer-dist
这里切换到的
Code 目录就是预设与 mac 用户目录下 Code 文件夹映射的文件夹。Composer 会在 Code
里新建一个
Laravel 文件夹,下载 Laravel 所需文件。也正好和 Homesstead.yaml 的 sites 指定的文件路径吻合。–prefer-dist: 意思是下载用于 distribution 的稳定版本,而不是开发中的版本。
下载完成后就大功告成了,浏览器里输入 homestead.app (预设值的域名),出现以下画面就没问题了。

到这里我们的环境就已经搭建完成了。下面再补充一下 Homestead
的关机等必须知道的操作,还有就是我们要运行自己的项目必须要使用到的数据库连接和 Nginx 新增站点的操作。
关闭/删除/重建 Homestead
Homestead
相当于另一个系统,所以理所当然也是一个耗电小能手,所以不用的时候千万要记得关闭。以下是退出登陆并关闭虚拟机命令。
# 命令行工具退出对虚拟机系统登陆
eixt
# 虚拟机关机(位置要在 Homestead 文件夹)
vagrant halt
下次需要使用时,从 vagrant up 步骤开始即可。
在测试中因为各种原因导致虚拟机坏掉的时候,只需要对虚拟机进行删除、重建即可,非常方便。
# 删除当前虚拟机(需要在 Homestead 文件夹下)
vagrant destroy --force
# 重建虚拟机
vagrant up
注意删除指的是删除 vagrant up 建立的虚拟机,和删除整个 Homestead 是不同概念。如果完全不想使用 Homestead
了,想要删除可以参考下面链接。
删除 Homestead
与须知
连接数据库
实际上在虚拟机中已经为
MySQL 和 Postgres 配置好了一个开箱即用的数据库 homestead 。Laravel 中的 .env 文件的默认值正是使用了这个数据库。
数据库既然有了,那问题是怎么连接上呢?现在我们看一看刚才我们运行的 Laravel
项目原型中的 .env 文件中关于数据库的内容。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
可以看出连接指向了本机地址的
3306 端口,数据库名为 homestead,账号密码分别是 homestead /
secret。有了这些信息,我们就能连接上数据库了,比较简单的情况下我们只需要修改数据库名为我们自己创建的数据库名。
如果想要从你主机上的数据库客户端连接
MySQL 或 Postgres,可以通过 127.0.0.1 来使用端口 33060(MySQL) 或 54320(Postgres) 连接。
注意是端口是 33060,不是文件上的 3306。我自己是使用 Workbench
连接数据库,少了一个 0 貌似连不上。

新增站点
使用
Homestead 的一大好处就是不用去折腾 Nginx 配置文件。要添加额外的网站,只需将网站添加到您的 Homestead.yaml
文件中:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
- map: test.com
to: /home/vagrant/Code/test/public
然后在 /etc/hosts 文件中添加相应内容:
192.168.10.10 homestead.app
192.168.10.10 test.com
然后在
Homestead 文件夹下,使用 vagrant reload --provision 命令就完事了。网上有一些资料说这个命令会摧毁并重新创建现有的数据库,建议手动去修改 Niginx
的配置文件。我自己试了一下是没有这个情况出现的,不知道是因为版本还是我理解错误的原因。手动修改的方法我也试了一下,但是在虚拟机里没有权限导致失败,暂时没有解决。方法可以参考文末的链接。反正这个问题官方文档也并没有提及,我是不太想去折腾
Nginx 文件就是了。
另外给出几个包含本文未提及内容但是可能需要使用到的链接:
手动配置nginx服务器、导入homestead.box,在该文章最后附录处。
设定 ssh key,使用 ssh
登入前可能需要这个步骤,我自己是不用,可能是由于之前使用 git 的时候已经弄过了?
官方中文文档
[Laravel] mac下通过 homestead 搭建环境 到运行项目的更多相关文章
- [转]Mac下cocos2dx-3.2+Xcode环境配置和项目创建
原文:http://blog.csdn.net/u012200908/article/details/38070885 这是有关环境配置的第二篇教程,第一篇讲的是win8下的环境配置.这里我们使用C+ ...
- 记一次mac下使用mamp集成环境配置lumen项目自定义域名遇到的花样问题
1.安装好mamp集成环境,自行百度. 2.从公司项目版本库里将项目克隆到本地. 好了,开始配置自定义域名来访问项目,以下是遇到的问题集锦... 1.web服务器使用的nginx,配置完域名访问报40 ...
- mac 下 用 glfw3 搭建opengl开发环境
mac 下 用 glfw3 搭建opengl开发环境 下载编译 glfw3 Build Setting 里面, Library Search Paths -> 设置好编译 glfw 库的路径 H ...
- mac下通过docker搭建LEMP环境
在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...
- MAC 下用 brew 搭建 PHP 开发环境
Mac下用brew搭建PHP(LNMP/LAMP)开发环境 Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且 ...
- mac下安装c++开发环境
mac下安装c++开发环境 1 注册apple id 按照apple注册步骤注册apple id,我注册时遇到如下问题 apple store完成创建apple id步骤中,选择付款方式和账单地址后, ...
- 记录--mac下终端内的环境变量问题
一直使用的是前几年买的MacBook Air,当时感觉很轻薄,外观也非常的好看,也是一直用到现在,大概有三四年了,系统还是很流畅(实话,不是打广告......).平时也是经常要使用mac的终端,说实话 ...
- Mac 下安装Phonegap开发环境
Mac 下安装Phonegap开发环境 2014.09.11 星期四 评论 0 条 阅读 5,613 次 作者:野草 标签:phonegap ios mac 什么是Phonegap呢?Phon ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core
背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...
随机推荐
- python3 爬虫相关-requests和BeautifulSoup
前言 时间的关系,这篇文章只记录了相关库的使用,没有进行深入分析,各位看官请见谅(还是因为懒.....) requests使用 发送无参数的get请求 r = requests.get('http:/ ...
- 1.Appium环境搭建
1.安装node.js (1)去node官网下载,根据操作系统的不同选择不同对应的版本(https://nodejs.org/en/download/) (2)下载对应的版本后进行安装,一直下一步直至 ...
- 机器学习The Learning Problem——coursera简要总结
1.人类及动物的学习模式:观察->学习->技能 机器学习的模式:data->ML(机器学习)->skill 2.那什么是skill:技能是某种表现方法的增进 eg:stac ...
- How to Configure Eclipse for Python --- 在eclipse中如何配置pydev
From: http://www.rose-hulman.edu/class/csse/resources/Eclipse/eclipse-python-configuration.htm Pytho ...
- Makefile中进行宏定义-***
实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解 ...
- ROS创建Web代理(Web proxy)给QQ使用HTTP代理
使用Web代理可以提高网页的访问速度,因为访问的数据会存储在内存或是硬盘中,就会直接从代理服务器中读取.同时,为了提高网络访问的安全性,可以给Web代理服务器设置相应的权限,使它的安全性得到提高. 下 ...
- 031:Cetus sharding
目录 一.主机环境 二.搭建环境 1.准备环境 三.Cetus安装 1.下载包和安装依赖包 2.Cetus安装 1.安装说明 2.安装实施 四.Cetus配置 1.创建和修改配置文件 2.启动cetu ...
- Vue 安装环境创建项目
vue 是一个单页面框架,基于模块化组件化的开发模式. 搭建开发环境之前必须要安装node.js,然后安装vue的脚手架工具(命令行工具)win + R 输入npm install --global ...
- sqoop导出到mysql中文乱码问题总结、utf8、gbk
sqoop导出到mysql中文乱码问题总结.utf8.gbk 今天使用sqoop1.4.5版本的(hadoop使用cdh5.4)因为乱码问题很是头痛半天.下面进行一一总结 命令: [root@sdzn ...
- django-redis缓存
1.安装django依赖包 pip install djange-redis==4.8.0 2.配置文件settings 需要开启redis服务 sudo service redis start,否 ...