Ubuntu 18.04でLEMPを使用してLaravelをインストールおよび構成する方法

前書き

https://laravel.com [Laravel]は、最新のPHPアプリケーションを構築するためのツールとリソースのセットを提供するオープンソースのPHPフレームワークです。 https://laravel.com/#ecosystem [完全なエコシステム]に組み込まれた機能を活用することで、Laravelの人気は過去数年で急速に成長し、多くの開発者が合理化された開発プロセスのフレームワークとして採用しています。

このガイドでは、フレームワークの依存関係をダウンロードおよび管理するためにhttps://getcomposer.org/[Composer]を使用して、Ubuntu 18.04サーバーに新しいLaravelアプリケーションをインストールして構成します。 完了すると、MySQLデータベースからコンテンツをプルする機能的なLaravelデモアプリケーションが作成されます。

前提条件

このガイドを完了するには、まずUbuntu 18.04サーバーで次のタスクを実行する必要があります。

  • * + sudo +`ユーザーを作成し、 `+ ufw + *を有効にします。 これを設定するには、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 [Ubuntu 18.04での初期サーバー設定]ガイドに従ってください。

  • * LEMPスタックをインストールします*。 まだセットアップしていない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-のガイドに従ってください。 18-04 [Ubuntu 18.04にNginx、MySQL、PHPをインストールする方法]。

  • * Composer *をインストールします。 Composerを使用して、Laravelとその依存関係をインストールします。 Composerをインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-18-04 [Ubuntu 18.04にComposerをインストールする方法]のガイドに従ってください。 ]。

ステップ1-必要なPHPモジュールのインストール

Laravelをインストールする前に、フレームワークに必要ないくつかのPHPモジュールをインストールする必要があります。 + apt-`を使用して、 + php-mbstring`、 + php-xml、および` + php-bcmath` PHPモジュールをインストールします。 これらのPHP拡張機能は、文字エンコード、XML、および精密数学を処理するための特別なサポートを提供します。

このセッションで初めて `+ apt `を使用する場合、最初に ` update +`コマンドを実行してパッケージマネージャーキャッシュを更新する必要があります。

sudo apt update

これで必要なパッケージをインストールできます:

sudo apt install php-mbstring php-xml php-bcmath

これでシステムはComposerを介してLaravelのインストールを実行する準備ができましたが、実行する前に、アプリケーション用のデータベースが必要になります。

手順2-アプリケーションのデータベースの作成

Laravelの基本的なインストールと使用方法を示すために、サンプルの_travel list_アプリケーションを作成して、ユーザーが旅行したい場所のリストと、既に訪れた場所のリストを表示します。 これは、* name と呼ばれる場所のフィールドと、それらを visited_または_not visited_とマークする別のフィールドを持つ単純な* places テーブルに保存できます。これは visited と呼ばれます。 さらに、各エントリを一意に識別する id *フィールドが含まれます。

Laravelアプリケーションからデータベースに接続するには、専用のMySQLユーザーを作成し、このユーザーに `+ travel_list +`データベースに対する完全な権限を付与します。

開始するには、* root *データベースユーザーとしてMySQLコンソールにログインします。

sudo mysql

新しいデータベースを作成するには、MySQLコンソールから次のコマンドを実行します。

CREATE DATABASE ;

これで、新しいユーザーを作成し、作成したカスタムデータベースに対する完全な権限を付与できます。 この例では、パスワード「++」で* travel_user *という名前のユーザーを作成していますが、これを任意の安全なパスワードに変更する必要があります。

GRANT ALL ON .* TO ''@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;

これにより、* travel_user *ユーザーに `+ travel_list +`データベースに対する完全な権限が付与されますが、このユーザーはサーバー上で他のデータベースを作成または変更できなくなります。

これに続いて、MySQLシェルを終了します。

exit

これで、カスタムユーザー資格情報を使用して、MySQLコンソールに再度ログインすることにより、新しいユーザーが適切な権限を持っているかどうかをテストできます。

mysql -u  -p

このコマンドの「+ -p 」フラグに注意してください。これは、* travel_user *ユーザーを作成するときに使用するパスワードの入力を求めます。 MySQLコンソールにログインした後、 ` travel_list +`データベースにアクセスできることを確認します。

SHOW DATABASES;

これにより、次のような出力が得られます。

Output+--------------------+
| Database           |
+--------------------+
| information_schema |
| travel_list        |
+--------------------+
2 rows in set (0.01 sec)

