・ローカルでの開発環境は、MacでHomesteadを利用
・本番サーバーはcentos7
ログファイルを日付ごとに分ける
Laravel/.env
LOG_CHANNEL=daily
上記のように設定すると、下記のようなログファイルにログが出力される
Laravel/storage/logs/laravel-2018-07-25.log
ディレクトリ指定してモデルを生成する
php artisan make:model Models/User
ルーティングの一覧を確認するコマンド
php artisan route:list
vagrant@homestead:~/code/Laravel$ php artisan route:list
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | App\Http\Controllers\UserController@index | api |
| | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web,auth |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+
API通信にてCookieを使わずにセッションを使う
app/Http/Middleware/StartSession.php を新規作成して、「Illuminate\Session\Middleware\StartSession」を継承してgetSessionをオーバーライドする。
<?php
namespace App\Http\Middleware;
use Illuminate\Session\Middleware\StartSession as IlluminateStartSession;
use Illuminate\Http\Request;
class StartSession extends IlluminateStartSession
{
public function getSession(Request $request)
{
return tap($this->manager->driver(), function ($session) use ($request) {
// リクエストからセッションIDを取得
// サンプルとしてヘッダー情報にセッションIDをそのまま入れてリクエストしている
$session_id = $request->header('x-session-id');
// セッションIDを設定
$session->setId($session_id);
});
}
}
app/Http/Kernel.php に新規作成したStartSessionを追加
protected $middlewareGroups = [
'api' => [
\App\Http\Middleware\StartSession::class,
'throttle:60,1',
'bindings',
],
];
app/Providers/SessionServiceProvider.php を新規作成し、「Illuminate\Session\SessionServiceProvider」を継承してregisterをオーバーライドする。
<?php
namespace App\Providers;
use Illuminate\Session\SessionServiceProvider as BaseSessionServiceProvider;
class SessionServiceProvider extends BaseSessionServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerSessionManager();
$this->registerSessionDriver();
$this->app->singleton('App\Http\Middleware\StartSession');
}
}
config/app.php のprovidersに作成したものを追加する。
'providers' => [
...
App\Providers\SessionServiceProvider::class,
],
Nginxで正しくルーティングされずに404
ローカル環境では全然問題なかったんですが、本番サーバーでは、トップページは表示されるけど、apiのURLを叩くと404 Not Foundになってしまった。nginxの設定をする必要があったみたいで、この時はhttpsでの通信だったので下記ファイルを変更。
/etc/nginx/conf.d/https.conf
server {
... 略
location ~ ^/api(/.*)$ {
root [ドキュメントルートのパスを絶対パスを指定];
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
}
}
↓ このブログがとても参考になりました。
http://issasn.hatenablog.com/entry/2013/11/01/214812
タスクスケジュール(定期処理)
↓artisanでcommandを作成
https://qiita.com/ritukiii/items/a70d89fa988b2d9afbc4
↓タスクスケジュールの設定
https://qiita.com/Takuma_Ikeda/items/1323e5a6bea51860ed57