※アイキャッチ画像は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をまた記事にしていきたいと思います。
以上です。
終わり。