次に、 `+ travel_list `データベースに ` places +`という名前のテーブルを作成します。 MySQLコンソールから、次のステートメントを実行します。

CREATE TABLE . (
   id INT AUTO_INCREMENT,
   name VARCHAR(255),
   visited BOOLEAN,
   PRIMARY KEY(id)
);

ここで、 `+ places +`テーブルにサンプルデータを入力します。

INSERT INTO . (name, visited)
VALUES ("", ),
("", ),
("", ),
("", ),
("", ),
("", ),
("", ),
("", ),
("", ),
("", ),
("", );

データがテーブルに正常に保存されたことを確認するには、次を実行します。

SELECT * FROM .;

次のような出力が表示されます。

Output+----+-----------+---------+
| id | name      | visited |
+----+-----------+---------+
|  1 | Tokyo     |       0 |
|  2 | Budapest  |       1 |
|  3 | Nairobi   |       0 |
|  4 | Berlin    |       1 |
|  5 | Lisbon    |       1 |
|  6 | Denver    |       0 |
|  7 | Moscow    |       0 |
|  8 | Oslo      |       0 |
|  9 | Rio       |       1 |
| 10 | Cincinati |       0 |
| 11 | Helsinki  |       0 |
+----+-----------+---------+
11 rows in set (0.00 sec)

テストテーブルに有効なデータがあることを確認したら、MySQLコンソールを終了できます。

exit

これで、アプリケーションを作成し、新しいデータベースに接続するように構成する準備ができました。

ステップ3-新しいLaravelアプリケーションの作成

これで、 `+ composer create-project`コマンドを使用して新しいLaravelアプリケーションを作成します。 このComposerコマンドは通常、既存のフレームワークとコンテンツ管理システムに基づいて新しいアプリケーションをブートストラップするために使用されます。

このガイド全体を通して、アプリケーション例として「+ travel_list 」を使用しますが、これを他のものに自由に変更できます。 ` travel_list +`アプリケーションは、ローカルのMySQLサーバーから取得した場所のリストを表示します。これは、Laravelの基本設定を示し、データベースに接続できることを確認するためのものです。

まず、ユーザーのホームディレクトリに移動します。

cd ~

次のコマンドは、デフォルト設定に基づいてベアボーンLaravelアプリケーションを含む新しい「+ travel_list +」ディレクトリを作成します。

composer create-project --prefer-dist laravel/laravel

次のような出力が表示されます。

OutputInstalling laravel/laravel (v5.8.17)
 - Installing laravel/laravel (v5.8.17): Downloading (100%)
Created project in travel_list
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 80 installs, 0 updates, 0 removals
 - Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)
 - Installing phpoption/phpoption (1.5.0): Downloading (100%)
 - Installing vlucas/phpdotenv (v3.4.0): Downloading (100%)
 - Installing symfony/css-selector (v4.3.2): Downloading (100%)
...

インストールが完了したら、アプリケーションのディレクトリにアクセスし、Laravelの「+ artisan +」コマンドを実行して、すべてのコンポーネントが正常にインストールされたことを確認します。

cd
php artisan

次のような出力が表示されます。

OutputLaravel Framework 5.8.29

Usage:
 command [options] [arguments]

Options:
 -h, --help            Display this help message
 -q, --quiet           Do not output any message
 -V, --version         Display this application version
     --ansi            Force ANSI output
     --no-ansi         Disable ANSI output
 -n, --no-interaction  Do not ask any interactive question
     --env[=ENV]       The environment the command should run under
 -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

(...)

この出力は、アプリケーションファイルが適切に配置されており、Laravelコマンドラインツールが期待どおりに機能していることを確認します。 ただし、データベースとその他のいくつかの詳細を設定するには、アプリケーションを構成する必要があります。

ステップ4-Laravelの構成

Laravel設定ファイルは、アプリケーションのルートディレクトリ内の「+ config 」というディレクトリにあります。 さらに、ComposerでLaravelをインストールすると、環境ファイルが作成されます。 このファイルには、アプリケーションが実行されている現在の環境に固有の設定が含まれており、 ` config +`ディレクトリにある通常の設定ファイルに設定されている値よりも優先されます。 新しい環境での各インストールには、データベース接続設定、デバッグオプション、アプリケーションURLなど、アプリケーションが実行されている環境によって異なる可能性がある項目を定義するためのカスタマイズされた環境ファイルが必要です。

`+ .env +`ファイルを編集して、現在のアプリケーション環境の設定オプションをカスタマイズします。

