誰でもできる詳細な解説付きLaravelインストール手順

PHP

※アイキャッチ画像はLaravelのロゴです

本記事は、UbuntuにWebサーバー(NGINX)、PHPがある前提での、Laravelインストール手順です。

また、コントローラー、ビュー、ルーティングがきちんとできるかの動作確認も最後にしています。

自分用のメモでもありますが、一応、分からない方向けに詳しく説明したつもり。

今回使用する環境は以下の通り。

  • Ubuntu Server 20.04 LTS
  • NGINX 1.17.10
  • PHP 7.4.3

本記事のLaravelとComposerのバージョンです。

  • Composer 1.10.x
  • Laravel 7.x

WebサーバーであるNGINX、PHP 7.4のインストールがまだの方は、以下の記事を参考にするか、自力でお願いします。

また、上の記事はLaravel環境構築を目的にしたものなので、この記事から見れば環境構築の一連の流れが分かると思います(間違ってたらすみません…)。

Laravelって?

今一番注目されているPHPのフレームワークですが、他サイトで語り尽くされているので、詳細は取り上げません(せっかくセクション作ってるのに…)。

個人的には、CSRF (Cross-Site Request Forgery)対策やチェック処理のコーディングが簡易になる点、構造化が簡単にできる点が嬉しいです。

本家サイトは以下。

http://laravel.jp/ [日本語]
https://laravel.com/ [英語]

Composer インストール

Laravelを入れるためには、Composerが必要です。

なお、Composerインストールの前提として、PHP 5.3.2以上が必要なので、ご確認下さい。
PHPインストールはこの記事では解説しません。
ここの本サイト過去記事を参考にして頂くか、ググって調べて下さい(解説記事は沢山見つかるはず)。

Composerとは?

Composer公式ページ[英語]のトップページに書いてますが、PHPのための依存性管理ツール (A Dependency Manager for PHP)です。
(ドキュメントのIntroductionにも書かれていますが、YumやAptとは役割が異なる)

インストール方法は2つあり、パッケージ管理ツール(Apt)を使う方法と、手動インストールの2通りです。

① Aptでインストールする場合

Ubuntu Server 20であればリポジトリにComposerが用意されています(それ以前のバージョンにもありますがComposerのバージョンは古いです)。
なので、Apt (Advanced Packaging Tool)でインストールすることが可能で、これが簡単な方法かも。

ただ、2020/6/19時点のComposer最新バージョンは1.10.7ですが、aptのリポジトリにあるComposerはリビジョンが少し古いようで、1.10.1 でした。

導入方法としては簡単です。
以下のコマンドを入力するだけ。

$ sudo apt install composer

環境全体を操作できる権限がある場合、簡単で良い方法でしょう。
つまり、VPSとか専用サーバーとか、今回のようにVMware Player上でテスト環境を作る場合などはこの方法ででき、手動インストールよりは楽です(でも手動インストールもそう難しくはないです)。

ただ、最新のリビジョンを取得したい場合や、レンタルサーバーのようにAptが使えな場合は、②の方法が必要となります。

② サイトからダウンロードしてインストールする方法

レンタルサーバーのように各ユーザーでインストール作業をする場合は、この方法でないとできません。

Composerの公式サイトにインストーラーとなるPHPファイルがありますので、まずそれをダウンロード。
(ちなみに、ユーザーはホームディレクトリにいるものとして説明します)

$ wget https://getcomposer.org/installer

composer-setup.phpにリネームします。
(念のためcomposer公式の方法と同じように…)

$ mv installer composer-setup.php

ホームディレクトリにbinディレクトリがない場合は作りましょう。

$ mkdir bin

以下のコマンドでインストールを走らせる。

$ php composer-setup.php --install-dir=bin --filename=composer

うまくできると、以下のメッセージが出ます。

「Use it bin/composer」とあります。
これがcomposerの実行ファイルですね。

次に、$HOME/bin/をパスに追加します。
ホームディレクトリで、以下のコマンドを実行します。

$ ls -a

.profileというファイルがあるので、このファイルを開きます。

$ nano .profile

最終行に以下の1文を追記。

PATH="$PATH:$HOME/bin"

設定ファイルを読込み、パスが通っているか確認します。

$ source .profile
$ composer -V

できたら、以下のようなメッセージが出るはず。

これで、composerのインストールは終了。

