193
2 0 1 6 2 0 1 6

All the Laravel Things – Up & Running to Making $$

Embed Size (px)

Citation preview

Page 1: All the Laravel Things – Up & Running to Making $$

20162016

Page 2: All the Laravel Things – Up & Running to Making $$

All the Laravel things: up and running to making $$

Joe Ferguson

Page 3: All the Laravel Things – Up & Running to Making $$

Who Am I?Joe Ferguson

PHP Developer

Engineer @ Aol.

Twitter: @JoePFerguson

Organizer of @MemphisPHP

OSMI Board Member

@NomadPHP Lightning Talks

Passionate about Community

Page 4: All the Laravel Things – Up & Running to Making $$

For Further Reading

laravelupandrunning.com easylaravelbook.com

Page 5: All the Laravel Things – Up & Running to Making $$

What exactly is Laravel?

Page 6: All the Laravel Things – Up & Running to Making $$

Laravel EcosystemFrameworkTools Learning &

Community

Page 7: All the Laravel Things – Up & Running to Making $$

Quick note on versions

5.1 LTS bug fixes for 2 years, security fixes for 3 years

Non LTS: bug fixes for 6 months, security fixes for 1 year

5.1 is currently the only LTS version

Page 8: All the Laravel Things – Up & Running to Making $$

Which version should you use?

5.3 for my own projects

5.1 for client projects

Page 9: All the Laravel Things – Up & Running to Making $$

Getting Laravel

composer global require “laravel/installer”

Page 10: All the Laravel Things – Up & Running to Making $$

Installing Laravel

laravel new quickstart-basic-5.3

Page 11: All the Laravel Things – Up & Running to Making $$

Install via Composer

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

Page 12: All the Laravel Things – Up & Running to Making $$

Local Dev Environment

Page 13: All the Laravel Things – Up & Running to Making $$

What’s in Homestead

• Ubuntu 16.04• PHP 7.0• HHVM• Nginx• MySQL• MariaDB• Sqlite3• Postgres

• Composer• NodeJS• Bower• Grunt• Gulp• Beanstalkd• Memcached• Redis

Page 14: All the Laravel Things – Up & Running to Making $$

Getting Homestead

git clone https://github.com/laravel/homestead.git Homestead

Page 15: All the Laravel Things – Up & Running to Making $$

Getting Homestead

cd Homestead && bash init.sh

Page 16: All the Laravel Things – Up & Running to Making $$

How I use Homestead

composer require —dev laravel/homestead

Page 17: All the Laravel Things – Up & Running to Making $$

Make Homestead

./vendor/bin/homested make —aliases

Page 18: All the Laravel Things – Up & Running to Making $$

What is —aliases?

Page 19: All the Laravel Things – Up & Running to Making $$

Configuring Homestead

Page 20: All the Laravel Things – Up & Running to Making $$

Starting Homestead

Page 21: All the Laravel Things – Up & Running to Making $$

Inspecting Homestead

Page 22: All the Laravel Things – Up & Running to Making $$

Edit /etc/hosts

Optional for per project Homestead

Page 23: All the Laravel Things – Up & Running to Making $$

Inspecting Homestead

Page 24: All the Laravel Things – Up & Running to Making $$

Inspecting Homestead

Page 25: All the Laravel Things – Up & Running to Making $$

Stopping Homestead

Page 26: All the Laravel Things – Up & Running to Making $$

Don’t version control Homestead.yaml

Page 27: All the Laravel Things – Up & Running to Making $$

Questions?

Page 28: All the Laravel Things – Up & Running to Making $$

Getting Started with Laravel

Page 29: All the Laravel Things – Up & Running to Making $$

Project Structure

Page 30: All the Laravel Things – Up & Running to Making $$

app Folder

Page 31: All the Laravel Things – Up & Running to Making $$

config Folder

Page 32: All the Laravel Things – Up & Running to Making $$

database Folder

Page 33: All the Laravel Things – Up & Running to Making $$

public Folder

Page 34: All the Laravel Things – Up & Running to Making $$

resources Folder

Page 35: All the Laravel Things – Up & Running to Making $$

routes Folder

Page 36: All the Laravel Things – Up & Running to Making $$

Model Factories

database/factories/ModelFactory.php

Page 37: All the Laravel Things – Up & Running to Making $$

User Migration up()

database/migrations

Page 38: All the Laravel Things – Up & Running to Making $$

User Migration down()

database/migrations

Page 39: All the Laravel Things – Up & Running to Making $$

Database Seeders

Page 40: All the Laravel Things – Up & Running to Making $$

Artisan Commands

Page 41: All the Laravel Things – Up & Running to Making $$

Artisan Commands

Page 42: All the Laravel Things – Up & Running to Making $$

Create Migration

artisan make:migration create_widgets_table

Page 43: All the Laravel Things – Up & Running to Making $$

