Windows 10下Laravel Homestead11.3.3 virtualbox10.1.1 安装及配置笔记

Laravel Homestead简介

Laravel Homestead是Laravel官方为开发者提供的一套完善的重量级本地开发环境,它是一个打包好各种 Laravel 开发所需软件和工具的 Vagrant 盒子,该盒子为我们提供了一个优秀的开发环境,有了它,我们不再需要在本地环境安装 PHP、Composer、Nginx、MySQL、Memcached、Redis、Node 等其它工具软件,我们也完全不用再担心误操作搞乱操作系统 —— 因为 Vagrant 盒子是一次性的,如果出现错误,可以在数分钟内销毁并重新创建该 Vagrant 盒子!

Laravel Homestead的预装软件

Homestead 可以运行在 Windows、Mac 以及 Linux 等主流操作系统上,预装的软件和工具列表如下:

  • Ubuntu 18.04
  • Git
  • PHP 7.4
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • MySQL
  • lmm(用于 MySQL 或 MariaDB 数据库快照)
  • SQLite3
  • PostgreSQL
  • Composer
  • Node(With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • avahi
  • ngrok
  • Xdebug
  • XHprof/Tideways/XHGui
  • wp-cli

可选软件

此外,你还可以选择性安装以下软件:

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • Crystal & Lucky Framework
  • Docker
  • Elasticsearch
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • MariaDB
  • MinIO
  • MongoDB
  • MySQL 8
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • RabbitMQ
  • Solr
  • Webdriver & Laravel Dusk 相关工具

安装Laravel Homestead 需要的软件及工具

1、Git                (版本2.20.1.windows.1)
2、VirtualBox    (版本6.1.16-140961-Win)
3、Vagrant        (版本2.2.13_x86_64)
4、Homestead Box    (版本10.1.1)

安装路径不要有中文,偶尔识别不到路径会悲剧的。。

1、安装VirtualBox虚拟机 官网地址:https://www.virtualbox.org/

进入官网单击Download按钮进入下载页面,选择windows版本进行下载,默认安装。

2、安装Vagrant 虚拟机管理工具 官网地址:https://www.vagrantup.com/

进入官网单击Download按钮进入下载页面,选择windows版本进行下载,默认安装。

3、安装Laravel Homestead

我们就可以开始安装Homestead了。安装方式有两种:

第一种是在线安装方式:

如果你觉得你的网速足够快,可以在线下载Homestead的box(服务器在国外),cmd终端下输入 vagrant box add lavavel/homestead 即可下载最新版本的Homestead盒子。

不一会儿界面上会出现Homestead盒子下载地址,我这边下载慢,直接复制用迅雷下载的。换后速度飞快。。。

第二种是离线安装方式:

1)下载Laravel Homestead 的box盒子

使用离线安装的方式,我们首先要去下载一个最新版本的Laravel Homestead 的盒子,其目前最新版本为10.1.1。

下载地址:https://vagrantcloud.com/laravel/boxes/homestead/versions/10.1.1/providers/virtualbox.box
该盒子的大小为1.66GB,建议大家使用迅雷等下载工具进行下载。

下载慢的可以用我分享的百度网盘方式下载  链接:https://pan.baidu.com/s/1qQMJnMqXvfxwmjX3NOcJLw  提取码:dzz1 

注意:如果你需要下载不同版本(或最新版本),请将以上地址中versions/后的数字版本号替换成相应的版本号

下载完成后,我们将下载的文件命名为Homestead-10.1.1.box。

2)安装Laravel Homestead

cmd终端下进入E:\homestead (我的是在E:\homestead下安装的,Homestead-10.1.1.box也放到这个文件夹了), 执行 vagrant box add laravel/homestead Homestead-10.1.1.box 后,会开始导入并安装我们下载的Homestead盒子。

稍微等待一会儿之后,Laravel/Homestead盒子就添加完成了。

此时,C:\Users\Administrator\.vagrant.d 里面有Laravel/Homestead盒子的一些相关文件。

使用vagrant box list命令可以看到,Vagrant盒子列表中就有了一个名为laravel/homestead的box盒子。

但是,列表中显示的laravel/homestead的版本号为0,我们要把它改成正确的版本号(10.1.1),可以打开C:\Users\Administrator\.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead文件夹,

将文件夹中名为0的文件夹改名为我们下载的Homestead的版本号,即10.1.1。

