很多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。-
进入项目目录试试能否运行该框架。
cd laravel && php artisan serve,访问网页成功。
image.png 使用
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