Create Migration

Page 44: All the Laravel Things – Up & Running to Making $$

Create Migration

Page 45: All the Laravel Things – Up & Running to Making $$

Run Migration(s)

artisan migrate

Page 46: All the Laravel Things – Up & Running to Making $$

Inspect the Database

Password is “secret”

Page 47: All the Laravel Things – Up & Running to Making $$

Inspect the Database

Page 48: All the Laravel Things – Up & Running to Making $$

Create a model

artisan make:model Widget

Page 49: All the Laravel Things – Up & Running to Making $$

Widget model

Page 50: All the Laravel Things – Up & Running to Making $$

Add Widget ModelFactory

database/factories/ModelFactory.php

Page 51: All the Laravel Things – Up & Running to Making $$

Create a seeder

artisan make:seeder WidgetSeeder

Page 52: All the Laravel Things – Up & Running to Making $$

WidgetSeeder

Page 53: All the Laravel Things – Up & Running to Making $$

DatabaseSeeder

Page 54: All the Laravel Things – Up & Running to Making $$

Run Database Seeders

artisan db:seed

Page 55: All the Laravel Things – Up & Running to Making $$

Users Table

Page 56: All the Laravel Things – Up & Running to Making $$

Widgets Table

Page 57: All the Laravel Things – Up & Running to Making $$

Routing

routes/web.php

Page 58: All the Laravel Things – Up & Running to Making $$

Why 3 route files?!

Page 59: All the Laravel Things – Up & Running to Making $$

Add /widgets Route

Page 60: All the Laravel Things – Up & Running to Making $$

localhost:8000/widgets

Page 61: All the Laravel Things – Up & Running to Making $$

Frontend Development

Page 62: All the Laravel Things – Up & Running to Making $$

Run: npm install

Page 63: All the Laravel Things – Up & Running to Making $$

Run: gulp

Page 64: All the Laravel Things – Up & Running to Making $$

Compiled Assets

Page 65: All the Laravel Things – Up & Running to Making $$

Layouts

Page 66: All the Laravel Things – Up & Running to Making $$

Example View

Page 67: All the Laravel Things – Up & Running to Making $$

Return a view()

routes/web.php

Page 68: All the Laravel Things – Up & Running to Making $$

Refresh /widgets

localhost:8000/widgets

Page 69: All the Laravel Things – Up & Running to Making $$

Clean up our layout

Page 70: All the Laravel Things – Up & Running to Making $$

Widgets Index View

Page 71: All the Laravel Things – Up & Running to Making $$

Pass data to a view

routes/web.php

Page 72: All the Laravel Things – Up & Running to Making $$

localhost:8000/widgets

Page 73: All the Laravel Things – Up & Running to Making $$

Questions?

Page 74: All the Laravel Things – Up & Running to Making $$

Testing our Application

Page 75: All the Laravel Things – Up & Running to Making $$

Testing our Widgets

Page 76: All the Laravel Things – Up & Running to Making $$

Testing our Widgets

Page 77: All the Laravel Things – Up & Running to Making $$

Testing our Widgets

Page 78: All the Laravel Things – Up & Running to Making $$

Running phpunit

Page 79: All the Laravel Things – Up & Running to Making $$

Route Groups

Page 80: All the Laravel Things – Up & Running to Making $$

Form Requests

Page 81: All the Laravel Things – Up & Running to Making $$

WidgetCreateRequest

Page 82: All the Laravel Things – Up & Running to Making $$

HTML Forms

Page 83: All the Laravel Things – Up & Running to Making $$

Widget Routes

Page 84: All the Laravel Things – Up & Running to Making $$

Add Widget

Page 85: All the Laravel Things – Up & Running to Making $$

Test Add Widget Form

Page 86: All the Laravel Things – Up & Running to Making $$

Questions?

Page 87: All the Laravel Things – Up & Running to Making $$

Controllers

Page 88: All the Laravel Things – Up & Running to Making $$

Routing to Controllers

Page 89: All the Laravel Things – Up & Running to Making $$

Routing to Controllers

Page 90: All the Laravel Things – Up & Running to Making $$

Routing to Controllers

Page 91: All the Laravel Things – Up & Running to Making $$

Widget Tests Still Pass

Page 92: All the Laravel Things – Up & Running to Making $$

Questions?

Page 93: All the Laravel Things – Up & Running to Making $$

Model Relationships

One to One

A User has a Phone Number

One to Many

A Post has many Comments

Many to Many

Users have may Roles

Page 94: All the Laravel Things – Up & Running to Making $$

Task belongs to User

Page 95: All the Laravel Things – Up & Running to Making $$

User has many Tasks

Page 96: All the Laravel Things – Up & Running to Making $$

Query Model Relationships

Page 97: All the Laravel Things – Up & Running to Making $$

The N+1 Problem

