注意! laravel/homestead box
项目地址已经再也不是原来的php
https://atlas.hashicorp.com/laravel/boxes/homestead
而已经变动成html
https://app.vagrantup.com/laravel/boxes/homestead
若是是刚刚接触Laravel
的朋友,请直接按文中步骤操做。
须要更新及重装的朋友们请注意使用第二个地址来进行文中操做。mysql
虽然我一般习惯在Linux
环境下工做,但对于一个从小就接触Windows
的人来讲,可以在Windows
系统环境下进行程序的开发,对于我来讲也不可或缺。那么今天咱们就一块儿来看一下如何在Windows 10
操做系统中进行Laravel
的开发。laravel
若是你的系统上已经安装了PHP
,Apache
或NGINX
,而且有偏心的数据库系统,那么基本上你已经能够开始写代码了。可是我强烈推荐你使用Vagrant
或者Docker
来进行开发,由于不须要独立安装和考虑更新零碎部件的问题,全部工具都已经集成。咱们今天要介绍的是在Homestead
中进行Laravel
的开发。git
若是你有点混乱,不要紧,接着往下看。github
Vagrant
是一款基于Virtual Box
的虚拟机环境,能够安装多种Box
(盒子,即预先配置好的开发环境),达到多种开发环境能够快速切换而且不须要担忧包裹的依赖性问题(Package Dependencies
)。web
Homestead
是Laravel
官方建立的Vagrant
盒子,虚拟机的环境目前搭载的是Ubuntu 16.04 LTS
,已经集成了Laravel
所需的开发环境及工具,包含了最新版本的PHP
,MySQL
以及NGINX
服务器。sql
那么咱们须要作的几个步骤以下:数据库
咱们须要的工具:windows
注意:Laravel
官方推荐的Shell
是Git Bash
。由于Git Bash
自动将~(tilde)
映射到用户根目录下(例如,C:\Users\Eagle
),而若是使用Windows
自带的cmd
,那么须要使用%HOMEDRIVE%%HOMEPATH%
环境变量来进入正确的文件夹。
好了那么咱们开始行动!首先须要咱们先下载Git Bash
:
官网地址:
https://git-for-windows.github.io/
下载地址:
https://github.com/git-for-windows/git/releases/tag/v2.17.0.windows.1
直接下载可能很慢,咱们能够右键复制下载连接,使用迅雷等下载工具下载。
安装Git Bash
很简单,按默认选项安装就可了。
完成后,咱们就能够进行下一步了:
安装Vagrant
及Virtual Box
。
Vagrant
的下载地址:
https://www.vagrantup.com/downloads.html
请选择Windows
版本进行下载并安装。
Virtual Box
的下载地址:
https://www.virtualbox.org/wiki/Downloads
请选择Windows hosts
下载Windows
版本并安装。
注意:若下载最新5.2+
版本的VirtualBox
,请确保你的Vagrant
版本在2.0
以上,由于新版的VirtualBox
与Vagrant
老版本不兼容。
完成以后,咱们就能够开始安装Homestead
了。
若是你在国外,或者你所在的地区对于CLI
方式下载安装Homestead
网速没有问题,那么能够打开Git Bash
,输入
$ vagrant box add laravel/homestead
以上命令将会自动下载及安装Homestead
盒子。
若是以上命令下载速度很慢那么咱们须要切换到手动模式来安装。
首先咱们须要到如下地址下载最新版本(目前为6.1.0
)的Homestead
盒子(可使用下载工具下载):
https://app.vagrantup.com/laravel/boxes/homestead/versions/6.1.0/providers/virtualbox.box https://vagrantcloud.com/laravel/boxes/homestead/versions/6.1.0/providers/virtualbox.box
注意:若是你须要下载不一样版本(或最新版本),请将以上地址中versions/
后的数字版本号替换成相应的版本号。
下载完成后,咱们将下载的文件命名为Homestead-6.1.0.box
。接下来,咱们cd
到相应的文件夹(假设下载文件目录在Downloads
文件夹下,运行如下命令:
$ vagrant box add laravel/homestead ./Homestead-6.1.0.box
输入命令后,会开始导入并安装咱们下载的Homestead
盒子。
完成后,你会发现本身的用户文件夹里多出了一个名为.vagrant.d
的文件夹
C:\Users\MyUserName\vagrant.d
接下来,很是重要的一个步骤:
咱们打开这个文件夹,找到如下路径(请将MyUserName
替换成你的系统用户名):
C:\Users\MyUserName\vagrant.d\boxes\laravel-VAGRANTSLASH-homestead
将文件夹中名为0
的文件夹更名为咱们下载的Homestead
的版本号,即6.1.0
。
而后在该文件夹下新建一个叫metadata_url
的空白文件 (注意不要有任何文件名后缀,若是你的系统设置了自动隐藏后缀名,请将隐藏去掉,确认文件无任何后缀):
文件的内容里,添加如下连接:
https://app.vagrantup.com/laravel/boxes/homestead
注意,不要留任何空白字符,保存文件。
完成以后,咱们就能够开始配置Homestead
了。
在Git Bash
里输入
$ git clone https://github.com/laravel/homestead.git ~/homestead
该命令会将Github
上Homestead
项目配置克隆至本地~/homestead
文件夹中。
进入该文件夹,咱们就能够开始建立Homestead
配置文件了:
$ cd ~/homestead # 建立Homestead初始配置 $ bash init.sh
而后在~/homestead
文件夹中,咱们能够看到多出了一个名为Homestead.yaml
的文件。使用notepad++
打开它,能够看到内容以下:
--- 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.app to: /home/vagrant/Code/laravel/public databases: - homestead
咱们来逐条解读每一段配置的意思。
首先咱们看到
ip: "192.168.10.10"
这个ip
是咱们访问项目时指向的虚拟机地址。
注意,若是你的配置文件地址跟个人不同,不要随意修改,在Linux
系统下,这个ip
会是192.168.10.10
,而Windows
系统下,你的配置中通常会是192.168.1.10
。然后面修改hosts
文件时,请根据你的yaml
文件中的ip
地址作出相应修改。(具体配置请往下看)
接下来咱们看到这段配置:
authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa
这段配置中authorize
后面的文件是用来ssh
进入虚拟机的公钥,而keys
后面的文件是咱们的私钥。
因此咱们须要创建用于ssh
的公钥和私钥且填入相应配置中。
首先咱们须要建立~/.ssh
文件夹:
$ mkdir ~/.ssh $ cd ~/.ssh
接下来,咱们运行生成密钥的命令:
$ ssh-keygen -t rsa
如图,系统会询问咱们将私钥保存在什么位置,这里因为咱们已经处于~/.ssh
文件夹下(上一步cd
操做),咱们能够直接输入咱们须要命名的文件名。
提示:图片中我用的文件夹名为example
,纯粹是用来示例的,请你们将秘钥按上面叙述的步骤放至~/.ssh
文件夹,并将文件名称命名为id_rsa
。这里其实名称能够本身取,可是咱们在演示中直接保留默认文件名(该步骤不输入任何文字直接回车便可)。
上一步完成后,咱们看到系统提示咱们输入密码。这里咱们能够直接回车密码留空,由于咱们在本地开发,能够省去密码这个步骤。
该步骤完成后,咱们会在~/.ssh
目录下看到如下两个文件:
id_rsa.pub
id_rsa
这就是第一段配置中相应的两个文件。因此咱们保留默认配置便可:
authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa
接下来咱们看到这两段配置
folders: - map: ~/Code to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/laravel/public
第一段配置folders
中,map
后指定的文件夹(即~/Code
)将被映射到虚拟机系统中to
后指定的路径,即/home/vagrant/Code
。
这和咱们常见到的和虚拟机系统(guest system
)和宿主系统(host system
)文件夹共享机制相似,因为guest system
不能直接访问host system
中的文件夹(安全隐患),咱们须要把本机的~/Code
文件夹分享至虚拟机中,这样一来咱们在能够在虚拟机系统中访问到咱们的项目文件,而且在~/Code
中所进行的修改会实时同步在虚拟机系统对应的文件中。
第二段配置sites
中,定义了浏览器地址homestead.app
指向虚拟机系统中/home/vagrant/Code/laravel/public
这个文件夹,即Laravel
项目的public
文件夹。这样在浏览器中输入homestead.app
,咱们就能够直接看到项目主页了。
值得注意的是,因为.app
域名的开放以及新的限制,不推荐使用.app
及.dev
做为项目访问地址后缀,可能会出现比较匪夷所思的错误。
以上的文件夹及映射是都是能够根据用户喜爱更改的,好比我喜欢把个人开发文件夹叫作webdev
,在里面我新建了一个叫phantastic.test
的项目,那么以上的配置,我就能够作出相应修改:
folders: - map: ~/webdev to: /var/www sites: - map: phantastic.test to: /var/www/phantastic/public
这里我将~/webdev
文件夹映射为虚拟机内的/var/www
文件夹,这样一来,我就能够在虚拟机里/var/www
路径下看到host
系统中~/webdev
文件夹下的全部文件。
这一步完成后,咱们还有一个很是重要的步骤。
在hosts
文件中添加一行:
192.168.10.10 phantastic.test
注意:请根据你yaml
文件中的ip
进行相应的修改,例如Windows
环境下,一般为192.168.1.10
。
Windows
的hosts
文件在如下路径:
C:\Windows\System32\drivers\etc\
用notepad++
打开便可:
# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost # 添加上这一行,将phantastic.test替换成本身的项目名称 192.168.10.10 phantastic.test
这里咱们须要将项目地址解析到对应的虚拟机IP
(192.168.10.10)。
而后咱们以管理员权限保存hosts
文件。
接下来咱们来看最后一段配置:
databases:
- homestead
这段配置指定了咱们虚拟机中MySQL
的数据库名,咱们每新添加一个数据库名字,那么Homestead
将会自动建立一个该名字的数据库来供咱们操做。
在这里,我添加了两个新的数据库,并删除了原始配置中的homestead
数据库:
databases: - phantastic - eagle
注意:配置文件中不要使用tab
来留空,不然可能会报错(能够用空格对齐)。
虚拟机环境下默认的MySQL
服务器管理员用户名为homestead
,密码是secret
。推荐使用phpmyadmin
或adminer.php
来进行数据库管理,固然若是你hardcore
,直接mysql -u homestead -p
也能够。
另外每一个项目若是须要更改项目默认使用的数据库等配置,能够在建立Laravel
项目后配置根目录下的.env
文件
详情请查看 Laravel 5+ .env 环境配置文件详解
至此,Homestead
就配置完成了。咱们将Homestead.yaml
保存,而后尝试启动虚拟机!(激动吗;)?)
以管理员的身份打开Git Bash
,输入
$ cd ~/homestead
$ vagrant up
咱们会看到,Vagrant
已经顺利运行了(Windows
环境下vagrant up
不须要加sudo
)!
接下来,要进入Homestead
,咱们输入
$ vagrant ssh
进入虚拟机环境后:
# cd 进入咱们共享的文件夹 (请根据你配置中的映射目录来输入相应文件夹) $ cd /var/www # 建立一个新的laravel项目 $ laravel new eagles_new_project
如今咱们就能够开始Laravel
的开发了!
注意:若是你vagrant up
后,卡在ssh
命令,好久后显示超时,那么请重启系统进入BIOS
,将Intel
的VT-x
功能开启并保存再继续便可。
转 : https://blog.sbot.io/articles/1