任意のコマンドラインエディターを使用して、 `+ .env `ファイルを開きます。 ここでは、 ` nano +`を使用します。

nano .env

このファイルには多くの構成変数がありますが、すべてを設定する必要はありません。 次のリストには、すぐに注意が必要な変数の概要が含まれています。

  • + APP_NAME +:通知とメッセージに使用されるアプリケーション名。

  • + APP_ENV +:現在のアプリケーション環境。

  • + APP_KEY +:ソルトとハッシュの生成に使用されます。この一意のキーは、Composerを介してLaravelをインストールするときに自動的に作成されるため、変更する必要はありません。

  • + APP_DEBUG +:クライアント側でデバッグ情報を表示するかどうか。

  • + APP_URL +:アプリケーションのリンクを生成するために使用される、アプリケーションのベースURL。

  • + DB_DATABASE +:データベース名。

  • + DB_USERNAME +:データベースに接続するためのユーザー名。

  • + DB_PASSWORD +:データベースに接続するためのパスワード。

デフォルトでは、これらの値は、Laravelが提供するパッケージ済みのVagrantボックスであるhttps://laravel.com/docs/5.8/homestead[Homestead]を使用するローカル開発環境用に設定されます。 サンプルアプリケーションの現在の環境設定を反映するために、これらの値を変更します。

*開発*または*テスト*環境でLaravelをインストールする場合、 + APP_DEBUG +`オプションを有効のままにしておくことができます。これにより、ブラウザからアプリケーションをテストする際に重要なデバッグ情報が得られます。 この場合、 `+ APP_ENV`変数は + development`または `+ testing`に設定する必要があります。

*本番環境でLaravelをインストールする場合、アプリケーションに関する最終的なユーザーの機密情報を表示するため、 `+ APP_DEBUG `オプションを無効にする必要があります。 この場合の「 APP_ENV」は「+ production」に設定する必要があります。

次の `+ .env +`ファイルは、* development *のサンプルアプリケーションを設定します。

/var/www/travel_list/.env

APP_NAME=
APP_ENV=
APP_KEY=
APP_DEBUG=
APP_URL=http://

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

...

それに応じて変数を調整します。 編集が完了したら、ファイルを保存して閉じ、変更を保持します。 「+ nano 」を使用している場合は、「 CTRL + X 」、次に「 Y 」、「 Enter +」で確認できます。

これでLaravelアプリケーションがセットアップされましたが、ブラウザーからアクセスできるようにWebサーバーを構成する必要があります。 次のステップでは、Laravelアプリケーションを提供するようにNginxを構成します。

ステップ5-Nginxのセットアップ

リモートユーザーのホームディレクトリのローカルフォルダーにLaravelをインストールしました。これはローカル開発環境ではうまく機能しますが、パブリックインターネットに公開されているウェブサーバーにはお勧めできません。 アプリケーションフォルダーを `+ / var / www +`に移動します。これは、Nginxで実行されるWebアプリケーションの通常の場所です。

まず、 `+ mv `コマンドを使用して、アプリケーションフォルダーとそのすべてのコンテンツを ` / var / www / travel_list +`に移動します。

sudo mv ~/ /var/www/

次に、Webサーバーユーザーに、Laravelがアプリケーション生成ファイルを保存する + storage`および + cache`フォルダーへの書き込みアクセスを許可する必要があります。

sudo chown -R www-data.www-data /var/www//storage
sudo chown -R www-data.www-data /var/www//bootstrap/cache

これでアプリケーションファイルが整いましたが、コンテンツを提供するためにNginxを構成する必要があります。 これを行うために、 `+ / etc / nginx / sites-available +`に新しい仮想ホスト設定ファイルを作成します:

sudo nano /etc/nginx/sites-available/

次の構成ファイルには、Nginx上のLaravelアプリケーションのhttps://laravel.com/docs/5.8/deployment#server-configuration [推奨]設定が含まれています。

/ etc / nginx / sites-available / travel_list

server {
   listen 80;
   server_name ;
   root /var/www//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.2-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
       include fastcgi_params;
   }

   location ~ /\.(?!well-known).* {
       deny all;
   }
}

このコンテンツを `+ / etc / nginx / sites-available / +`ファイルにコピーし、必要に応じて、強調表示された値を調整して独自の設定に合わせます。 編集が完了したら、ファイルを保存して閉じます。

新しい仮想ホスト設定ファイルを有効にするには、 `+ sites-enabled `で ` travel_list +`へのシンボリックリンクを作成します。

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

