# 软件安装

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

# 下载镜像

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

vagrant box add laravel/homestead

选择虚拟机 virtualbox

image-20200128230526306

# 管理脚本

clone管理脚本

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

切换到稳定分支

cd homestead
git checkout release

创建 homestead.yaml 配置文件

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

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

# 环境配置

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

# SSH登录

生成 key用于远程连接,如果已经存在就不要设置了,会影响你以往服务器的连接

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

这样就可以登录的 homestead 虚拟主机了,此时可以查看上面定义的本地目录与虚拟机目录同步的情况

vagrant ssh

# 时间同步

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

#进入HOMESTEAD系统
homestead ssh

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

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

# 性能提升

如果感觉同步文件过慢,可以安装 NFS 来提升性能

安装插件

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

# 配置域名

修改 /etc/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; # 显示文件列表
	...
}

# 全局命令

如果我们想在任何目录都可以执行 vagrant 命令,需要进行以下设置 修改 ~/.bash_profile 文件,如果安装了 zsh 需要修改 ~/.zshrc文件

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

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