LaravelWebアプリケーションをUbuntu20.04LTSマシンにデプロイするために知っておく必要のあるすべて
Laravelは非常に人気のあるオープンソースのPHPフレームワークであり、モダンで美しいWebアプリケーションの設計に使用される表現力豊かでエレガントな構文を備えています。 Laravelは、Web開発の苦痛を取り除き、Web開発者をWeb職人に変えて、楽しくクリエイティブな体験にすることを目指しています。
このガイドでは、LAMPスタックを備えたLaravelをUbuntu 20.04サーバーにインストールして、Webアプリケーションを起動して実行する方法を学習します。
前提条件
このガイドに従うには、Ubuntu 20.04 LTSサーバーが必要であり、としてログインする必要があります。 sudo
ユーザー。始める前に、以下を実行してUbuntu20.04パッケージを更新およびアップグレードします。
sudo apt update && sudo apt upgrade
LAMPスタックのインストール
LAMPはの頭字語です L inuxオペレーティングシステム、 A pache Webサーバー、 M ySQLデータベースと P HPプログラミング言語。私たちはすでにUbuntu20.04を使用しており、LAMPスタックでLinuxをチェックしています。したがって、残りの3つのパッケージをインストールして、LaravelアプリケーションのLAMPスタックを完成させます。
Ubuntu20.04リポジトリにLAMPスタックをインストールするために利用できるメタパッケージはありません。しかし、私たちはのきちんとした小さな機能を使用することができます apt
タスクと呼ばれるパッケージマネージャー。タスクは、士官候補生で利用可能なタスクの名前を使用して示されます(^
)それに追加されます。
sudo apt install lamp-server ^
このコマンドは、パッケージリストファイルですべての「タスク:」フィールドを検索し、タスクフィールドに「lamp-server」が含まれるすべてのパッケージをインストールします。そのため、Apache、MySQL、およびPHPパッケージとそれらのすべての依存関係で構成されるLAMPスタックがUbuntuサーバーにインストールされます。
ファイアウォールを構成する
LAMPスタックをインストールしたら、インターネットからApacheサーバーにアクセスできるように、Uncomplicate Firewall(UFW)を構成し、そのルールを変更する必要もあります。
UFWは、ルールを変更したり、ネットワークポートのトラフィックを切り替えたりするために使用できるシンプルなアプリケーションプロファイルを提供します。次のコマンドを実行して、ネットワークポートにアクセスするすべてのアプリケーションを一覧表示します。
sudoufwアプリリスト
次のような出力が表示されます。
利用可能なアプリケーション:Apache Apache Full Apache Secure OpenSSH
これらのプロファイルがUbuntu20.04サーバーで開くネットワークポートを以下に示します。
- Apache:このプロファイルはポートを開くだけです
80
(HTTPトラフィックを許可します) - Apache Full:このプロファイルは両方を開きます
80
&443
ポート(HTTPおよびHTTPSトラフィックを許可) - Apache Secure:このプロファイルはポートのみを開きます
443
(HTTPSトラフィックを許可します) - OpenSSH:このプロファイルはポートを開きます
22
SSHプロトコルを許可します
インターネットからApacheWebサーバーへのトラフィックを許可する「ApacheFull」プロファイルを有効にする必要があります。さらに、ポートでのトラフィックを許可する「OpenSSH」プロファイルも有効にする必要があります 22
(SSH)Ubuntu20.04サーバー。 「OpenSSH」プロファイルを許可せずにUFWを有効にすると、SSHを使用してサーバーに接続できなくなります。
UFWルールを変更し、ポートでのトラフィックを許可するには 80
と 22
、 走る:
sudo ufw allow'Apache Full 'sudo ufw allow'OpenSSH'
次に、次のコマンドを使用してUFWファイアウォールを有効にします。
sudo ufw enable
「コマンドによって既存のssh接続が中断される可能性があります。操作を続行しますか(y | n)?」押す Y
UFWでSSHを許可するルールをすでに追加しているので続行します。
これで、インターネットからUbuntuサーバーのIPアドレスを使用してApacheのデフォルトのWebページにアクセスできます。これを行うには、ブラウザを開き、URLバーにUbuntu 20.04サーバーのIPアドレスを入力して、Enterキーを押します。
// Your_ubuntu_server_ip
このページでは、Apache Webサーバーが正しく実行されており、UFWルールが正しく設定されていることを確認します。
Laravel用のMySQLデータベースのセットアップ
Laravel 7は、MySQLバージョン5.6以降、PostgreSQL 9.4以降、SQLite 3.8.8以降、SQL Server 2017以降など、サポートするさまざまなデータベースバックエンド間でデータベースとのやり取りを非常に簡単にします。すでに最新のMySQLパッケージがインストールされています ランプサーバー^
仕事。したがって、このセクションでは、MySQLサーバーを構成してから、Laravelアプリケーション用に新しいMySQLユーザーとデータベースをセットアップする方法を見ていきます。
MySQLを構成する
MySQLデータベースには、安全でないデフォルト設定を削除するために使用できるセキュリティスクリプトがプリインストールされています。 Laravelアプリケーションをデプロイする前に、このスクリプトを実行することをお勧めします。
sudo mysql_secure_installation
上記のコマンドは、MySQLサーバーを構成するための一連の質問を求めるセキュリティスクリプトを実行します。
まず、セットアップするかどうかを尋ねられます 検証パスワード
プラグイン。このプラグインはパスワードをチェックし、すぐに選択するパスワード検証ポリシーレベルに基づいて、パスワードを安全または安全でないものとしてランク付けします。だからプレス Y このプラグインを有効にする場合。
出力: MySQLサーバーのデプロイメントを保護します。空白のパスワードを使用してMySQLに接続します。 VALIDATE PASSWORD COMPONENTを使用して、パスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。 VALIDATE PASSWORDコンポーネントをセットアップしますか?はいの場合はy | Yを押し、いいえの場合はその他のキーを押します。 Y
次に、次のいずれかを入力して、パスワード検証ポリシーレベルを設定します。 0
, 1
また 2
データベースのパスワードを作成する強度によって異なります。
出力: パスワード検証ポリシーには、次の3つのレベルがあります。LOW長さ> = 8MEDIUM長さ> = 8、数字、大文字と小文字、および特殊文字STRONG長さ> = 8、数字、大文字と小文字、特殊文字、および辞書ファイル0 = LOW、 1 =中および2 =強: 2
次に、MySQLrootユーザーの新しいパスワードを入力するように求められます。 MySQLルートに適したパスワードを入力します。 VALIDATE PASSWORDプラグインは、パスワード検証レベルに応じて、パスワードの推定強度を提供します。押す Y
指定したパスワードで続行します。
出力: ここでrootのパスワードを設定してください。新しいパスワード:新しいパスワードを再入力します:パスワードの推定強度:100提供されたパスワードを続行しますか?([はい]の場合はy | Yを押し、[いいえ]の場合は他のキーを押します): Y
押す Y
残りのプロンプトでは、一部の匿名ユーザーとテストデータベースを削除し、リモートrootログインを無効にして、MySQLサーバーの新しい設定を再読み込みします。終了したら、次を実行してデータベースをテストします。
sudo mysql
上記のコマンドはMySQLコンソールを開き、MySQLデータベースに接続します。 根 ユーザー。次のような出力が表示されます。
出力: MySQLモニターへようこそ。コマンドは;で終わりますまたは\ g。 MySQL接続IDは10サーバーバージョンです:8.0.20-0ubuntu0.20.04.1(Ubuntu)Copyright(c)2000、2020、Oracleおよび/またはその関連会社。全著作権所有。 Oracleは、OracleCorporationおよび/またはその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標である可能性があります。 'help;'と入力しますまたは「\ h」でヘルプを表示します。 '\ c'と入力して、現在の入力ステートメントをクリアします。 mysql>
MySQLrootユーザーに設定したパスワードを入力する必要がないことに気付いたかもしれません。これは、管理用MySQLrootユーザーのデフォルトの認証方法が cache_sha2_authentication
の代わりに mysql_native_password
パスワードを使用してログインする方法。
したがって、デフォルトでは、MySQLrootユーザーとしてのみログインできます。 sudo
MySQLサーバーの追加のセキュリティとして機能する有効なユーザー。ただし、MySQLPHPライブラリはサポートしていません cache_sha2_authentication
方法。したがって、使用する必要があります mysql_native_password
Laravelがデータベースに接続して対話するためにパスワードを使用するため、Laravelの新しいユーザーを作成するときのメソッド。
新しいMySQLユーザーとデータベースを作成する
MySQLのrootユーザーとテストデータベースを使用するのではなく、アプリケーション専用の新しいユーザーとデータベースを作成することをお勧めします。そこで、次の名前の新しいMySQLユーザーを設定します。 laravel_user
と呼ばれるデータベース laravel
。この時点までチュートリアルに従っている場合は、MySQLコンソールを開いておく必要があります。と呼ばれるユーザーを作成するには laravel_user
MySQLコンソールで次のクエリを実行します。
ノート: 交換してください テストパス
以下の強力なパスワードを使用したMySQLクエリ。
CREATE USER'laravel_user '@'% 'IDENTIFIED WITH mysql_native_password BY'testpass';
次に、というデータベースを作成します laravel
このクエリを実行して、Laravelアプリケーションの場合:
CREATE DATABASE laravel;
MySQLルートユーザーのみが、新しく作成されたデータベースlaravelへのアクセス許可を持っています。に対するすべての権限を付与します laravel
データベースから laravel_user
実行することによって:
すべてをlaravelに付与します。* TO'laravel_user '@'% ';
これで、新しいMySQLユーザーとデータベースができました。次のコマンドを実行してMySQLコンソールを終了します。
出口;
MySQLコンソールにログインして新しいMySQLユーザーをテストするには、ターミナルで次のコマンドを実行します。
mysql -u laravel_user -p
に注意してください -p
コマンドにフラグを立てると、作成時に使用したパスワードの入力を求められます。 laravel_user
(テストパス
クエリ内)。 MySQLコンソールに次のようにログインした後 laravel_user
、ユーザーがにアクセスできることを確認します laravel
実行することによるデータベース:
データベースを表示します。
出力: + -------------------- + |データベース| + -------------------- + | laravel | | information_schema | + -------------------- + 2行セット(0.01秒)
上記の出力は、MySQLユーザーが laravel_user
データベースへのアクセス許可があります laravel
。を使用してMySQLコンソールを終了します 出口;
クエリを実行して、DemoAppLaravelアプリケーションの作成に進むことができます。
Laravelのインストール
Laravelフレームワークは、Composerを利用して依存関係をダウンロードおよび管理します。したがって、Laravelアプリケーションを作成する前に、Ubuntu20.04マシンにComposerをインストールする必要があります。
Composerをインストールします
Composerは、PHPの依存関係マネージャーツールであり、PHPフレームワークとライブラリのインストールと更新を非常に簡単にします。このチュートリアルでは、Composerをすばやくインストールして、Laravelフレームワークのダウンロードと管理に使用できるようにする方法を見ていきます。
Composerが機能するために必要ないくつかの追加パッケージをインストールする必要があります。 php-cli
ターミナルでPHPスクリプトを実行し、 解凍
Composerがパッケージを抽出するのに役立ちます。次のコマンドを実行して、両方をインストールします。
sudo apt install php-cli unzip
次に、Composerをグローバルにインストールするには、次のコマンドを使用してComposerインストールスクリプトをダウンロードします。 カール
次のコマンドを使用してインストールします。
curl -sS //getcomposer.org/installer | sudo php --- install-dir = / usr / local / bin --filename = composer
最後に、以下を実行して、コンポーザーが正しくインストールされていることを確認します。
作曲
______ / ____ / ___ ____ ___ ____ ____ ________ _____ / / / __ \ / __ `__ \ / __ \ / __ \ / ___ / _ \ / ___ / / / _ / / / / _ /(__)__ / / \ ____ / \ ____ / _ / / _ / / _ / .___ / \ ____ / ____ / \ ___ / _ / / _ / Composerバージョン1.10.82020-06- 24 21:23:30使用法:コマンド[オプション] [引数]
この出力は、ComposerがUbuntu 20.04サーバーで正しく機能していることを確認します。これを使用して、PHPフレームワークとライブラリをインストールおよび管理できます。
Laravelアプリケーションを作成する
いくつかのPHP拡張機能を除いて、Ubuntu20.04サーバーでLaravelアプリケーションを作成するために必要なものはほぼすべて揃っています。次のコマンドを使用して、これらの不足している拡張機能をインストールします。
sudo apt install php-mbstring php-xml php-bcmath php-zip php-json
これで、Composerを使用してLaravelをインストールし、新しいLaravelアプリケーションを作成できます。まず、ユーザーのホームディレクトリにいることを確認します。
cd〜
次に、Composerのを使用して新しいLaravelプロジェクトを作成します create-project
指図:
作曲家create-project--prefer-dist laravel / laravel LaravelApp
上記のコマンドは、LaravelAppという新しいプロジェクトを作成し、LaravelFrameworkをインストールして構成します。次のような出力が表示されます。
出力: 「./LaravelApp」での「laravel / laravel」プロジェクトの作成laravel / laravel(v7.12.0)のインストールlaravel / laravel(v7.12.0)のインストール:ダウンロード(100%)/ home / ath / LaravelApp @ phpにプロジェクトを作成しました- r "file_exists( '。env')|| copy( '。env.example'、 '。env');"パッケージ情報を含むcomposerリポジトリのロード依存関係の更新(require-devを含む)パッケージ操作:97インストール、0更新、0削除voku / portal-ascii(1.5.2)のインストール:ダウンロード(100%)symfony / polyfill-ctype(v1 .17.1):ダウンロード(100%)phpoption / phpoption(1.7.4)のインストール:ダウンロード(100%)vlucas / phpdotenv(v4.1.7)のインストール:ダウンロード(100%)symfony / css-selector(v5.1.2)のインストール:ダウンロード(100%)...。
インストールが完了したら、アプリケーションのルートディレクトリに移動し、Laravelの 職人
すべてのコンポーネントが正しくインストールされていることを確認するコマンド:
cd LaravelApp / php職人
出力: Laravel Framework 7.18.0使用法:コマンド[オプション] [引数]オプション:-h、-helpこのヘルプメッセージを表示します-q、-quietメッセージを出力しません-V、-versionこのアプリケーションのバージョンを表示します--ansi ANSI出力を強制する--no-ansiANSI出力を無効にする-n、-no-interactionインタラクティブな質問をしないでください--env [= ENV]コマンドを実行する環境-v | vv | vvv、-verbose増加メッセージの冗長性:1は通常の出力用、2はより詳細な出力用、3はデバッグ用...。
この出力は、インストールが成功し、すべてのファイルが配置され、Laravelコマンドラインツールが正しく機能していることを確認します。ただし、データベースとその他のいくつかの設定をセットアップするようにアプリケーションを構成する必要があります。
Laravelアプリケーションを構成する
Laravel構成ファイルは、というディレクトリにあります。 構成
アプリケーションのルートディレクトリ内。さらに、Composerを介してLaravelをインストールすると、アプリケーションのルートディレクトリに「.env」という環境ファイルが作成されました。環境ファイルには環境固有の構成が含まれており、構成ディレクトリ内にある通常の構成ファイルの設定よりも優先されます。
注:環境構成ファイルには、データベースパスワード、Laravelアプリケーションキーなどのサーバーに関する機密情報が含まれています。したがって、公開して共有しないでください。
ここで編集します .env
構成を変更し、それにデータベース資格情報を追加するファイル。次のコマンドを実行して、nanoエディターを使用してファイルを開きます。
nano .env
これには多くの構成変数があります .env
ファイル。 Composerはほとんどの設定を自動的に構成しているため、それぞれを変更する必要はありません。したがって、知っておく必要のある主要な構成変数のリストを次に示します。
APP_NAME
:通知とメッセージに使用されるアプリケーション名なので、「LaravelApp」に設定します。APP_ENV
:この変数は、現在のアプリケーション環境を示すために使用されます。ローカル、開発、テスト、または実稼働環境に設定できます。とりあえず開発環境に設定します。APP_KEY
:Webアプリのソルトとハッシュを作成するために使用される一意のアプリケーションキー。 Composerを介してLaravelをインストールすると自動的に生成されるため、これを変更する必要はありません。APP_DEBUG
:クライアント側でエラーを表示するかどうかに応じて、trueまたはfalseのいずれかに設定できます。本番環境に移行するときは、falseに設定してください。APP_URL
:アプリケーションのベースURLまたはIP。Laravelアプリ用のドメイン名がある場合はドメイン名に変更するか、今のところ変更しないでください。DB_DATABASE
:Laravelアプリケーションで使用するデータベースの名前。 MySQLの構成中に作成したMySQLデータベース「laravel」を使用します。DB_USERNAME
:データベースに接続するためのユーザー名。作成したMySQLユーザー「laravel_user」を使用します。DB_PASSWORD
:データベースに接続するためのパスワード。
APP_NAME =LaravelApp
APP_ENV =発達
APP_KEY =base64:Application_unique_key
APP_DEBUG = true APP_URL =// domain_or_IP
LOG_CHANNEL = stack DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = laravel DB_USERNAME =laravel_user
DB_PASSWORD =テストパス
に変更を加える .env
それに応じてファイルし、編集が完了したら、を使用してファイルを保存して終了します CTRL + X
次にを押します Y
Enterキーを押して確認します。あとは、Apacheサーバーを構成し、Laravelアプリケーションの仮想ホストを作成するだけです。
ApacheWebサーバーのセットアップ
ユーザーのホームディレクトリのローカルフォルダにLaravelをインストールしました。これはローカル開発では完全に機能しますが、Webアプリケーションディレクトリを次の場所に配置することをお勧めします。 / var / www
。 Laravelをインストールしなかった理由 / var / www
これは、rootが所有しているため、Composerを一緒に使用しないでください。 sudo
.
したがって、 mv
Laravelアプリケーションフォルダとその内容をに移動するコマンド / var / www
:
sudo mv〜 / Laravel / / var / www
LaravelAppディレクトリはユーザーが所有しているため、ファイルを使用せずにファイルを編集および変更できます。 sudo
指図。ただし、Laravelはアプリケーションで生成されたファイルを格納するため、ApacheWebサーバーはアプリケーションのキャッシュおよびストレージディレクトリにアクセスする必要があります。これらのフォルダの所有者をに変更します www-data
を使用しているユーザー chown
指図:
sudo chown -R www-data.www-data / var / www / LaravelApp / storage sudo chown -R www-data.www-data / var / www / LaravelApp / bootstrap / cache
これらのディレクトリの所有者を変更した後、Apacheのを有効にします mod_rewrite
Laravelは、ルーティング機能によって解釈されるURLを適切に変換する必要があるためです。 .htaccess
ファイル。
sudo a2enmod rewrite
次に、Laravelアプリケーションの仮想ホストを設定する必要があります。仮想ホストの構成は次の場所にあります。 / etc / apache2 / sites-利用可能
。デフォルトの仮想ホストファイルを編集して、Laravelアプリケーションをデプロイします。 nanoエディターを使用してデフォルトの仮想ホスト構成ファイルを開きます。
sudo nano /etc/apache2/sites-available/000-default.conf
ドキュメントルートをから変更します / var / www / html
に / var / www / LaravelApp / public
DocumentRoot行の下に次のスニペットを追加します。
AllowOverride All
あなたの 000-default.conf
コメントがほとんどないので、このようになります。
ServerAdmin webmaster @ localhost DocumentRoot / var / www / LaravelApp / public AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log結合
次のコマンドを実行して、ApacheWebサーバーを再起動します。
sudo systemctl restart apache2
次に、ブラウザに移動して、Ubuntu20.04サーバーのIPアドレスを入力します。デフォルトのApacheウェルカムページの代わりにLaravelスタートページが表示されます。
これまでにこのガイドに従っていると仮定すると、MySQLデータベースを備えたLaravelアプリケーションが機能しているはずです。 laravel
それのための。この時点から、Laravelアプリケーションの開発を自分で開始できます。 Laravelフレームワークとその使用法の詳細については、Laravelのドキュメントページをご覧ください。