Laravel 5.4: メンテナンスモードの使い方、仕組み
メンテナンスモードの使い方
- 開始
$ php artisan down
- 復帰
Be right back.
と表示される
php artisan up
メンテナンスモードの仕組み
storage/framework/down
が存在していたらメンテナンスモードになっている
$ ls -la storage/framework/down ls: cannot access 'storage/framework/down': No such file or directory $ php artisan down Application is now in maintenance mode. $ ls -la storage/framework/down -rw-r--r-- 1 vagrant vagrant 66 Feb 14 03:44 storage/framework/down $ php artisan up Application is now live. $ ls -la storage/framework/down ls: cannot access 'storage/framework/down': No such file or directory
- メンテナンスページのテンプレート
vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php
にある
TODO
- 部分的にメンテナンスモードにできる?
- あるIPだけ限定でアクセスさせることができる?
参照
Laravel 5.4: 環境設定
DotEnvライブラリ
設定ファイル
.env
: 各環境で使う設定ファイル- git管理対象外
.env.example
: サンプルファイル- git管理対象
$ diff .env.example .env 2c2 < APP_KEY= --- > APP_KEY=base64key...
設定の適用
- 設定ファイルの記述
.env
DB_DATABASE=homestead
- 設定の適用
.env
から値が取れないとき第二引数の値が入る
env('DB_DATABASE', 'foo')
- 設定の更新
storage/framework/config.php
が更新
$ php artisan config:cache
環境名の取得
use App; $environment = App::environment(); // get "local" if (App::environment('local')) { // The environment is local } if (App::environment('local', 'staging')) { // The environment is either local OR staging... }
TODO
- 各環境名の設定方法
- 実際に各環境を立てる
参照
Laravel 5.4: Blade テンプレートを使う
if
@if (count($people)) @endif
foreach
@foreach ($people as $person) {{ $person }} @endforeach
Template
- テンプレート側:
@yield('bar')
- テンプレート利用側:
- Fooテンプレートの継承:
@extends('foo')
- セクション書き換え:
@section('bar')
,@stop
- Fooテンプレートの継承:
- テンプレート:
resources/views/app.blade.php
<body> <div class="container"> @yield('content') </div> @yield('footer') </body>
- テンプレート利用:
resources/views/pages/about.blade.php
@extends('app') @section('content') <h1>About {{$name}}</h1> @if (count($people)) <h3>People I Like:</h3> <ul> @foreach ($people as $person) <li>{{ $person }}</li> @endforeach </ul> @endif @stop
参照
Laravel 5.4: Viewへデータを引き渡す
Summary
- テンプレートはBladeファイル:
foo.blade.php
withを使ってControllerからViewへ渡す
Controller側:
view('pages.about')->with('name', $name)
- View側:
- エスケープ:
{{$bar}}
- 非エスケープ:
{!! $bar !!}
- エスケープ:
How to basic
app/Http/routes.php
Route::get('about', 'PagesController@about');
- コントローラ作成
$ php artisan make:controller PagesController
- aboutメソッド作成
app/Http/Controllers/PagesController.php
class PagesController extends Controller { public function about() { $name = 'Jeffery Way'; return view('pages.about')->with('name', $name); } }
- テンプレート作成
resources/views/pages/about.blade.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>About {{$name}}</h1> </body> </html>
How to advance
エスケープ
- エスケープ:
{{$bar}}
- 非エスケープ:
{!! $bar !!}
- エスケープ:
データ渡しにwithを使う
- 単数:
- Controller:
view('pages.about')->with('name', $name)
- Template:
{{$name}}
- Controller:
- 複数(配列):
- Controller:
view('pages.about')->with(['first' => 'Jeffery', 'last' => Way'])
- Template:
{{$first}} {{$last}}
- Controller:
- 単数:
- データ渡しにwithを使わない
- 単数:
- Controller:
view('pages.about', $data)
- Template:
{{$first}} {{$last}}
- Controller:
- 複数(連想配列):
- Controller:
view('pages.about', $data)
- Template:
{{$name['first']}} {{$name['last']}}
- Controller:
- 複数(別変数):
- Controller:
view('pages.about', compact('first', 'last'))
- Template:
{{$first}} {{$last}}
- Controller:
- 単数:
参考
Laravel 5.4: Routing, Controller, Viewの流れを触る
What?
- ざっくり最小のRouting, Controller, Viewの流れを確認する
Why?
- ざっくり最小のものを作りたい
Routing
routes/
: ルーティングディレクトリ- ver 5.3 から
app/Http/routes.php
は廃止
- ver 5.3 から
$ less routes/ api.php channels.php console.php web.php
Route::get('/', 'welcome');
or
Route::get('/', function () { return view('welcome'); });
Controller
app/Http/Controllers/
以下にあるapp/Http/Controllers/WelcomeController.php
<?php namespace App\Http\Controllers; class WelcomeController extends Controller { public function index() { return view('welcome'); } }
View
- blade テンプレートエンジンを使用
resources/views/
以下にあるresources/views/welcome.blade.php
参考
Laravel5 入門 インストールからMVCの基本機能をさっと眺める | hrendoh's memo http://site.oganity.pw/154/
apt-getとyumの違い
Why?
同じところ
- apt も yum もパッケージ管理ソフト
- 自動ダウンロード、インストール、アップグレード
違うところ
apt
参考
Linux パッケージ管理コマンド比較(yum / dnf / apt 等) - らくがきちょう
TODO
Ubuntu に Java インストール
What?
Why?
- NeobundleInstall を叩いたときにJavaがなくてコケた
Solution
Apt-get でインストールする
Ubuntu version
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
- パッケージのIndexをアップデートする
$ sudo apt-get update
- Javaがインストールされているか確認
$ java -version bash: java: command not found
$ sudo apt-get install default-jre
- Apt-getでJava Development Kit (JDK)をインストールする
$ sudo apt-get install default-jdk
参考
How To Install Java on Ubuntu with Apt-Get | DigitalOcean