使用 Laravel 开发的都知道环境相对来说比较复杂,依赖的东西多,自己配难免会遇到各种各样的问题,这时用官方封装好的 Homestead 盒子再好不过。
Homestead 简介
Laravel Homestead 是官方预封装的 Vagrant box,提供给我们学习和开发者一个环境,我们在自己的电脑上不要装PHP,HHVM,WEB服务器等其他软件。也不用担心环境搭建带来的问题,Vagrant box全部都会给解决好,我们只需要使用就好。如果有问题,我们可以重新销毁vagrant box重新安装一个即可。
准备工作
安装 Vagrant 和 VirtualBox
安装 Git,window客户端直接安装
下载 Laravel Homestead box
https://app.vagrantup.com/boxes/search
拼下载 URL:
'https://app.vagrantup.com/laravel/boxes/homestead/versions/7.2.1' + '/providers/' + '供应商名字/' + '.box'
公式:下载链接 = 产品版本链接 + 供应商英文意思 + 要下载的供应商名称(如virtualbox)+’.box’
如上选择的是版本是 v7.2.1,生成的下载链接为 :
https://app.vagrantup.com/laravel/boxes/homestead/versions/7.2.1/providers/virtualbox.box
下载之后可以把名改了好区分:homestead-7.2.1,默认名字是:virtualbox.box
安装
1、添加 box
vagrant box add laravel/homestead F:/MyDownloads/Download/homestead-7.2.1.box
用命令查看到有 laravel/homestead 即添加成功
vagrant box list
列表中显示的laravel/homestead的版本号为0,我们要把它改成正确的版本号(7.2.1),可以打开用户目录下的~.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead文件夹,找到以下路径:
~ .vagrant.d\boxes\laravel-VAGRANTSLASH-homestead
将文件夹中名为0的文件夹改名为我们下载的Homestead的版本号,即7.2.1。
然后在该文件夹下新建一个叫metadata_url的文件 (注意不要有任何文件名后缀,如果你的系统设置了自动隐藏后缀名,请将隐藏去掉,确认文件无任何后缀),文件添加一下内容
https://app.vagrantup.com/laravel/boxes/homestead
再次vagrant box list查看版本变了
2、克隆Homestead
在文件下执行命令,如D:/vagrant
git clone https://github.com/laravel/homestead.git Homestead
接着在已经克隆下来的文件夹内,会发现bash init.sh,init.bat两个文件
如果是在win下,又安装了git bash,则运行bash init.sh,init.bat均可。
如果是在linux下,则运行bash init.sh
在文件夹Homestead下执行
cd Homestead/
bash init.bat #win
或
bash init.sh #win、linux
执行完之后会产生文件:Homestead.yaml
3、配置Homestead.yaml
---
ip: "192.168.10.10" #虚拟机的ip,不用改动
memory: 2048 #虚拟机内存大小
cpus: 1 #虚拟机cpu数量
provider: virtualbox #提供虚拟机类型,用virtualbox装的一定要确认这里是virtualbox
authorize: ~/.ssh/id_rsa.pub #ssh的公钥,确认用户目录下有没有公钥
keys:
- ~/.ssh/id_rsa #ssh的私钥
folders: #设置文件夹映射关系
- map: D:/homestead #需要映射到虚拟机的本地机器的文件夹,自己的目录
to: /vagrant/code #需要映射到虚拟机中哪个的文件夹,虚拟机上的目录,没有就新建code
sites:
- map: homestead.test #站点虚拟域名
to: /vagrant/code #站点目录
databases:
- homestead #数据库
4、启动Homestead
vagrant up
或
vagrant up --provision #启动虚拟机,让provisioning立即生效
遇到问题:
Stderr: VBoxManage.exe: error: Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
管理员身份运行cmd关闭Microsoft-Hyper-V即可
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
#提示重启选择y
如果需要开启Hyper-V虚拟化管理员身份运行cmd
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V
5、登录Homestead
vagrant ssh
出现以下界面说明安装成功
其他操作
composer
composer
输入composer会看到如下界面
说明虚拟机以内置好了composer,没有的话需要自己安装
安装之前配置下composer,不然安装起来会很慢
使用 Composer 镜像加速有两种选项:
- 1、全局配置,这样所有项目都能惠及(推荐);
- 2、单独项目配置;
1、全局配置(推荐)
composer config -g repo.packagist composer https://packagist.laravel-china.org
2、单独使用
如果仅限当前工程使用镜像,去掉 -g 即可,如下:
$ composer config repo.packagist composer https://packagist.laravel-china.org
安装laravel
1、首先,通过 Composer 安装 Laravel 安装器
cd /vagrant/code
composer global require "laravel/installer"
如果之前安装的是旧版的安装器,可以通过命令更新:
composer global update
2、新建应用的两种方法
2.1 通过简单的 laravel new 命令即可在当前目录下创建一个新的 Laravel 应用
如新建名称为 laravel 的项目,此种方法较慢。
laravel new laravel
2.2 通过 Composer Create-Project 安装 Laravel 应用(推荐)
可以指定要安装的版本:5.6
composer create-project laravel/laravel laravel5.6 --prefer-dist "5.6.*"
配置站点
需编辑Homestead.yaml文件的字段sites和本机hosts文件
编辑配置文件 Homestead.yaml,找到下面的地方,配置站点
sites:
- map: homestead.test #虚拟域名
to: /vagrant/code/laravel5.6/public #指向虚拟机的项目入口文件路径
配置本地hosts文件
192.168.10.10 homestead.test
重启服务
vagrant reload --provision
在浏览器访问域名:homestead.test,出现如下界面即配置成功
新增站点
修改Homestead.yaml文件
sites:
- map: homestead.test #虚拟域名
to: /vagrant/code/laravel5.6/public #指向虚拟机的项目入口文件路径
- map: test.com
to: /home/vagrant/code/test/public
修改本机hosts文件
192.168.10.10 homestead.test
192.168.10.10 test.com
每次修改Homestead.yaml之后需执行命令才能生效
vagrant reload --provision
MySQL连接
ip:192.168.10.10
端口:3306
用户名:homestead
密码:secret
切换web服务器
自由切换Apache和Nginx,在Homestead 虚拟机执行命令:
flip
laravel的一些操作
控制台创建Controllers,在项目根目录执行命令:
php artisan make:controller Admin/IndexController
控制台创建Model,在项目根目录执行命令:
php artisan make:model Models/Article
每次修改文件composer.json需要在网站根目录执行以下命令:
composer dump-autoload
artisan命令参考:
https://learnku.com/articles/17014