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

Laravel 的 Homestead 开发环境部署

2015-12-29 15:13 731 查看

Homestead 与 虚拟机

Laravel 努力在整个PHP开发过程中提供令人愉快的开发体验,当然也包括本地的开发环境。

首先明白以下几个概念

VirtualBox -- Oracle 公司的虚拟机软件, 能运行在当前大部分流行的系统上;
Vagrant 提供一种命令行接口, 允许自动化安装虚拟机, 并且因为是脚本编写成的 
provision
 文本文件,
给共享虚拟机配置提供了可能, Homestead 正是构建在 Vagrant 之上;
Laravel Homestead 是官方预封装的一个 Vagrant Box,它是一台虚拟机的原型, 用来快速生产一个配置完整的服务器虚拟机, 运行在 VirtualBox
上.
Homestead 生产出来的虚拟机提供了一个完整的开发环境, 有了这个环境, 就不用再担心各种软件的设置会搞乱你的操作系统啦.

因为是虚拟机, 出现故障的时候, 可以在几分种内完成销毁和重建.

Homestead 能运行在所有的Windows、Mac和Linux上,它包含了Nginx、PHP 5.5、MySQL、Postgres、Redis、Memcached和你开发 Laravel应用程序需要的所有其它软件。

在多人协同开的情况下, Homestead 能用来统一开发环境, 让程序员把精力更集中的放在程序业务逻辑上, 免去了各种因为开发环境不一样而造成的混乱.

约定

假设我们要开发一个项目, 项目的名字叫 
mytwitter
.

首先在我们存放代码的地方 
code
 文件夹里面创建项目根文件夹 
mytwitter_project
,
接下来咱们的操作都在此项目下进行

cd ~/code
mkdir mytwitter_project
cd mytwitter_project
[/code]

安装 virtualbox 和 vagrant

在这里下载并安装 VirtualBox , Vagrant .

直接下载 GUI 安装包安装就行.

下载并配置 Homestead

Homestead 包括以下两个东西

一个 vagrant box 虚拟机, 里面软件什么都下载好了;
Github 代码库, 里面装载着 vagrant 的配置脚本, 用来自动化配置网络, 端口映射, 等一些开发时候用到的配置;

克隆 homestead 项目

在文件夹下克隆 homestead 项目到本地

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

加入 homestead box

执行以下命令添加 box

vagrant box add laravel/homestead

[注意] 命令行下下载速度太慢的话可以利用工具下载以下链接加速.

https://vagrantcloud.com/laravel/homestead/version/8/provider/virtualbox.box

下载后执行以下命令, 修改 
/path/to/virtualbox.box
 为正确的
path.

vagrant box add laravel/homestead /path/to/virtualbox.box

修改 homestead 的配置

根据你的情况修改 Homestead 项目里面文件 Homestead.yaml , 类似以下

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: /Users/me/.ssh/id_rsa.pub

keys:
- /Users/me/.ssh/id_rsa

folders:
- map: /Users/me/code/mytwitter_project/mytwitter
to: /home/vagrant/mytwitter

sites:
- map: mytwitter.app
to: /home/vagrant/mytwitter/public

variables:
- key: APP_ENV
value: local

配置 hosts 文件

修改本机的 hosts 文件, 允许通过自定义域名访问, 这个域名是在上面的 
Homestead.yaml
 里面设置的.

sudo vi /etc/hosts

添加以下一行

127.0.0.1    mytwitter.app

初始化 homestead 虚拟机

cd Homestead
vagrant up
[/code]
以上配置正确的话会有类似以下输出

➜  Homestead git:(master) ✗ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'laravel/homestead'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: Homestead_default_1407410586606_38332
==> ... etc....
==> default: php5-fpm stop/waiting
==> default: php5-fpm start/running, process 1945

测试是否能成功连接, 虚拟机里的 
~/mytwitter
 文件夹里的文件和本地的文件是一致的.

vagrant ssh
cd ~/mytwitter
ll

浏览器访问 http://mytwitter.app:8000/ .

至此, 成功安装.

其他配置

这时 
mytwitter_project
 的文件夹结构如下:

➜ ls
Homestead  mytwitter

可以在 dotfile 里面增加 alias 进行快速连接 vm:

alias vm="ssh vagrant@127.0.0.1 -p 2222"

这样以后直接使用 
vm
 就可进入
虚拟机了.

关于虚拟机里面的软件使用

PHP

vm
 进入虚拟机以后,
查看 php 版本

vagrant@homestead:~$ php -v
PHP 5.5.15RC1 (cli) (built: Jul 15 2014 11:14:55)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

MYSQL

查看版本

vagrant@homestead:~$ mysql --version
mysql  Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3

vm 下命令行链接, 密码为 
secret


mysql -uhomestead -p

默认提供 homestead 数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| homestead          |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

顺便建数据库 
phphub


mysql> create database phphub;
Query OK, 1 row affected (0.00 sec)

设置数据库连接

本机连接 vm 里 mysql 方法是:

host: 127.0.0.1
port: 33060
user: homestead
pass: secret

关于 vm 里面其他服务的 port 信息如下, 或请见 文档

SSH: 2222 -> Forwards To 22
HTTP: 8000 -> Forwards To 80
MySQL: 33060 -> Forwards To 3306
Postgres: 54320 -> Forwards To 5432

其他软件

Homestead box 里还默认安装了以下软件

Composer - php 的包管理器
Envoy - 一个远程任务执行工具, 用来管理远程服务器;
nodejs
gulp - 用来做自动化管理 css 和 js 等 assets 文件;
Codeception - 用作 BDD 测试
git
..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  laravel