構成に構文エラーが含まれていないことを確認するには、次を使用できます。

sudo nginx -t

次のような出力が表示されます。

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

変更を適用するには、次を使用してNginxをリロードします。

sudo systemctl reload nginx

ブラウザに移動して、設定ファイルの `+ server_name +`ディレクティブで定義されているサーバーのドメイン名またはIPアドレスを使用してアプリケーションにアクセスします。

http://

次のようなページが表示されます。

image:https://assets.digitalocean.com/articles/laravel_ubuntu1804/laravel.png [Laravelスプラッシュページ]

これにより、NginxサーバーがLaravelに対応するように適切に構成されていることが確認できます。 この時点から、デフォルトのインストールで提供されるスケルトンの上にアプリケーションの構築を開始できます。

次のステップでは、Laravelの「+ DB +」ファサードを使用して、データベース内のデータを照会するようにアプリケーションのメインルートを変更します。

ステップ6-メインページのカスタマイズ

これまでにこのガイドのすべての手順を実行したと仮定すると、動作するLaravelアプリケーションと、いくつかのサンプルデータを含む「+ places +」という名前のデータベーステーブルが必要です。

メインアプリケーションルートを編集してデータベースを照会し、コンテンツをアプリケーションの_view_に返します。

メインルートファイル、 `+ routes / web.php`を開きます。

nano routes/web.php

このファイルには、デフォルトで次のコンテンツが含まれています。

routes / web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
   return view('welcome');
});
ルートは、静的メソッド `+ Route

get +`を使用してこのファイル内で定義されます。このメソッドは、引数として* path callback function *を受け取ります。

次のコードは、メインルートコールバック関数を置き換えます。 結果をフィルタリングするために `+ visited `フラグを使用してデータベースに2つのクエリを作成します。 結果を ` travel_list `という名前のビューに返します。これを次に作成します。 このコンテンツを ` routes / web.php`ファイルにコピーし、既にあるコードを置き換えます:

routes / web.php

<?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 view('travel_list', ['visited' => $visited, 'togo' => $togo ] );
});

編集が完了したら、ファイルを保存して閉じます。 次に、データベース結果をユーザーに表示するビューを作成します。 `+ resources / views +`内に新しいビューファイルを作成します。

nano resources/views/travel_list.blade.php

次のテンプレートは、変数 `+ visited `と ` togo +`に基づいて2つの場所のリストを作成します。 このコンテンツを新しいビューファイルにコピーします。

resources / views / travel_list / blade.php

<html>
<head>
   <title>Travel List</title>
</head>

<body>
   <h1>My Travel Bucket List</h1>
   <h2>Places I'd Like to Visit</h2>
   <ul>
     @foreach ($togo as $newplace)
       <li>{{ $newplace->name }}</li>
     @endforeach
   </ul>

   <h2>Places I've Already Been To</h2>
   <ul>
         @foreach ($visited as $place)
               <li>{{ $place->name }}</li>
         @endforeach
   </ul>
</body>
</html>

完了したら、ファイルを保存して閉じます。 ブラウザに移動して、アプリケーションをリロードします。 次のようなページが表示されます。

image:https://assets.digitalocean.com/articles/laravel_ubuntu1804/travel_list.png [デモLaravelアプリケーション]

これで、MySQLデータベースからコンテンツをプルする機能的なLaravelアプリケーションができました。

結論

このチュートリアルでは、Ubuntu 18.04サーバーで実行されるLEMPスタック(Linux、Nginx、MySQL、PHP)の上に新しいLaravelアプリケーションを設定しました。 また、データベースコンテンツを照会し、カスタムビューで結果を表示するようにデフォルトルートをカスタマイズしました。

ここから、アプリケーションに必要な追加ページの新しいルートとビューを作成できます。 routes、https://laravel.com/docs/5.8/views[views]、およびhttps:// laravelの詳細については、Laravelの公式ドキュメントを確認してください。 com / docs / 5.8 / database [データベースサポート]。 本番環境にデプロイする場合は、https://laravel.com/docs/5.8/deployment#optimization [最適化セクション]も確認して、アプリケーションのパフォーマンスを改善できるいくつかの方法を確認する必要があります。

セキュリティを強化するには、サーバーにTLS / SSL証明書をインストールし、HTTPS経由でコンテンツを提供できるようにすることを検討する必要があります。 このため、https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04 [how to Ubuntu 18.04でLet’s Encryptを使用してNginxインストールを保護します。

Related