Page 98: All the Laravel Things – Up & Running to Making $$

Eager Loading

Page 99: All the Laravel Things – Up & Running to Making $$

Questions?

Page 100: All the Laravel Things – Up & Running to Making $$

How do we get it to the server?

Page 101: All the Laravel Things – Up & Running to Making $$

Envoy

Envoy provides easy ways to run command commands on remote servers such as pulling code from git, running artisan commands, etc.

Envoy uses blade template syntax

Envoy only supports Mac & Linux

Page 102: All the Laravel Things – Up & Running to Making $$

Sample Envoy Config

Page 103: All the Laravel Things – Up & Running to Making $$

Sample Envoy Config

Page 104: All the Laravel Things – Up & Running to Making $$

Envoy Configuration

Page 105: All the Laravel Things – Up & Running to Making $$

Easy OAuth Login

Page 106: All the Laravel Things – Up & Running to Making $$

Laravel Socialite

Easily allow users to authenticate via Github, Google, Twitter, Facebook, Bitbucket, or Linkedin

Handles almost all the boilerplate for you

https://github.com/laravel/socialite

Page 107: All the Laravel Things – Up & Running to Making $$

composer require laravel/socialite

Page 108: All the Laravel Things – Up & Running to Making $$

Configure Socialite

Page 109: All the Laravel Things – Up & Running to Making $$

Configure Socialite

Page 110: All the Laravel Things – Up & Running to Making $$

AuthController

Page 111: All the Laravel Things – Up & Running to Making $$

Add Socialite Routes

Page 112: All the Laravel Things – Up & Running to Making $$

Making $$$

Page 113: All the Laravel Things – Up & Running to Making $$

Laravel Cashier

Expressive interface to Stripe and Braintree subscription billing services

Free, open source package easily added to Laravel

Designed for subscription, not one off charges

https://laravel.com/docs/5.3/billing

Page 114: All the Laravel Things – Up & Running to Making $$

Installing Cashier

Page 115: All the Laravel Things – Up & Running to Making $$

Configure Cashier

Page 116: All the Laravel Things – Up & Running to Making $$

Cashier Migration

Page 117: All the Laravel Things – Up & Running to Making $$

Billable Trait

Page 118: All the Laravel Things – Up & Running to Making $$

Stripe API Keys

Page 119: All the Laravel Things – Up & Running to Making $$

Subscribing a User

https://laravel.com/docs/5.3/billing

Page 120: All the Laravel Things – Up & Running to Making $$

Laravel Spark

SASS in a box

You bring the Service

Spark brings the boilerplate of billing, authentication, and more

$99 For a single site

$299 For unlimited sites

Page 121: All the Laravel Things – Up & Running to Making $$

Laravel Spark

Page 122: All the Laravel Things – Up & Running to Making $$

Questions?

Page 123: All the Laravel Things – Up & Running to Making $$

Artisan Commands

Page 124: All the Laravel Things – Up & Running to Making $$

Create a new Command

Page 125: All the Laravel Things – Up & Running to Making $$

Create a new Command

Page 126: All the Laravel Things – Up & Running to Making $$

app/Console/Kernel.php

Page 127: All the Laravel Things – Up & Running to Making $$

BasicCommand.php

Page 128: All the Laravel Things – Up & Running to Making $$

Signature

Page 129: All the Laravel Things – Up & Running to Making $$

Description

Page 130: All the Laravel Things – Up & Running to Making $$

Constructor

Page 131: All the Laravel Things – Up & Running to Making $$

Handle The Command

Page 132: All the Laravel Things – Up & Running to Making $$

Running our Command

Page 133: All the Laravel Things – Up & Running to Making $$

Output Some Text

Page 134: All the Laravel Things – Up & Running to Making $$

Output Some Text

Page 135: All the Laravel Things – Up & Running to Making $$

Output Warning Text

Page 136: All the Laravel Things – Up & Running to Making $$

Output Warning Text

Page 137: All the Laravel Things – Up & Running to Making $$

Output Error Text

Page 138: All the Laravel Things – Up & Running to Making $$

Output Error Text

Page 139: All the Laravel Things – Up & Running to Making $$

Questions?

Page 140: All the Laravel Things – Up & Running to Making $$

Authentication

Page 141: All the Laravel Things – Up & Running to Making $$

artisan make:auth

Page 142: All the Laravel Things – Up & Running to Making $$

View Files

Page 143: All the Laravel Things – Up & Running to Making $$

Auth Routes

Page 144: All the Laravel Things – Up & Running to Making $$

