概要
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で返す機能とする。
Route::get('/', "MainController@index");
Route::get('/all', "MainController@all");
コントローラーの作成
artisanでコントローラーを作成する
php artisan make:controller MainController
<?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
ビューの作成
indexの画面だけ作成する
事前に決めておいた項目について、以下の形式で呼び出すことでビューに表示させる。
{{$request->server("パラメーター名"))}}
なお、アクセス時間だけはUNIXタイムとなってしまうため、date関数で変換して表示させる。
ロケールとタイムゾーンの設定
- 'timezone' => 'UTC',
+ 'timezone' => 'Asia/Tokyo',
- '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の設定を変更する
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ページ以外が表示されなくなるため、修正を行う。
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