然后在该文件夹下新建一个叫metadata_url的空白文件 (注意不要有任何文件名后缀,如果你的系统设置了自动隐藏后缀名,请将隐藏去掉,确认文件无任何后缀):

文件的内容里,添加以下链接: https://app.vagrantup.com/laravel/boxes/homestead

保存好之后,我们再次使用vagrant box list 命令查看盒子列表,就会发现,laravel/homestead的版本号已经正确显示了。

vagrant up启动虚拟机的时候会检查版本


至此,Laravel Homestead盒子安装完毕。

4、配置Laravel Homestead

输入 git clone https://github.com/laravel/homestead.git ~/homestead 拉取 homestead

  • 该命令会将Github上Homestead项目配置克隆至本地~/homestead文件夹中。 将里面所有的文件复制到E:\homestead之中

接下来,我们就可以开始创建Homestead配置文件了:

在E:\homestead目录中点击Git Bash进入,执行命令 bash init.sh  (执行shell脚本,需要使用到"Git Bash")

然后在E:\homestead文件夹中,我们可以看到多出了一个名为Homestead.yaml的文件。使用文本编辑器打开它,可以看到内容如下:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code
      to: /home/vagrant/code

sites:
    - map: homestead.test
      to: /home/vagrant/code/public

databases:
    - homestead

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# zray:
#  If you've already freely registered Z-Ray, you can place the token here.
#     - email: foo@bar.com
#       token: foo
#  Don't forget to ensure that you have 'zray: "true"' for your site.
  • 配置项含义:
ip: "192.168.10.10"
  • 指的是虚拟机的IP地址,初次使用homestead的小伙伴可以不用修改这个地址。
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
  • uthorize后面的文件是用来ssh进入虚拟机的公钥,而keys后面的文件是我们的私钥。
folders:
    - map: ~/code
      to: /home/vagrant/code
  • folders用来设置本机和虚拟机的同步文件夹,map后指定的文件夹(即~/Code)将被映射到虚拟机系统中to后指定的路径,即/home/vagrant/Code。
    我们把本机Code文件夹同步至虚拟机中,这样一来我们在可以在虚拟机系统中访问到我们的项目文件,并且在~/Code中所进行的修改会实时同步在虚拟机系统对应的文件中。
sites:
    - map: homestead.test
      to: /home/vagrant/code/public
  • sites用来设置站点域名地址的映射,这里是指将homestead.test域名映射到/home/vagrant/code/public文件夹。这样,我们在浏览器地址栏中输入http://homestead.test就可以访问 /home/vagrant/code项目的首页了。
databases:
    - homestead
  • 这里指虚拟机的数据库名称。

注:虚拟机环境下默认系统登录用户名:vagrant 密码:vagrant;MySQL管理员用户名为homestead,密码是secret。

要想让你设置的域名生效,还要在hosts文件中添加域名指向: 192.168.10.10  homestead.test

*hosts文件的路径:C:\Windows\System32\drivers\etc*

5、建立用于ssh的公钥和私钥

今后我们要通过ssh连接homestead虚拟机的话,需要有连接虚拟机的公钥和私钥,下面我们就来建立公钥和私钥。

首先,我们在E:\homestead文件夹中启动Git Bash,执行命令mkdir .ssh,创建.ssh文件夹;

mkdir  .ssh
  • 接着,执行命令cd .ssh,进入.ssh文件夹中;
cd .ssh
  • 接下来,我们运行生成密钥的命令:
ssh-keygen -t rsa
  • 系统提示输入保存秘钥的文件路径,输入路径 /e/homestead/.ssh/id_rsa ,按回车。接下来的两个提示直接按回车,最后显示秘钥创建成功,就OK了。

打开E:\homestead下的.ssh文件夹,你会发现多了两个文件,这就是我们刚才创建的公钥和私钥

创建好公钥和私钥后,别忘了在Homestead.yaml文件中把它们的路径设置好。

接下来,我们可以尝试启动虚拟机了!

6、启动Homestead虚拟机

 在E:\homestead文件夹中以管理员身份启动Git Bash,打开Git窗口,执行命令 vagrant up 来启动虚拟机。

如果一切正常,Homestead虚拟机将成功启动。

此时,virtualbox中也将出现一个新的虚拟机homestead-7

输入域名http://homestead.test/ ,也能访问,只是由于我们暂时没有创建项目,系统显示“No input file specified.”

在这里插入图片描述

7、创建一个laravel项目

