laravel
確認くん

Laravelの練習で確認くんを作成してみる

概要

Laravelでのアプリケーション作成練習として、確認くんを作成してみる。

確認くんとは、以下のように、1ページで構成されたアプリケーションで、そのページにアクセスしてきたユーザーの情報を表示できるアプリケーション。
https://www.ugtop.com/spill.shtml

簡単なサービスでどこが本家だかわからないので、名前としてはユーザー情報表示くんとして作成してみる。
この作成を通して、自分なりのデプロイのフローを整備する。

完成したもの

公開中のアプリ http://gatetool.net/hyojikun/
github https://github.com/marcon-pha/hyojikun

まずはターミナルにてプロジェクトを作成

ローカル
laravel new hyojikun

ルーティーングの作成

ルーティングは表示くんのメインの画面となるindexと、全てのヘッダーを確認するためのallを用意する。
allについては、開発時用の昨日で、全てのヘッダーをjsonで返す機能とする。

hyojikun/routes/web.php
Route::get('/', "MainController@index");
Route::get('/all', "MainController@all");

コントローラーの作成

artisanでコントローラーを作成する

ローカル
php artisan make:controller MainController
hyojikun/app/Http/Controllers/MainController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;

class MainController extends Controller
{
    public function index(Request $request){
        $data = ["request" => $request];
        return view("index", $data);
    }

    public function all(Request $request){
        if (App::environment('local')) {
            return $request->server();            
        }else {
            return "この機能はテスト環境専用です。";
        }

    }

}

表示する項目の選定

artisanでローカルサーバを立ち上げ、allのアドレスにアクセスする。
jsonで様々な環境変数が出てくるため、実際に表示くんで取り扱う変数を決める。

ローカル
php artisan serve

http://127.0.0.1:8000/all

ビューの作成

indexの画面だけ作成する
事前に決めておいた項目について、以下の形式で呼び出すことでビューに表示させる。
{{$request->server("パラメーター名"))}}
なお、アクセス時間だけはUNIXタイムとなってしまうため、date関数で変換して表示させる。

ロケールとタイムゾーンの設定

hyojikun/config/app.php
-     'timezone' => 'UTC',
+     'timezone' => 'Asia/Tokyo',
hyojikun/config/app.php
-      'locale' => 'en',
+      'locale' => 'ja',

githubへコミット

WEBのUIから、RREADMEファイルを含まない、空のリポジトリを作成する。
ローカルでgit initして、pushする。

ローカル
git init
git add .
git commit -m "first commit"
git remote add origin git@github.com:marcon-pha/hyojikun.git
git push -u origin master

本番デプロイ

git cloneで、githubからクローンしてくる。
git clone https://github.com/marcon-pha/hyojikun.git /var/www/html/hyojikun

なお、.envとvendorディレクトリ配下はgitignoreに指定されている。
.envは後続の手順で、生成する。
vendorはローカルから、scpなどで持ってくる。

権限変更

搭載後、権限を変更する。

chmod -R 775 /var/www/html/hyojikun
chmod -R 777 /var/www/html/hyojikun/storage
chmod -R 777 /var/www/html/hyojikun/bootstrap/cache
chown -R apache:kk /var/www/html/hyojikun

apacheへの設定追加

この状態だと、/hyojikunにアクセスすると、ソースが見えてしまうため、apacheの設定を変更する

/etc/httpd/conf
Alias /hyojikun "/var/www/html/hyojikun/public/"
<Directory "/var/www/html/hyojikun/public/">
  Options FollowSymLinks
  AllowOverride all
    Order allow,deny
  Allow from all
</Directory>

また、Laravelプロジェクト内にある.htaccessも修正しないと、indexページ以外が表示されなくなるため、修正を行う。

/var/www/html/hyojikun/public/.htaccess
    RewriteBase /hyojikun

.envの作成

.envには、プロダクション環境に変えることのみ以外は、何もしない。
なので、テンプレートファイルである、.env.exampleをコピーしてきて、APP_ENVの設定と、アプリキーの生成のみを行う。

リモートサーバ
php artisan down
cp .env.example .env
php artisan key:generate
sed -i -e "s/APP_ENV=local/APP_ENV=production/" /var/www/html/hyojikun/.env
php artisan up

完成

作成したルートにアクセスして動作を確認する
allの方は、localではないため、アクセスできなくなっている。
/hyojikun
/hyojikun/all