Laravel学习记录
写在前面
因为laravel是一个非常牛逼的php框架,但是中文学习资源实在是有点呵呵。只能说这是个门槛很高,需要集合很多知识才能摸清楚的框架,和thinkphp对比,大概就像是Linux和Windows的区别。所以打算写这个blog记录自己从萌新入门Laravel的过程。目前已经学习过了php的基础语法和一些内置函数,高级特性也有所了解。前端的html,css,js都是快速过了一遍,计算机网络的知识基本等于零,能看懂http请求头。做一个类似sina blog的东西来正式进入laravel的世界吧。
Laravel简介
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
版本选择
新手不多说,刚好最新的LTS发了,laravel5.5是最佳选择
常用链接
Laravel官网
Laravel中文社区
Laravel 5.5 LTS中文文档
PHP手册
有不懂的翻laravel手册,PHP手册。简洁一点,实战开始。
编辑器
流行编辑器很多,我已经用过sublime和PHPStorm.这个实战是参考教程来做的,所以选和教程一样的编辑器吧。一样是很流行的Atom。Atom官网直接download贼坑,不按常理出牌直接默认安装到C盘。百度云链接Atom。这样你想解压到哪就解压到哪。
安装完毕后,将Atom添加到PATH的系统变量里,这样可以在命令行运行Atom命令。具体配置方法:
打开桌面,右击计算机->属性->高级系统设置->环境变量->找到系统变量->Path->编辑->新建 然后把你解压的Atom根目录放进去。点击确认就完成了PATH环境变量的配置
命令行工具
好吧虚拟机管理,Git,部署到线上都是需要会命令行的。作为一个程序员也得学这些了吧,完全OK。成为一名优秀的程序员的第一步开始了,选一个好的命令行工具。Windows环境下,配备GitHub出品的Git for Windows.
配置环境
Homestead
我只能说搭开发环境是个操蛋的事情,而且有人用的mac,有人用的win,有人用linux,所以说搭起来就得折腾个半天之后用起来还老出各种bug让人想放弃,门槛太高了。Laravel用了一个封装好的Vagrant,解决了这一问题。Vagrant是基于VituralBox的一款用于创建和部署虚拟开发环境的工具,虚拟机大家应该不陌生。Homestead是一个基于Ubuntu的虚拟机,包含了所有Laravel开发时需要用到的东西,同时还会装上很多开发工具来辅助Laravel进行项目开发,包括PHP7,Nigix,Redis,Memcached,MySQL,Git,Node.js,NPM等等。这些词听过一些,不虚,实战一波应该就稳多了。而且Homestead确实是实际生产中必备的环境,必须掌握的技术栈。
步骤
- 安装 VirtualBox
- 安装 Vagrant
- 导入Homestead Box 虚拟盒子
- 安装Git
- 安装Homestead管理脚本
- 配置Homestead.yaml文件
启动Homestead虚拟机
请做好准备,这个环境配置有点复杂的安装VirtualBox
VirtualBox是一款虚拟机软件,支持大部分主流系统。win10务必安装最新版本的virtualbox
安装Vagrant
Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant让你通过编写一个Vagrantfile文件控制虚拟机的启动、虚拟网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。——laravel入门教程
win10请务必安装最新版本的vagrant
Homestead组成
Homestead包含两部分:
- Homestead管理脚本
由Ruby和Shell脚本编写而成,通过傻瓜配置完成复杂的任务。常用的任务有:IP配置,端口映射,Nginx Site创建,数据库创建,主机文件夹挂载到虚拟机等。所有Homestead的版本历史:Homestead - Homestead Box虚拟机盒子
homestead.box 虚拟机盒子是提前打包好的 Vagrant Box 虚拟机盒子,里面预装了 Nginx Web 服务器、PHP 7.0、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。
安装和使用Homestead
步骤如下:
- 下载和导入 Homestead Box 虚拟机盒子;
- 安装 Git ,为下载 Homestead 管理脚本做准备;
- 使用 Git 下载 Homestead 管理脚本;
下载导入Homestead Box
本次实战特配Homestead虚拟机盒子,建议使用迅雷离线下载的方法下载此盒子。Homestead虚拟机盒子。如果是胖科的同学可以开了5.2G频段或者接网线用网络通的9号出口去下载,速度大概在10M/s.
特质版的特点:
- Composer加速,配置了Composer中国全量镜像
- 默认集成Heroku工具
- 默认继承Yarn,并为Yarn加了淘宝的镜像加速
- 使用CNPM对NPM加速
下载成功后,对其进行zip解压操作,解压成功后看到目录lt-homestead-3-0-0-2017082400
,此目录下包含两个文件:
- homestead-virtualbox-3.0.0.box(教程定制化过的 Homestead 盒子)
- metadata.json(盒子的导入配置文件)
在解压目录lt-homestead-3-0-0-2017082400
中运行
命令导入Box:vagrant box add metadata.json
就完成了Homestead Vagrant 盒子的导入
导入成功后,lt-homestead--0-0-07082400
可以删除
安装Git
因为已经选了Git for Windows作为默认命令行工具,该工具已经默认安装好了Git.使用以下命令查看是否安装成功git --version
成功显示即可
下载Homestead管理脚本
使用Git下载定制版的Homestead:
cd C:\Users\username
git clone https://git.coding.net/summerblue/homestead.git Homestead
下载完成后使用命令行进入Homestead目录,再使用Git检出我们需要的Homestead版本:
cd C:\Users\username\Homestead
git checkout v5.4.0
然后初始化Homestead:bash init.sh
此时Homestead目录下生成了三个文件:
- Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
- after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
- aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义。
配置Homestead.yaml
配置过程有以下几点:
- 虚拟机设置
- SSH 秘钥登录配置;
- 共享文件夹配置;
- 站点配置;
- 数据库配置;
- 自定义变量;
之前已经配好了Atom,直接用Atom命令打开Homestead.yaml:atom Homestead.yaml
虚拟机设置
Homestead 支持我们对虚拟机的 IP,内存,CPU,虚拟机的默认提供者进行配置。这里我们基本不需要做任何配置,因此可以跳过。
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
SSH密钥登陆配置
- authorize 选项指定登陆虚拟机授权连接的公钥文件,此文件填的是主机上的公钥文件地址,虚拟机初始化时,文件内容会被复制到虚拟机的
/home/vagrant/.ssh/authorized_keys
文件中,从而实现SSH免密码登陆。这里我们默认填写即可authorize: ~/.ssh/id_rsa.pub
- keys 是数组选项,填的是本机的SSH私钥文件地址。虚拟机初始时会把私钥文件复制到虚拟机的
/home/vagrant/.ssh/
文件夹中,从而虚拟机共享主机上的SSH私钥文件。这里将公钥和私钥一起同步到虚拟机中:
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
ctrl s保存后,来生成SSH Key.生成前可以用命令ls -al ~/.ssh
检查主机上是否已经生成过SSH Key.如果存在id_rsa 和 id_rsa_pub的话,就不用生成SSH Key了,否则:执行以下命令ssh-keygen -t rsa -C "[email protected]"
其中把邮箱改成自己的
一路回车下去选择的就是默认值,最后生成完毕后再使用ls -al ~/.ssh
,即可看到id_rsa 和 id_rsa_pub两个文件。
共享文件夹配置
Atom Homestead.yaml
再打开配置文件
folders用来指定要映射到Homestead虚拟机上的文件夹:
- map : 对应的是本地文件夹,格式比如 C: /Users/Homestead/Code
- to : 对应的时Homestead上的文件夹
配置如下:
folders:
- map: ~/Code
to: /home/vagrant/Code
在本地创建一个~/Code
:
cd ~
mkdir Code
cd Code/
explorer .
在命令行中用explorer .打开此目录:
实战中的所有Laravel项目都是放在该文件夹下,Homestead会把该文件夹下的项目自动映射到虚拟机的 /home/vagrant/Code 文件夹下
站点配置
站点配置允许在你的主机里,通过域名来访问虚拟机里的Laravel应用。sites的配置显示,将homestead.app映射到一个Laravel项目的public目录上。
sites:
- map:homestead.app
to:/home/vagrant/Code/Laravel/public
这一行配置让Homestead创建一个Niginx站点,并且把Web Root配置到指定目录下。Laravel应用的Nginx站点Web Root配置,默认就是在根目录下的public目录。(这一段要是看不懂没关系,以后回过头来就看懂了)现在Laravel项目还没创建,不着急,之后会创建的。此外,主机里直接访问虚拟机的站点需要绑定hosts来实现:利用hosts文件绑定homstead.app到虚拟机IP192.168.10.10上。用命令行打开配置文件:atom C:atom C:/Windows/System32/Drivers/etc/hosts
在文件的最后一行添加:192.168.10.10 homestead.app
(如果当前用户权限不够,修改hosts文件的访问权限后再修改即可)
OK,站点配置完毕,此后就可以通过浏览器访问homestead.app站点了
数据库配置
为Homestead制定数据库名称,默认名称是homestead
databases:
- homestead
自定义变量
如果要自定义一些在虚拟机上可以使用的变量,可以在variables中定义。
variables:
- key:APP_ENV
value:local
萌新用不到此功能
好了,漫长的配置Homestead.yaml工作完成了,happy
运行Vagrant
Homestead的配置完成了,运行Vagrant来启动虚拟机。常用的vagrant命令有
- vagrant init : 初始化 vagrant
- vagrant up : 启动 vagrant
- vagrant halt : 关闭 vagrant
- vagrant ssh : 通过 SSH 登录 vagrant(需要先启动 vagrant)
- vagrant provision : 重新应用更改 vagrant 配置
- vagrant destroy : 删除 vagrant
启动Homestead:cd ~/Homestead && vagrant up
第一次启动时,Vagrant会做几件事情:
- 将导入的Homestead虚拟机盒子为模板,新建一台虚拟机
- 按照Homestead.yaml里的配置信息对这台新的虚拟机进行配置
- 配置完成后启动虚拟机
成功启动后,在~/Homestead目录里通过以下命令来SSH登陆到Homestead虚拟机里:vagrant ssh
登陆成功后,终端界面中输入的命令就都会运行在Homestead虚拟机里。
输入exit
可以退出虚拟机。
最后,固安比vagrant使用命令vagrant halt
如果进行到了这一步,恭喜,咱们配置任务大功告成
浏览器选择
选Chrome,简洁强大,别问为什么。很好,Laravel第一关被攻克了。