在Mac上下载Vagrant并使用Homestead
很多Laravel开发者困惑于PHP项目本地和服务端环境不统一,导致一系列的问题。解决这种问题目前的最佳实践有Docker和Vagrant两种。对于Laravel项目,Laravel-China社区的大佬们推荐使用Homestead
工具进行开发,本文主要讲解该工具在MacOS的安装和基本使用。
-
在centos7服务器环境中安装使用教程请访问另一篇文章:在CentOS7上下载Vagrant并使用Homestead。
-
首先,
homestead
是基于vagrant
的,vagrant
是基于virtualBox
的。也就是说,我们第一步需要下载virtualBox
和vagrant
两个软件。下载速度可能有点慢,尽量都使用最新版,如果两个软件版本相差太大,可能会导致homestead
无法使用。官网下载地址:
友情提示:linux
服务端下载建议使用wget
命令,不要本地下载后使用ftp上传!!!
-
终端命令行执行
vagrant -v
用来确定是否正确安装vagrant
和virtualBox
,如图:- image.png
-
box是vagrant管理的一个个容器,现在我们需要下载一个名为
homestead
的box。使用命令vagrant box add laravel/homestead
,安装过程需要选择你本地使用的虚拟机。如图:- image.png
-
上面的操作你也可以使用
Vagrantfile
来完成:在终端执行vagrant init laravel/homestead
和vagrant up
即可。 -
下载速度太慢的话,可以将图片中的地址复制到迅雷中下载,然后在同级目录中使用
vagrant box add homestead homestead.box
命令添加本地box。homestead
为自定义名称,homestead.box
为本地box名称。 -
你也可以在 http://app.vagrantup.com手动下载合适的版本。
-
不要再问下载速度慢的问题,谢谢。
-
下面是box常用命令:
vagrant box list 列出本地所有box
vagrant box remove boxName 删除某个box
- 然后安装好
composer和git
,配置好git信息这点就不解释了,终端执行命令git --version && composer --version
查看是否安装成功。
查看`composer`当前使用仓库源`composer config -g repo`。
修改`composer`默认仓库为使用`composer config -g repositories.packagist composer http://packagist.phpcomposer.com`。
-
如图,新建项目失败,这是因为国内源使用http协议,
composer
官方于2018年已经要求使用https。打开composer
全局配置文件config.json
,该文件位于~/.composer/
目录下。在config中加入"secure-http": false
即可。 -
查看
composer
下载的laravel
版本可以使用cat laravel/composer.json
。 -
进入项目目录试试能否运行该框架。
image.pngcd laravel && php artisan serve
,访问网页成功。
-
使用
git
下载homestead
到用户家目录:cd && git clone https://github.com/laravel/homestead.git
。 -
进入目录生成
homestead.yaml
配置文件,执行cd ~/homestead && bash init.sh
。windows用户执行init.bat
。接下来修改这个homestead
配置文件。 -
启动
vagrant
,在homestead/
目录下执行vagrant up
,你可能会碰到这个问题:Check your Homestead.yaml file, the path to your private key does not exist。这说明你电脑没有生成ssh密钥,要生成密钥,前提是你电脑安装了git,安装后在Git安装目录下有一个ssh-keygen
文件,执行这个文件就可以。你也可以执行下面的代码。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
eval "$(ssh-agent -s)"
ssh-add -K ~/.ssh/id_rsa
-
点击访问:安装常见错误。
-
现在我们使用
vagrant status
查看box状态,如果是running则使用vagrant ssh
登陆到box容器中。如果你没有正确设置公钥和私钥,此时会被要求输入密码(密码为vagrant)。登陆进去后的数据库密码为secret
。 -
如果你不想到
homestead/
目录下再进入box容器,也可以在任何目录下使用ssh vagrant@127.0.0.1 -p 2222
进入。注意一下物理主机与虚拟容器之间的端口映射。
SSH: 2222 → Forwards To 22
HTTP: 8000 → Forwards To 80
HTTPS: 44300 → Forwards To 443
MySQL: 33060 → Forwards To 3306
Postgres: 54320 → Forwards To 5432
-
此时可以访问
http://homestead.test
测试发现这个问题:No input file specified.
。- image.png
-
这是因为Nginx站点配置的目录被我手动修改了,我们使用
vagrant ssh
登陆到服务器,修改sudo vim /etc/nginx/sites-enabled/homestead.app
这个文件中的错误目录即可,不用重启nginx。 -
重新测试访问即可。
- image.png