【笔记】使用Homestead 搭建PHP的开发环境
in PHP观点与感想 with 0 comment

【笔记】使用Homestead 搭建PHP的开发环境

in PHP观点与感想 with 0 comment

据说 Laravel 是最好的PHP开发框架,那肯定要尝试一下

Vagrant 是一个虚拟机外挂程序,依托于 Oracle 公司开源的 VitualBox。

Homestead 是 Larvel 官方预装的 Vagrant Box,可以快速生成出一个配置完备的PHP的运行环境,运行在VitualBox上。

Homestead 4.4 集成了Ubuntu 14.04,Git,PHP 5.6 / 7.0,Xdebug,HHVM,Nginx,MySQL,Sqlite3,Postgres,Composer,Node(附带了 PM2、Bower、Grunt 与 Gulp),Redis,Memcached (仅限 PHP 5.x),Beanstalkd

安装过程可以参考 官方文档 或者 中文文档

下载并安装 VirtualBoxVagrant

下载并配置 Homestead

Homestead 包括以下两个东西

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

克隆 homestead 项目

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

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

加入 homestead box

执行以下命令添加 box

vagrant box add laravel/homestead

国内可能不能直接用命令添加,需要手动下载Box.

提供一个下载地址:百度云盘

编辑 metadata.json (这个文件放在box同一目录下)

{
    "name": "laravel/homestead",
    "versions": [{
        "version": "0.4.4",   //注意替换成你的版本
        "providers": [{
            "name": "virtualbox",
            "url": "file://homestead.box"   //注意替换成你的box的文件名
        }]
    }]
}

然后执行

$ vagrant box add metadata.json
$ vagrant box list
laravel/homestead               (virtualbox, 0.4.4)

修改 homestead 的配置

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

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

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code/
      to: /home/vagrant/Code

sites:
    - map: blog.app
      to: ~/Code/Laravel/public

variables:
    - key: APP_ENV
      value: local

生成 ssh key

这里填自己的邮箱就可以了

ssh-keygen -t rsa -C "you@homestead",

配置 hosts 文件

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

sudo vi /etc/hosts

添加以下一行

 192.168.10.10    blog.app

初始化 homestead 虚拟机

一定要切换到 Git 下来的 Homestead 目录下,不然Homestead.yaml 的配置是不起作用的

cd Homestead
vagrant up 

以上配置正确的话会有类似以下输出

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 80 (guest) => 8000 (host) (adapter 1)
    default: 443 (guest) => 44300 (host) (adapter 1)
    default: 3306 (guest) => 33060 (host) (adapter 1)
    default: 5432 (guest) => 54320 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key

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

vagrant ssh 
cd ~/mytwitter
ls -la

Vagrant 相关

下载 box 的地方 : http://www.vagrantbox.es/

$ vagrant box add NAME URL #添加一个box
$ vagrant box list #查看本地已添加的box
$ vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行
$ vagrant init NAME #初始化,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant destroy #销毁虚拟机
$ vagrant reload #重启虚拟机
$ vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
$ vagrant ssh#进入虚拟环境

Responses