Laravel インストール

本題のLaravelをインストールします。
今回使用するバージョンは、7.xです。

インストーラをダウンロードします。

$ composer global require laravel/installer

.profileのPATHを追記した箇所を、さらに以下のように修正し、パスを通しておきます。

PATH="$PATH:$HOME/bin:$HOME/.config/composer/vendor/bin"

.profileを読込みます。

$ source .profile

テスト用のプロジェクトを作成してみましょう。

$ laravel new testpj

終わるとこんなメッセージが最後に出ます。

ちょっと簡単な動作確認をしてみましょう。
公開用のページは testpj/public にあります。
NGINXのドキュメントルールにシンボリックリンクを作成します。

$ ln -s /home/[user name]/testpj/public /var/www/html/laraveltest

権限も変更しておきます。
これをやらないと、表示させた時にPermission Deniedが出ちゃうので。

$ sudo chown -R www-data:[user name] testpj
$ sudo chmod 775 -R testpj

下のアドレスにアクセスします。

htt://[IPアドレス]/laraveltest

うまくできていれば、Laravelと書かれたページが出ます。

初期画面表示の動作確認は、これで完了です。

もう少しちゃんとした動作確認をしてみる

Laravelの仕組みが問題なく動作するのか、もう少しちゃんとテストをします。

コントローラー、Bladeテンプレートを用いたビューを作成し、ルーティングも新規に作成します。

(簡単な)用語説明

コントローラー
LaravelはMVCモデルを採用していますが、そのC (Controller)に当たる部分で、動作の制御を実施。

Blade
Laravel独自のテンプレート。
単純にPHPでコーディングするより楽に作れる。

ビュー
MVCのV (View)の部分。
表示部分のこと。

何を作るか

URLのパラメータを表示させるものを作成してみます。
先ほど作成したサイトの下にtestページを作り、さらにパラメータの文字列を取得して画面に表示させます。

http://[IP adress]/laraveltest/test?param=HelloLaravel

作ってみる

① NGINXのサイト設定を編集

今の状態だと下層のディレクトリにアクセスすると Page Not Found (404)が出ます。

なので、トップのindex.phpにリクエストが行くようにNGINXの挙動を変えます。

/etc/nginx/sites-available/default に以下を追記します。

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

忘れずに、NGINX再起動

$ sudo systemctl restart nginx

① コントローラー作成

testpjディレクトリで、以下のコマンドを実行します。
これで、app/Http/Controllersディレクトリ配下に、TestController.php が作成されます。

$ php artisan make:controller TestController

うまくできると、こんなメッセージが出ます。

TestController.php を以下の内容に修正します。
public function index … 以下を追記します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    //index
    public function index(Request $request)
    {
		$args = [
                  'param'=>$request->input('param')
                ];

        return view('test.index', $args);
    }
}

TestControllerのindexファンクションが実行されると、指定したビュー(testフォルダの下のindex.php)を返す、という内容。

$argsには、URLで指定したパラメータが入ります。

② ビューの作成

Laravelのビューは、resources/viewsディレクトリの下に置きます。

viewsディレクトリの下にtestディレクトリを作り、testディレクトリの下に index.blade.php というファイルを作成します。
blade.phpを末尾に指定すると、Bladeテンプレートの扱いになります。

index.blade.php の内容は以下。

<html>
<body>
{{$param}}
</body>
</html

単に、URLパラメーターを表示するだけ、、、の内容。

③ ルーティング

プロジェクトのディレクトリ(今回の例だとtestpj)の中に、routes/web.php というファイルがあって、ここでルーティングを指定します。

ファイルの最後尾に、以下の1文を追記。

Route::get('test/{param?}', 'TestController@index');

こんな風になるはずです。

testにアクセスした時、TestContollerのindexファンクションを呼び出す、という指定がこれ。
{param?}はパラメータの意味で、?は任意の指定という意味(?を取ると必須指定)。

ちなみに、一番上のRouteは、最上位URLにアクセスした時、welcomeのビューの内容を返す、という指定ですね。

④ 確認してみる

http://[IP address]/laraveltest/test?param=HelloLaravel

と入力してアクセスしてみます。

こんな風に出力できれば、完成。

うまくできてましたね!

僕もLaravelはまだまだ勉強中なので、便利なtipsをまた記事にしていきたいと思います。

 

以上です。
終わり。