创建一个名为blog的laravel项目

composer create-project --prefer-dist laravel/laravel blog

项目创建好后配置sites

vagrant reload命令重启一下虚拟机。

此时,打开域名http://homestead.test/ ,就可以访问我们新创建的blog项目的首页了~~

8、vagrant ssh连接虚拟机

vagrant up命令启动homestead虚拟机后,使用vagrant ssh 命令可以连接虚拟机

至此,Homestead开发环境的安装及配置就全部完成了!

安装过程中遇到过的问题

1)vagrant up启动时出现了如下错误信息:

==> homestead-7: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

/sbin/ifdown 'eth1' || true
/sbin/ip addr flush dev 'eth1'
# Remove any previous network modifications from the interfaces file
sed -e '/^#VAGRANT-BEGIN/,$ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces.pre
sed -ne '/^#VAGRANT-END/,$ p' /etc/network/interfaces | tac | sed -e '/^#VAGRANT-END/,$ d' | tac > /tmp/vagrant-network-interfaces.post
cat \
  /tmp/vagrant-network-interfaces.pre \
  /tmp/vagrant-network-entry \
  /tmp/vagrant-network-interfaces.post \
  > /etc/network/interfaces
rm -f /tmp/vagrant-network-interfaces.pre
rm -f /tmp/vagrant-network-entry
rm -f /tmp/vagrant-network-interfaces.post

/sbin/ifup 'eth1'

Stdout from the command:

Stderr from the command:

bash: line 5: /sbin/ifdown: No such file or directory
bash: line 19: /sbin/ifup: No such file or directory

此时可以通过vm virtualbox登录进去 默认登录用户 vagrant 密码 vagrant,  执行 sudo apt-get install ifupdown 可以修复。 然后cmd终端执行vagrant reload可以发现不再报错

2)virtualbox无法打开虚拟机,"error in supR3HardenedWinReSpawn" 

解决方法:
那是因为vboxdrv服务没有安装或没有成功启动,
64位的系统经常这样,
找到安装目录下的vboxdrv文件夹drivers\vboxdrv,


右击VBoxDrv.inf,选安装,然后重启。

3)vagrant ssh进入Homestead之后发现php版本太高了

解决方法: 直接运行命令php70 、php73等

Homestead 定义了一些可以直接在虚拟机中使用的命令,比如想切换到 7.0 版本直接执行 php70
在这里插入图片描述

4)PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes)

php.ini中 memory_limit设置小了,

1、直接修改php.ini,重启php-fpm生效

2、php -d memory_limit=-1 /usr/bin/composer install  

路径 /usr/bin/composer 通过whereis composer可找到

5)丢失/etc/nginx/sites-enabled/homestead.test导致 访问homestead.test失败

补上/etc/nginx/sites-enabled/homestead.test 或者配置nginx.conf

sudo vim /etc/nginx/sites-enabled/homestead.test 或者 sudo vim /etc/nginx/conf.d/nginx.conf 加入以下 

server {
    listen 80;                                                                                                                                                             
    server_name .homestead.test;                                                                       
    root "/home/vagrant/gosunoa/public 替换成自己的项目";                                                               
                                                  
    index index.html index.htm index.php;                                                              
                                                                                                       
    charset utf-8;                                                                                     
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;                                                 
                                                                                                       
    }                                                                                                  
                                                                        
    location = /favicon.ico { access_log off; log_not_found off; }                                     
    location = /robots.txt  { access_log off; log_not_found off; }                                     
                                                                                                       
    access_log off;                                                                                    
    error_log  /var/log/nginx/homestead.test-error.log error;                                          
                                                                                                       
    sendfile off;                                                                                      
                                                                                                       
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;                                                      
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;                                                
        fastcgi_index index.php;                                                                       
        include fastcgi_params;                                                                        
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                              
                                                                                                       
                                                                                                       
        fastcgi_intercept_errors off;                                                                  
        fastcgi_buffer_size 16k;                                                                       
        fastcgi_buffers 4 16k;                                                                         
        fastcgi_connect_timeout 300;                                                                   
        fastcgi_send_timeout 300;                                                                      
        fastcgi_read_timeout 300;                                                                      
    }                                                                                                  
                                                                                                       
    location ~ /\.ht {
        deny all;                                                                                      
    }                                                                                                                                                                                                                                          
} 

重启nginx,有其他报错。。。一般是nginx的配置文件中的user vagrant;没权限导致的。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值