Laravel インストール&起動

2019/04/29

Linux PHPパッケージの用意

通常PHP環境(PDO, JSON, LAMP & LAPP...)で最低限入れておけば動作しそうだが、laravel プロジェクト作成のバージョンによって異なる Installation(5.8)

# aptitude install php-zip php7.3-pdo php7.3-pgsql php7.3-mysql php7.3-mbstring php7.3-ssh2 php7.3-gd php7.3-curl php7.3-tokenizer php7.3-bcmath php7.3-ctype
PHP

composer の用意

PHP7.3 で環境を作成するため、ソースでインストールした。 (Debian9系パッケージの composer だとエラーになる) PHP7.3 で compser install できない

composer -V
Composer version 1.8.5
PHP

Laravel インストール & プロジェクト作成

composer で Laravel をインストールし、~/.config/composer/vendor/ にコマンドパスを通す

$ composer global require "laravel/installer"
$ export PATH="~/.config/composer/vendor/bin:$PATH"
PHP

プロジェクト作成(laravelコマンド)

この時点でエラーになる場合は、ライブラリが不足している可能性がある ライブラリが膨大なため、まぁまぁ時間がかかる

$ laravel new project_name
...
  - Installing symfony/translation (v4.2.7): Downloading (100%)         
  - Installing nesbot/carbon (2.17.1): Downloading (100%)         
  - Installing monolog/monolog (1.24.0): Downloading (100%)         
  - Installing league/flysystem (1.0.51): Downloading (100%)         
  - Installing laravel/framework (v5.8.14): Downloading (100%)  
...
Package manifest generated successfully.
Application ready! Build something amazing.
PHP

パーミッション変更

storage, bootstrap/cache のパーミッションを変更しないと起動できない

$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache
PHP

ここら辺はコマンド自動化した方が良いかと

プロジェクト作成(Composerコマンド)

こちらの方が一般的か? laravel のパスが利用できない場合は、以下のコマンドで作成

$ composer create-project laravel/laravel --prefer-dist project_name 5.8
PHP

Laravelサーバ起動

個人環境では、Mac上にVirtualBox(Debian)サーバを別IPでルーティングしているため、IPの指定(--host)が必要

$ php artisan serve --host=192.168.11.56
PHP

Laravel

リダイレクト設定

artisan serve でなく Apache で動作させる場合、public のリダイレクト設定が必要 VirtualHost で設定する方法もあるが、「.htaccess」で public をルートとみなすようにする

PHP7.x & Laravel5.x

    
        Options -MultiViews
    

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php


Bash