Layout :(

Page 145: All the Laravel Things – Up & Running to Making $$

Register a new user

Page 146: All the Laravel Things – Up & Running to Making $$

Logged In User

Page 147: All the Laravel Things – Up & Running to Making $$

Add our Navigation

Page 148: All the Laravel Things – Up & Running to Making $$

http://localhost:8000

Page 149: All the Laravel Things – Up & Running to Making $$

localhost:8000/widgets

Page 150: All the Laravel Things – Up & Running to Making $$

Multiple Middleware

Page 151: All the Laravel Things – Up & Running to Making $$

Not Logged In?

Page 152: All the Laravel Things – Up & Running to Making $$

Test Errors and Failure

Page 153: All the Laravel Things – Up & Running to Making $$

Run test as a user

Page 154: All the Laravel Things – Up & Running to Making $$

Test now passes

Page 155: All the Laravel Things – Up & Running to Making $$

Questions?

Page 156: All the Laravel Things – Up & Running to Making $$

Laravel Forge

“A simple way to deploy your Laravel applications onto blazing fast servers”

Page 157: All the Laravel Things – Up & Running to Making $$

Forge is Homestead and more in the cloud

Page 158: All the Laravel Things – Up & Running to Making $$

Forge is not a server host

Page 159: All the Laravel Things – Up & Running to Making $$

Forge uses your servers

Page 160: All the Laravel Things – Up & Running to Making $$

Forge uses any* server

*Any Internet accesible Ubuntu 14.04 x64 Server

Page 161: All the Laravel Things – Up & Running to Making $$

Laravel Forge• Unlimited Servers.• Unlimited Sites.• Unlimited Deployments.• Push To Deploy.

Laravel Forge Plus• Share Servers With Teammates.• Unlimited Servers.• Unlimited Sites.• Unlimited Deployments.• Push To Deploy.

$15/Month$140/Year

$30/Month$300/Year

Page 162: All the Laravel Things – Up & Running to Making $$

Adding Servers To Forge

Page 163: All the Laravel Things – Up & Running to Making $$

Adding a site to a server

Page 164: All the Laravel Things – Up & Running to Making $$

Adding a ssh key to a server

Page 165: All the Laravel Things – Up & Running to Making $$

Adding scheduled (cron) jobs

Page 166: All the Laravel Things – Up & Running to Making $$

Adding daemons (supervisor)

Page 167: All the Laravel Things – Up & Running to Making $$

Creating server networks

Page 168: All the Laravel Things – Up & Running to Making $$

Server Monitoring

Page 169: All the Laravel Things – Up & Running to Making $$

Update Server Meta Data

Page 170: All the Laravel Things – Up & Running to Making $$

Adding our hello-world site

Page 171: All the Laravel Things – Up & Running to Making $$

Install our Git Repository

Page 172: All the Laravel Things – Up & Running to Making $$

Configure App Deployment

Page 173: All the Laravel Things – Up & Running to Making $$

Deploy!

Page 174: All the Laravel Things – Up & Running to Making $$

Deploy!

Continuous Delivery!

Page 175: All the Laravel Things – Up & Running to Making $$

Deployment Log

Page 176: All the Laravel Things – Up & Running to Making $$

Setting Environment Variables

Page 177: All the Laravel Things – Up & Running to Making $$

Queue Workers

Page 178: All the Laravel Things – Up & Running to Making $$

Configure / Install SSL

Page 179: All the Laravel Things – Up & Running to Making $$

LetsEncrypt.org100% Supported

Page 180: All the Laravel Things – Up & Running to Making $$

Envoyer.io

Page 181: All the Laravel Things – Up & Running to Making $$

Zero Downtime Deployments with

Envoyer.io

Page 182: All the Laravel Things – Up & Running to Making $$

Envoyer10 Projects - $10/month or $100/year

20 Projects - $20/month or $200/year

Envoyer Plus

Unlimited Projects - $50/month or $500/year

Envoyer Premium

Page 183: All the Laravel Things – Up & Running to Making $$

Add a project

Page 184: All the Laravel Things – Up & Running to Making $$

Adding a Server

Page 185: All the Laravel Things – Up & Running to Making $$

Add the SSH key from Envoyer

Page 186: All the Laravel Things – Up & Running to Making $$

Test Connection Status

Envoyer now connected to our Forge Server

Page 187: All the Laravel Things – Up & Running to Making $$

Project Path

Page 188: All the Laravel Things – Up & Running to Making $$

Our first Deployment

Page 189: All the Laravel Things – Up & Running to Making $$

Deployment Recap

Page 190: All the Laravel Things – Up & Running to Making $$

Deploy when code is pushed

Page 191: All the Laravel Things – Up & Running to Making $$

Free Video Series at Laracasts

https://laracasts.com/series/envoyer

https://envoyer.io/docs

Page 192: All the Laravel Things – Up & Running to Making $$

Questions?

Page 193: All the Laravel Things – Up & Running to Making $$

Feedback!https://joind.in/talk/4eb90

Joe FergusonTwitter: @JoePFergusonEmail: [email protected]: joepferguson

Contact Info: