Appearance
homestead 安装
任务1介绍
Laravel 努力让整个 PHP 开发体验愉快,包括你的本地开发环境。 Laravel Homestead 是 Lavarel 官方预封装的 Vagrant Box 套件,它为你提供了一个绝佳的开发环境,而无需你在本地机器上安装 PHP 、Web 服务器及任何其他服务器软件。 Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。 Vagrant Box 完全是一次性的。如果出现问题,你可以在几分钟内销毁并重新创建 Box ! Homestead 可以在任何 Windows、 macOS 或 Linux 系统上运行,它预装好了 Nginx、 PHP、 MySQL、 PostgreSQL、 Redis、 Memcached、 Node 以及开发令人惊叹的 Laravel 应用程序所需的所有其他软件。
材料地址: https://learnku.com/docs/laravel/9.x/homestead/12267#61a3ec
任务2:已安装homestead的删除
#1、主机里运行一下命令查看所有的 Vagrant 主机:
vagrant global-status --prune
#2、删除主机(不可逆,做好备份,谨慎)
vagrant destroy 3ed8d94
#3、删除Vagrant和virtualbox
控制面板应用删除
任务3:安装软件
#1、VirtualBox
VirtualBox-7.0.14-161095-Win
VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。 https://www.virtualbox.org/wiki/Downloads

【VirtualBox】安装 VirtualBox 提示 needsthe Microsoft Visual C++ 2019,报错解决方案
下载 Microsoft Visual C++ 2019
#2、vagrant
vagrant_2.4.1_windows_i686 (1).msi
Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。 https://developer.hashicorp.com/vagrant/install?product_intent=vagrant
#3、git-bash终端工具 https://git-scm.com/
先装virtualbox,vagrant
任务4homestead的安装
#1
1.在线安装 homestead Vagrant Box
vagrant box add laravel/homestead安装日志
PS C:\Users\Admin\Desktop> vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
box: URL: https://vagrantcloud.com/api/v2/vagrant/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) parallels
2) virtualbox
Enter your choice: 2
==> box: Adding box 'laravel/homestead' (v12.2.0) for provider: virtualbox
box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/12.2.0/providers/virtualbox/unknown/vagrant.box
box:
box: Calculating and comparing box checksum...
==> box: Successfully added box 'laravel/homestead' (v12.2.0) for 'virtualbox'!ps 报错 vagrant up 会抱错,无法启动,原因是12.2.0 低于 13.0.0,手动修改
homestead(git clone) 根目录里的homestead.rb 13.0.0改为12.2.0

2、手动安装:
当无法在线安装,自己下载安装
根据安装日志里得到下载地址:https://vagrantcloud.com/laravel/boxes/homestead/versions/12.2.0/providers/virtualbox/unknown/vagrant.box

修改后缀.box
vagrant box add C:/Users/76563/Downloads/virtualbox.box然后对生成的配置文件修改
手动安装0, 13.0.0 改成0 ,自动安装可不需要修改

3. 通过 metadata.json 方式(推荐)
如果执行过
常规方案的,使用以下方式清除box:maxima$ vagrant box remove laravel/homestead
下载:https://app.vagrantup.com/laravel/boxes/homestead
三种格式:libvirt parallels virtualbox ,选择virtualbox
首先进入到 box 的下载目录,新建一个文件 metadata.json:
prolog
{
"name": "laravel/homestead",
"versions": [{
"version": "13.0.0",
"providers": [{
"name": "virtualbox",
"url": "./virtualbox.box"
}]
}]
}name添加的box名字version:版本号providers.name:虚拟主机类型providers.url:box地址 相对路径:./. 绝对路径: file://D:/homestead.box- ps 从网站下载的文件,需要添加后缀
.box
metadata.json准备完成后,执行以下命令添加:
pgsql
$ vagrant box add metadata.json输出以下结果:
pgsql
$ vagrant box add metadata.json
==> box: Loading metadata for box 'metadata.json'
box: URL: file://C:/Users/Admin/Desktop/metadata.json
==> box: Adding box 'laravel/homestead' (v13.0.0) for provider: virtualbox
box: Unpacking necessary files from: file://C:/Users/Admin/Downloads/homestead.box
box:
==> box: Successfully added box 'laravel/homestead' (v13.0.0) for 'virtualbox'!查看添加的 box 列表:
crystal
$ vagrant box list
centos/7 (virtualbox, 1809.01)#2、clone 管理脚本
git clone https://github.com/laravel/homestead.git ~/homestead#3、因为 master 分支可能不稳定,所以切换到稳定发行分支更安全些
cd homestead
git checkout release#4、创建 homestead.yaml 配置文件
// Mac / Linux...
bash init.sh
//windows
./init.bat#4.1、启动
// 查看虚拟机列表
vagrant box list
//首次先配置文件#5的步骤 再启动
vagrant up
// 删除指定版本
vagrant box remove laravel/homestead --box-version=12.2.0ps:
Vagrant Cloud上的Laravel/Homestead可用版本
ps:
$ vagrant up
Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.
# 生成一个ssh密钥
ssh-keygen -t rsa -b 4096 -C "1919193@qq.com"ps 报错 vagrant up 会抱错,无法启动,原因是12.2.0 低于 13.0.0,手动修改
homestead(git clone) 根目录里script文件夹的homestead.rb 13.0.0改为12.2.0
#5、配置文件的配置
ps: 用vscode 编辑器 homestead.yaml, 用文本编辑器会莫名报错
yaml格式严格,多空格都不行
在新建sites文件夹,做映射
yaml
---
ip: "192.168.56.56"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/code ## ~/Desktop/sites ##D:/dev/code
to: /home/vagrant/code
php: "8.1" # 修改版本,不然502报错
#能写多个
- map: ~/hc ## ~/Desktop/sites ##D:/dev/code
to: /home/vagrant/hc
php: "8.1" # 修改版本,不然502报错
sites:
- map: homestead.test ## cp.test
to: /home/vagrant/code/public ## /home/vagrant/code/cp/public # cp larave自动生成的文件夹,可添加多个site
databases:
- homestead
features:
- mysql: true
- mariadb: false
- postgresql: false
- ohmyzsh: false
- webdriver: false
services:
- enabled:
- "mysql"
# - disabled:
# - "postgresql@11-main"
#ports:
# - send: 33060 # MySQL/MariaDB
# to: 3306
# - send: 4040
# to: 4040
# - send: 54320 # PostgreSQL
# to: 5432
# - send: 8025 # Mailhog
# to: 8025
# - send: 9600
# to: 9600
# - send: 27017
# to: 27017#6、vagrant ssh密码vagrant
vagrant ssh
#7、重启加载配置文件
vagrant reload --provision#8、ps
vagrant halt # 关闭
vagarnt up # 启动,不建议中途关闭启动,容易让vagrant出问题导致重装,花时间
vagrant suspend 睡觉
vagrant resume 唤醒任务5安装laravel10
#1、安装指定版本
composer create-project laravel/laravel cp
composer create-project laravel/laravel=9.*.* cp # 指定9大版本,*号根据php版本安装最高的
composer create-project laravel/laravel=9.0.0 example-app # 指定9.0.0版本设置国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ps:
访问地址 页面502报错
查询/var/log/nginx 下的cp.test-error.log
2024/01/22 14:13:46 [crit] 840#840: *1 connect() to unix:/var/run/php/php8.3-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.56.1, server: cp.test, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php8.3-fpm.sock:", host: "cp.test"解决:homestead集成环境 自带多个版本的php。有些情况下需要修改默认的php版本。查阅了一些资料,有一个简单有效的方案 Homestead 中使用此命令:
sudo update-alternatives --config phpshellThere are 9 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/php8.2 82 auto mode 1 /usr/bin/php5.6 56 manual mode 2 /usr/bin/php7.0 70 manual mode 3 /usr/bin/php7.1 71 manual mode 4 /usr/bin/php7.2 72 manual mode 5 /usr/bin/php7.3 73 manual mode 6 /usr/bin/php7.4 74 manual mode * 7 /usr/bin/php8.0 80 manual mode 8 /usr/bin/php8.1 81 manual mode 9 /usr/bin/php8.2 82 manual mode Press <enter> to keep the current choice[*], or type selection number: 3 输入左边的数字选择版本命令行确认一下版本是否切换过来:php -v
ps: 重新安装laravel
任务6常见问题处理:
#1、调整服务器时间
默认 HOMESTEAD 的 LINUX 系统使用的是 UTC时间,我们将它为东八区北京时间
sudo dpkg-reconfigure tzdata在弹出的菜单中选择 Asia->Shanghai
#2、502错误的处理。
查看php版本和mysql版本,根据虚拟机环境安装的mysql去配置
Laravel10的php最低版本8.1
Homestead.yaml 更改项目 php 版本
yaml
sites:
- map: cp.test
to: /home/vagrant/code/cp/public
php: "8.1"#3、MYSQL 升级到 8.0
yaml
features:
...
- mysql8: true#4、数据库的连接。
要从主机的数据库客户端连接到 MySQL,就连接到 127.0.0.1 和端口 33060 (MySQL) 。账号密码分别是
mysql
账号:homestead
密码:secret1、设置vagrant通过Host Name连接登录
1.1、查看vagrant 配置文件内容
powershell
PS C:\Users\Dehou-Eric\vagrant-demo> vagrant ssh-config some-file.text1.2、创建config文件并复制内容
在用户目录C:\Users\Dehou-Eric下 .ssh目录下创建一个文件,把下面配置中的内容复制进去,并把文件名改为config,不带扩展名。
javascript
Host luckean
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile D:/tool/homestead/.vagrant/machines/homestead/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
PubkeyAcceptedKeyTypes +ssh-rsa
HostKeyAlgorithms +ssh-rsa1.3 把Host 名称default改为vagrant-host 1.4 可以直接通过主机名称连接:
powershell
PS C:\Users\Dehou-Eric> ssh luckean2、打开vscode,安装插件Remote ssh后,可以看到wsl、SSH下的虚拟机。
2.1 点击vagrant-host,在当前窗口连接,vscode会自动为这台虚拟机安装vscode server。
2.2 安装后就能在windows vscode中创文件,在虚拟机中运行,可以通过vscode与linux进行交互式开发了。
xdebug - vscode
json
{
"name": "Listen for XDebug on Homestead",
"type": "php",
"request": "launch",
"pathMappings": {
"/home/vagrant/my-api": "G:/hc-my-api"
},
"port": 9003
}/etc/php/8.1/fpm/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.mode = debug
xdebug.discover_client_host = true
xdebug.client_port = 9003
xdebug.max_nesting_level = 512
xdebug.start_with_request = trigger
xdebug.idekey = PHPSTORM插件 目前只能浏览器调试
https://learn.microsoft.com/en-us/windows/wsl/install-manual
