はじめに
Laravel は、開発に必要な組み込みツールとリソースのセットを備えた、モダンなPHPアプリケーションを開発するためのWebアプリケーションフレームワークです。その信頼性、パフォーマンス、効率性、モジュール性、そしてセキュリティの高さでよく知られています。さまざまな組み込み機能のおかげで、Laravelの人気は驚異的な成長を遂げています。多くの開発者が、Web開発プロセスを合理化するためにLaravelを採用しています。
このガイドでは、Ubuntu 20.04上で新しいLaravelアプリケーションをインストールおよび設定する方法を説明します.
Ubuntu上のLaravel
Laravelのダウンロードと管理には、PHPの依存関係管理ツールであるComposerを使用します。Composerをインストールするには、このチュートリアルの指示に従ってください。 The Nginxサーバーがアプリケーションを提供します。これにより、MySQLデータベースを使用したデモのLaravelアプリケーションが構築されます。
このガイドにはいくつかの前提条件があります。すでに適切に設定されたUbuntu 20.04サーバーが稼働していることを前提としています。参考までに、Ubuntuサーバーのセットアップに関するクイックガイドを以下に示します。また、LEMP(Linux、Nginx、MySQL、PHP)スタックがインストールおよび設定されている必要があります。これについては、LEMPスタックのインストールと設定.
に関する詳細なガイドを用意しています。さまざまなパッケージをインストールするため、root権限が必要です。Ubuntuの場合、デフォルトでrootユーザーは無効になっています。そのため、sudo権限を持つ非rootユーザーへのアクセスが必要です。他のユーザーにsudo権限を付与する方法.
ステップ1 – PHPモジュールのインストール
Before installing Laravel, we need some important PHP modules for the framework. These modules are directly available from the Ubuntu default package repos. These modules support features like character encoding, XML, and precision mathematics.
まず、APTキャッシュを更新し、パッケージをインストールします。
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
ステップ2 – アプリケーション用データベースの作成
Laravelの機能を実証するために、ユーザーが訪れたい場所のリストと、すでに訪問済みの場所のリストを表示する旅行リストアプリケーションを作成します。このデータは、フィールドname(場所の名前)とvisited(visitedまたはnonvisitedとしてマークする)を持つテーブル「places」に保存できます。追加のフィールドには、各エントリの一意の識別子(ID)が含まれます。データをLaravelアプリケーションと接続するために、専用のMySQLユーザーを作成し、データベースtravellist.
に対する完全な権限をそのユーザーに付与します。ネイティブのMySQL PHPライブラリであるmysqlndは、caching_sha2_authenticationをサポートしなくなりました。そのため、データベースの認証方法をmysql_native_passwordに設定する必要があります。MySQLシェルにroot:
|
1 |
$ sudo mysql |
次に、travellist:
|
1 |
> CREATE DATABASE travellist; |
その後、適切なパスワードを設定して、専用ユーザーtravellist_userを作成します。
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
ユーザーtravellist_userに、データベースtravellistに対する完全な権限を付与します。これにより、このユーザーがサーバー上の他のデータベースを作成または変更することも防止できます。
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
MySQLシェルを終了します。
|
1 |
> exit |
新しいユーザーをテストしてみましょう。次のコマンドを実行すると、ユーザーtravellist_userとしてMySQLシェルにログインします。フラグ-pにより、ユーザーのパスワードが求められます。
|
1 |
$ mysql -u travellist_user -p |
利用可能なすべてのデータベースを表示します。先ほど設定したように、travellistとinformation_schemaのみが表示されるはずです。
|
1 |
> SHOW DATABASES; |
次に、データテーブルplacesを作成する必要があります。次のMySQLステートメントを実行します。
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
テーブルにサンプルデータをいくつか挿入してみましょう:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
データがデータベースに正常に保存されたか確認してみましょう:
|
1 |
> SELECT * FROM travellist.places; |
ご覧の通り、テストテーブルに有効なデータが挿入されました。これでMySQLシェルを終了できます:
|
1 |
> exit |
ステップ 3 – 新規Laravelアプリの作成
これで、Composerを使用して新しいLaravelアプリケーションを作成する準備が整いました。デモアプリケーションとしてtravellistを使用します。このアプリケーションはMySQLデータベースから場所のリストを表示し、Laravelの基本設定を実演します。ユーザーのホームディレクトリに移動します:
|
1 |
$ cd ~ |
次のステップは、Composerを使用して新しいLaravelアプリケーションを作成することです。これにより、デフォルト設定の最小限のLaravelアプリケーションを含む専用のディレクトリtravellistが作成されます。次のコマンドを実行してください:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
アプリが構築されたら、すべてのコンポーネントが正常にインストールされたか確認できます:
|
1 2 |
$ cd travellist $ php artisan |
出力結果から、すべてのアプリケーションファイルが揃っていることが確認できます。また、すべてのLaravelコマンドラインツールが機能していることも保証されます。ただし、データベースのセットアップやいくつかの追加調整を行うために、アプリの設定がまだ必要です。
ステップ 4 – Laravelの設定
すべてのLaravel設定ファイルは、ルートアプリディレクトリ内のconfigという名前のディレクトリに保存されています。さらに、ComposerでLaravelをインストールすると、環境ファイルも作成されます。これには、現在の環境に固有のさまざまな設定が含まれています。ここで宣言された値は、config.
にある通常の設定ファイルで設定された値よりも優先されます。一意のインストールごとに、データベース接続設定、アプリのURL、デバッグオプションなどの値を定義するための独自の環境ファイルが必要になります。環境ファイルには、データベースの資格情報やセキュリティキーなどの機密情報が含まれていることに注意してください。そのため、このファイルを公開共有しないことを強くお勧めします。
テキストエディタで環境ファイルを開きます:
|
1 |
$ nano .env |
以下は環境ファイルのサンプルコードです:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
それぞれの値について詳しく見ていきましょう:
APP_NAME:このフィールドはアプリケーションの名前を表します。この名前は通知やメッセージに使用されます。APP_ENV:アプリケーションの現在の環境です。APP_KEY:このキーは、Composerを介してLaravelをインストールするときに自動的に生成されます。ソルトやハッシュの生成に使用されます。変更する必要はありません。APP_DEBUG:デバッグモードの切り替えです。オンにすると、クライアント側にデバッグ情報が表示されます。APP_URL:アプリのベースURLです。アプリケーションのリンクを生成するためにも使用されます。DB_DATABASE:データベースの名前です。この場合は、作成した専用のデータベースになります。DB_USERNAME:データベースに接続するためのユーザー名です。DB_PASSWORD:データベースに接続するためのパスワードです。
変更が完了したら、ファイルを保存してエディタを閉じます。
ステップ 5 – Nginxのセットアップ
ユーザーのホームディレクトリのローカルフォルダにLaravelを正常にインストールしました。この設定はローカル開発環境では問題なく動作します。ただし、パブリックインターネットに公開されているWebサーバーに実装することはお勧めしません。
次のステップは、アプリケーションを/var/wwwに移動することです。ここはNginxで実行されるWebアプリの通常の場所です。mvコマンドを使用して、travellistを/var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
次に、ユーザーにstorageおよびcacheフォルダへの書き込みアクセス権を割り当てます。これらはLaravelアプリが生成するファイルの場所です。
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
これでアプリケーションファイルが配置されました。ただし、Nginxにコンテンツを提供するように指示する必要があります。新しい仮想ホスト設定ファイルを作成します。
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
以下は、Nginxで実行されるLaravelアプリケーションの推奨設定のサンプルです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
新しい仮想ホスト設定ファイルを有効にします。sites-enabledディレクトリへのシンボリックリンクを作成します。
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
次のNginxコマンドは、設定ファイルの構文エラーをテストします。
|
1 |
$ sudo nginx -t |
次に、Nginxをリロードします。
|
1 |
$ sudo systemctl reload nginx |
これで、ドメイン名またはIPアドレス(server_nameディレクティブで定義されているもの)を使用してアプリケーションにアクセスできるようになります。
ステップ6 – メインページのカスタマイズ
Laravelアプリケーションの設定が完了したので、作業を開始できます。デモンストレーションとして、データベーステーブルplacesのサンプルデータを表示するサンプルページを作成します。まず、テキストエディタでメインのルートファイルを開きます。
|
1 |
$ nano routes/web.php |
ファイルにはデフォルトでいくつかのコンテンツが含まれています。ここでは、静的メソッド(Route::get)を使用してルートが定義されています。これは、引数としてpathとcallback functionを受け取ります。
コードを次のものに置き換えます。
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return ビュー('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
ファイルを保存してエディタを閉じます。次に、データベースのクエリ結果をユーザーにレンダリングするためのレイアウトを作成します。以下のディレクトリ内に新しいファイルを作成します:resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
以下のコードでは、次の値に応じて2つの場所のリストを作成しました:visited と togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>旅行リスト</title> </head> <body> <h1>私の旅行バケットリスト</h1> <h2>訪れたい場所</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>訪問済み</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
ファイルを保存してエディタを閉じます。ここで、再びウェブアプリのページにアクセスします:
これで完了です!コンテンツにMySQLデータベースを使用する、機能的なLaravelアプリケーションが作成されました。
最後に
このチュートリアルでは、Ubuntu 20.04サーバー上で動作するLEMPスタックの上にLaravelアプリケーションをセットアップする方法を説明しました。また、デフォルトのルートをカスタマイズしてデータベースのコンテンツをクエリし、カスタムビューに結果を表示する方法も紹介しました。Laravelの詳細については、以下の公式ドキュメントを参照してください:ビュー, ルート、およびデータベースサポート.
このチュートリアルのインストールはスタンドアロンの仮想マシン上で行われます。ただし、次のことも可能です:Docker上のLEMPスタックにLaravelをデプロイする.
ハッピーコンピューティング!









コメント
コメントはまだありません。最初のコメントを投稿しましょう。