Skip to content

基础知识

向军大叔每晚八点在 抖音bilibli 直播

xj-small

Laravel 致力于让整个 PHP 开发体验变得愉快, 包括你的本地开发环境。 Vagrant 提供了一种简单,优雅的方式来管理和配置虚拟机。 Laravel homestead 是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box! homestead 可以运行在任何 Windows,Mac,或 Linux 系统,它包括了 Nginx web 服务器, PHP,MySQL,PostgreSQL,Redis,Memcached, Node,以及开发 Laravel 应用程序所需要的东西。

VirtualBox

https://www.virtualbox.org/ VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。

Vagrant

Vagrant by HashiCorp Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置 MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。可以在下面网站上搜索需要的 vagrant box https://app.vagrantup.com/boxes/search

卸载程序和依赖

在下载的安装包里有一个删除工具,可以直播删除 Vagrant 软件。

image-20181110171158894

homestead

homestead是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box!

内置软件:Ubuntu、PHP、Nginx、Apache (Optional)、MySQL ……

软件安装

homestead 的安装过程分为下载 BOX 与配置脚本两部分。有些网络环境可能出现下载失败的情况,这种情况下可以通过 扩展知识章节的 离线安装 来完成。

下载镜像

在线安装 homestead Vagrant Box,文件比较大下载会比较慢,如果失败就多试几次

如果实在不能安装,请查看扩展知识中的离线安装

vagrant box add laravel/homestead

选择虚拟机 virtualbox

image-20200128230526306

管理脚本

clone 管理脚本

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

因为 master 分支可能不稳定,所以切换到稳定发行分支更安全些

cd homestead
git checkout release

创建 homestead.yaml 配置文件

// Mac / Linux...
bash init.sh

//windows
./init.bat

安装的 box 镜像储存的位置:以我电脑为例在 /Users/xj/.vagrant.d/boxes

升级盒子

经过长时间使用后升级 BOX 可以带来更多的特性和性能的改善,进入 homestead 目录执行

vagrant box update

环境配置

初次安装的环境需要掌握服务器的进行与基本配置

SSH 登录

生成 key 用于远程连接,如果执行以下命令系统提示密钥文件存在,就不需要执行这个命令了,否则会以往已经连接服务器将无法连接

text
ssh-keygen -t rsa -C "2300071698@qq.com"
#后面一真按enter键,设置密码

执行以下命令就可以登录到 homestead 服务器了

text
vagrant ssh

时间同步

默认 HOMESTEAD 的 LINUX 系统使用的是 UTC 时间,我们将它为北京时间

#进入HOMESTEAD 的Linux系统
homestead ssh

#执行设置时区命令
dpkg-reconfigure tzdata

#在弹出的菜单中选择 Asia->Shanghai

性能提升

如果感觉同步文件过慢,可以安装 NFS 来提升性能,目前只支持 Mac 系统。

安装插件

vagrant plugin install vagrant-winnfsd

修改配置文件,添置 type 选项

folders:
  - map: ~/Code
    to: /home/vagrant/Code
    type: nfs

站点配置

配置开发项目主要在 homestead.yaml 配置文件中完成

共享文件夹

homestead.yaml 文件的 folders 属性里列出所有与 homestead 环境共享的文件夹。这些文件夹中的文件若有变更,它们会保持本地机器与 homestead 环境之间同步。你可以根据需要配置多个共享文件夹:

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: nfs
# map 对应的是我们本机的文件夹
# to 对应的是 homestead 上的文件夹
# type 这样可以提升加载速度

window 用户请使用绝对路径,Linux/Mac 不要使用.开始的路径

数据库

  • 要从主机的数据库客户端连接到 MySQL,就连接到 127.0.0.1 和端口 33060 (MySQL) 。账号密码分别是 homestead,secret。
  • PHP 程序连接(虚拟机中连接)端口为 3306

下面修改配置将 MYSQL 升级到 8.0

features:
	...
	- mysql8: true

配置域名

安装SwitchHosts)软件可以方便的修改 host 文件,这是推荐方法。windows 用户需要使用管理员身份运行(右键以管理员运行)。如果 switchHosts 软件无法运行,请参考下面文件位置自行修改。

  • Mac 文件位置 /etc/hosts
  • Windows 文件位置 c:/windows/System32/drivers/etc/hosts

修改hosts文件添加如下内容,

192.168.10.10 hdcms.hd

上面定义了一个域名 hdcms.hd 指向我们的 homestead 服务器,在 homestead.yaml 文件内定义域名解析配置:

sites:
  - map: hdcms.hd
    to: /home/vagrant/code/hdcms

现在当我们访问 hdcms.hd 时会访问到 homestead 服务器下的 /home/vagrant/code/hdcms 目录

文件列表

在开发环境下我们希望在浏览器中显示文件列表,进入 HOMESTEAD 服务器修改 NGINX 配置文件

vim /etc/nginx/nginx.conf

添加以下指令

http {
	...
	autoindex on; # 显示文件列表
	...
}

切换版本

homestead 内置多个 PHP 版本,首先使用以下命令查看内置的 PHP

项目版本

通过修改Homestead.yaml文件来更改项目 php 版本

sites:
    - map: hdcms.test
      to: /home/vagrant/hdcms/public
      php: "7.4"

命令行版本

查看 homestead 目录下的aliases 文件,其中有类似以下的函数

...
function php80() {
    sudo update-alternatives --set php /usr/bin/php8.0
    sudo update-alternatives --set php-config /usr/bin/php-config8.0
    sudo update-alternatives --set phpize /usr/bin/phpize8.0
}
...

使用 homestead ssh 登入服务器执行 php80 即切换为 8.0

全局命令

如果我们想在任何目录都可以执行 vagrant 命令,需要进行以下设置

Mac/Linux

修改 ~/.bash_profile 文件,如果安装了 zsh 需要修改 ~/.zshrc 文件

function homestead() {
  ( cd ~/homestead && vagrant $* )
}

这样我们就可以使用 homestead up 等方式执行了

windows

windows 可以以两种方式创建全局命令

git for windows

使用你使用了 git for windows 提供的命令行工具,需要修改 ~/.bash_profile 文件内容。

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

内置命令行

如果使用的 windows 提供的命令行工具,需在计算机上的任何位置创建批处理文件homestead.bat

你需要将脚本中实例路径 C:\Homestead 调整为 Homestead 实际安装路径。创建文件之后,添加文件路径到 PATH,这样你就可以在系统的任意位置运行 homestead up 或 homestead ssh 命令了。

下面是 homestead.bat文件的内容

php
@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

单独使用

可以在项目中配置 Homestead 实例,而不必在全局上安装 Homestead 并在所有项目中共享同一 Homestead 配置。如果希望Vagrantfile随项目一起提供,而允许其他从事该项目工作的人来安装,则为每个项目安装 Homestead 是不错的选择。

要将 Homestead 直接安装到项目中,使用 Composer 进行安装:

php
composer require laravel/homestead --dev

安装 Homestead 后,使用make命令在项目根目录中生成VagrantfileHomestead.yaml文件。该make命令将自动在文件中配置sitesfolders指令Homestead.yaml

Mac / Linux:

php
php vendor/bin/homestead make

windows:

php
vendor\\bin\\homestead make

接下来,在终端中运行命令vagrant up,并在浏览器中访问项目就可以了。请记住,需要确保域名已经成功解析。