1

laravel学习笔记,重新梳理知识点。

一、环境配置

1、编辑器选用

  • Atom

  • PHPStorm

  • SublimeText

Atom 是由 GitHub 官方在 2014 年 2 月推出的一款开源的跨平台代码编辑器,这意味着你可以在流行的系统如 OS X、Windows、或者 Linux 上安装和使用 Atom。由于 Atom 的界面优雅、易上手、插件丰富等优点,使得其在发布后受到圈内不少程序员的追捧和赞赏。我平时用的是PHPStorm和Sublime开发,这次,抱着拥抱新鲜事物的态度,这里我们使用强大的Atom编辑器

2、开发环境搭建

集成开发环境:VirtualBox+Vagrant+Homestead

  • 安装 VirtualBox(V5.1.4)

  • 安装 Vagrant (1.9.0)

  • 安装 Homestead

  • 安装 Git

Vagrant 是一个用于创建和部署虚拟化开发环境的工具,其依赖于 VirtualBox 虚拟机,致力于帮助开发者快速构建一个环境统一的虚拟系统。Vagrant 最强大的地方是在于它在构建虚拟系统时的快捷简便,使开发者可以在短短几分钟内完成一个虚拟系统的删除与构建。

Homestead 是一个基于 Ubuntu 构建的虚拟机,它包含了所有 Laravel 开发时需要用到的东西,你可以很轻松的通过指定的 Laravel 版本来找到相对应版本的 Homestead包并进行安装。

Mac OS X / Linux
在解压目录(lt-homestead-0-6-0-2016122800)下运行以下命令添加 Box:

> vagrant box add metadata.json

clipboard.png

然后安装Homestead
接下来,使用 Git 下载 Homestead:

> cd ~
> git clone https://github.com/laravel/homestead.git Homestead

完成之后我们需要进入 Homestead 目录,使用 Git 检出我们需要的 Homestead 版本:

> cd Homestead
> git checkout v3.1.0

用脚本生成 Homestead.yaml 文件:

> bash init.sh

运行完上面命令之后,我们即可在 ~/.homestead 目录下找到生成的 Homestead.yaml 文件。

查看 Homestead.yaml 文件:

cat ~/.homestead/Homestead.yaml

配置 Homestead
然后对Homestead.yaml 文件进行配置,可以使用编辑器打开该文件。

vim ~/.homestead/Homestead.yaml

具体请看下边的Homestead.yaml配置结果:

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

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

# folders 来指明本机要映射到 Homestead 虚拟机上的文件夹。
# map 对应的是我们本机的文件夹,to 对应的是 Homestead 上的文件夹。
folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

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

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

配置 SSH

Homestead 需要一个 SSH Key 来用于与虚拟机进行连接,Homestead 默认假定这个密钥会被放在 ~/.ssh 文件夹下。

我们首先通过命令查看是否已经有SSH,如果没有则需要生成。

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

SSH Key 需要我们自己手动生成。如果你之前使用过 Git 并对 SSH Key 进行过配置,那么这一项你可以直接跳过。

我们可以通过运行下面命令来生成 SSH Key

$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.

出现下面提示信息时,按回车键将 SSH Key 保存到默认位置:

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

为 SSH Key 设置密码,不输入则默认为空密码:

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

配置网站映射域名

通过映射域名的配置,便可以在页面上通过该域名来访问 Laravel 应用,如下面 sites 配置所示,将 homestead.app 映射到一个 Laravel 项目的 public 文件夹下,通过增加这行配置之后,如果你在 Code 文件夹中有创建一个叫 Laravel 的项目,则可以通过 http://homestead.app 来访问该 Laravel 应用。

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

需要注意的一点是,homestead.app 需要与 hosts 文件的 ip 地址相对应。
修改完Homestead.yaml文件后,需要重新加载配置文件信息才能生效。.

➜  ~ atom ~/.homestead/Homestead.yaml
➜  ~ cd Homestead
➜  Homestead git:(7924ab4) vagrant reload --provision

然后再Hosts配置域名mac的hosts位置: /etc/hosts

192.168.10.10  homestead.app

配置详情请查看 https://laravel-china.org/上的教程。

3.开启Vagrant

cd ~/Homestead && vagrant up

clipboard.png

成功启动后,通过 SSH 来登录 Homestead:

> vagrant ssh

clipboard.png

最后尝试退出虚拟机,并关闭Vagrant

vagrant@homestead:~$ exit

Homestead git:(7924ab4) vagrant halt

二、创建Laravel应用

1、Composer下载Laravel安装包

vagrant ssh 进入到安装的虚拟开发环境中,然后使用cd Code命令切换到Code目录下,再使用Homestead集成的Composer命令来下载Larvel5.1安装包,由于环境中的Composer使用的是国内镜像Packagist/Composer 中国全量镜像,所以,下载速度会非常快的。

// 切换到Code目录下
vagrant@homestead:~$ cd Code
vagrant@homestead:~/Code$ pwd
/home/vagrant/Code
vagrant@homestead:~/Code$ composer create-project laravel/laravel Laravel --prefer-dist "5.1.*"

clipboard.png

使用composer安装好Laravel后,然后用配置的域名访问页面:
clipboard.png

这里需要说明一点:在虚拟路径/home/vagrant/Code中用composer下载的资源,其实在我们本地中与之对应的映射路径为~/Code,Homestead 将会把该文件夹下的项目自动映射到本地的Code文件夹上,所以,我们在本地的编辑器中开发Code文件夹中的代码,在虚拟机的服务器测试本地代码,这样就有了一个统一的环境,也不用担心在Mac上安装太多的东西搞乱系统,这就是使用虚拟机与Vagrant协同开发的好处。

clipboard.png

2、小试牛刀

修改首页视图文件resources/views/welcome.blade.php,输出自己的信息。

<!DOCTYPE html>
<html>
    <head>
        <title>Laravel</title>

        <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">

        <style>
            html, body {
                height: 100%;
            }

            body {
                margin: 0;
                padding: 0;
                width: 100%;
                display: table;
                font-weight: 100;
                font-family: 'Lato';
            }

            .container {
                text-align: center;
                display: table-cell;
                vertical-align: middle;
            }

            .content {
                text-align: center;
                display: inline-block;
            }

            .title {
                font-size: 96px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="content">
                <div class="title">Laravel 5, Hey Corwien !</div>
            </div>
        </div>
    </body>
</html>

clipboard.png

三、使用Git管理项目版本

使用git可以对我们的代码进行版本控制,如果万一误删了代码想回到之前的情况,则可以通过版本控制进行回滚。

1、git 配置

vagrant@homestead:~/Code$ git config --global user.name "Corwien"
vagrant@homestead:~/Code$ git config --global user.email corwien@xxx.com
vagrant@homestead:~/Code$ git config --global push.default simple

--global 选项代表对 Git 进行全局设置。

2、github托管项目

我们这里将项目推到Github上进行托管,不过先需要配置,我们需要先生成公钥,再把公钥添加到 GitHub 账号上。用你的github邮箱需要在本地虚拟环境中生成一个公钥SSH Key,才可以将其Push到github上。

vagrant@homestead:~/Code$ ssh-keygen -t rsa -b 4096 -C "corwien@XXX.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):
/home/vagrant/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.

接下来将 SSH Key 添加到 ssh-agent 中:

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa

最后我们需要将公钥添加到 GitHub 账号,可参照下面的 GitHub 官方指南完成配置:
Mac 用户配置指南

这里简单的概括为两个步骤:

1.获取生成的SSH key,即这个文件 ~/.ssh/id_rsa.pub中的内容,使用cat命令将文件内容打印出来,然后再复制。

vagrant@homestead:~/Code$ cat ~/.ssh/id_rsa.pub

clipboard.png

2.登录Github,进入个人Setting页,将复制的内容粘贴到下边的Key框中即可,然后点击Add SSH Key 按钮,这时候,会让你重新输入登录密码进行确认。

clipboard.png

3、将本地代码推送到Github

1.Github上创建一个git仓库
我这里建的仓库地址为:

https://github.com/yourname/hello_laravel.git

2.初始化git
先切换到Code/laravel目录下,然后进行初始化git init

vagrant@homestead:~/Code$ cd laravel
vagrant@homestead:~/Code/laravel$ git init
Initialized empty Git repository in /home/vagrant/Code/laravel/.git/

3、将项目所有文件纳入到 Git 中:

vagrant@homestead:~/Code/laravel$ git add -A

4、检查 Git 状态:

vagrant@homestead:~/Code/laravel$ git status

上面命令将会向你输出存放在 Git 暂存区的文件,这意味着这些文件还未真正提交到 Git 中。

5、保留改动并提交:

vagrant@homestead:~/Code/laravel$  git commit -m "Initial commit"

上面这行命令会将暂存区的文件都提交到 Git,-m 选项后面带的参数表示本次提交的简单描述。

6、将代码上传到github

$ git remote add origin git@github.com:your_username/hello_laravel.git
$ git push -u origin master

至此,项目已成功托管到 GitHub 上了,^_^

clipboard.png

以后本地代码有改动,我们只需要下面三个命令即可推送到Github:

// 1、保存到暂存区:
vagrant@homestead:~/Code/laravel$  git add -A

// 2.输入描述信息并提交到本地的 Git
vagrant@homestead:~/Code/laravel$  git commit -m "Describ something"

// 3.将代码推送到 GitHub的主干分支
vagrant@homestead:~/Code/laravel$ git push origin master

在本地对首页视图文件resources/views/welcome.blade.php进行修改,然后推送到Github,进行测试下。
clipboard.png

查看Gihub仓库是否有提交的内容:

clipboard.png

Perfect,一切都很顺利,提交成功!

4.小结

推送到Github的两种不同方式:

一、在推送到github时需要输入账号和密码:

git remote add origin https://github.com/corwien/sample.git

vagrant@homestead:~/Code/sample$ git remote add origin https://github.com/corwien/sample.git
vagrant@homestead:~/Code/sample$ git push -u origin master
Username for 'https://github.com': corwien
Password for 'https://corwien@github.com':
Counting objects: 102, done.

二、不需要输入账号和密码,会从本地的公钥读取到你在Github中设置的权限信息,以后用这种方式,不要输密码。

git remote add origin git@github.com:<username>/sample.git

$ git remote add origin git@github.com:<username>/sample.git
$ git push -u origin master

如果你使用的是第一种方法,那么可以使用下面的命令更换远程库的提交方法:

vagrant@homestead:~/Code/sample$ git remote add origin git@github.com:corwien/sample.git
fatal: remote origin already exists.
vagrant@homestead:~/Code/sample$ git remote rm origin
vagrant@homestead:~/Code/sample$ git remote add origin git@github.com:corwien/sample.git
vagrant@homestead:~/Code/sample$

四、使用Heroku部署上线

Heroku是一个支持多种编程语言的 PaaS(Platform-as-a-Service)。在 2010 年被 Salesforce 收购。Heroku 作为最开始的云平台之一,从 2007 年 6 月起开始开发,当时它仅支持 Ruby,后来增加了对 Java、Node.js、Scala、Clojure、Python 以及 PHP 和 Perl 的支持。由于其应用部署流程异常简单,因此倍受广大开发者欢迎。

有关账号及公钥生成,推送到服务器请看Laravel-China社区的教程,注册成功后,会开一个空间服务及域名https://corwien.herokuapp.com/,这个是我的项目在线访问地址。

// 重新命名:
vagrant@homestead:~/Code/laravel$ heroku rename corwien
Renaming fast-bayou-54271 to corwien... done
https://corwien.herokuapp.com/ | https://git.heroku.com/corwien.git
Git remote heroku updated
 ▸    Don't forget to update git remotes for all other local checkouts of the app.
vagrant@homestead:~/Code/laravel$

代码推送成功之后,可以使用此命令来快速打开线上应用:

$ heroku open

注意向github和heroku推送代码的方法不同:

git push heroku master  //  向heroku推送
git push origin master  //  向github推送

https://corwien.herokuapp.com  //在线访问域名
https://git.heroku.com/corwien.git // heroku仓库

使用域名访问:

clipboard.png

五、小结

至此,我们的Laravel开发环境搭建完成,用VirtualBox+Vagrant+Homestead搭建集成开发环境,我们不再需要在机上安装PHP、HHVM、web服务器和其它的服务器软件集成环境,使用Laravel官方提供的Laravel Homestead,真正的开箱即用,环境搭建好之后,在搭建的虚拟环境中用Composer来下载Laravel项目,然后我们用Git进行版本控制,并将代码托管到Github上,最后将开发的项目应用到生成环境中,使用heroku部署一个线上代码,可以在公网上通过域名访问。

相关文章:
IOS博客项目搭建-将项目推送到Github进行管理
解决向github提交代码是老要输入用户名密码


Corwien
6.3k 声望1.6k 粉丝

为者常成,行者常至。