Ubuntu14.04でNginxWebサーバーを使用してLaravelをインストールする方法
序章
Laravelは、Web開発者向けの最新のオープンソースPHPフレームワークです。 これは、開発者が完全に機能するWebアプリケーションをすばやく実行するための簡単でエレガントな方法を提供することを目的としています。
このガイドでは、Ubuntu14.04にLaravelをインストールする方法について説明します。 WebサーバーとしてNginxを使用し、この記事の執筆時点で最新バージョンのLaravelバージョン4.2を使用します。
バックエンドコンポーネントをインストールする
Laravelを使い始めるために最初に行う必要があるのは、Laravelをサポートするスタックをインストールすることです。 これは、Ubuntuのデフォルトのリポジトリを介して行うことができます。
まず、ローカルパッケージインデックスを更新して、利用可能なパッケージの新しいリストがあることを確認する必要があります。 次に、必要なコンポーネントをインストールできます。
sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git
これにより、実際にLaravelコードを実行するために必要なPHPツールとともにNginxがWebサーバーとしてインストールされます。 git
もインストールします。これは、Laravelのインストールに使用するPHPの依存関係マネージャーであるcomposer
ツールが、パッケージのプルダウンに使用するためです。
PHP構成を変更する
コンポーネントがインストールされたので、コンポーネントの構成を開始できます。 まず、PHPから始めます。これはかなり簡単です。
最初に行う必要があるのは、Nginxが使用するPHP-fpmプロセッサのメインPHP構成ファイルを開くことです。 テキストエディタでsudo権限を使用してこれを開きます。
sudo nano /etc/php5/fpm/php.ini
このファイルの1つの値を変更するだけで済みます。 cgi.fix_pathinfo
パラメーターを検索します。 これはコメント化され、「1」に設定されます。 これをコメント解除して「0」に設定する必要があります。
cgi.fix_pathinfo=0
これは、要求されたファイル名が見つからない場合に、同様の名前のスクリプトを実行しようとしないようにPHPに指示します。 このタイプの動作を許可すると、攻撃者が特別に設計されたリクエストを作成して、PHPをだましてコードを実行させようとする可能性があるため、これは非常に重要です。
終了したら、ファイルを保存して閉じます。
最後に行う必要のあるPHP管理は、Laravelが依存するMCrypt拡張機能を明示的に有効にすることです。 これを行うには、php5enmod
コマンドを使用します。これにより、オプションのモジュールを簡単に有効にできます。
sudo php5enmod mcrypt
これで、php5-fpm
サービスを再起動して、行った変更を実装できます。
sudo service php5-fpm restart
これでPHPが完全に構成され、次に進むことができます。
NginxとWebルートを構成する
次に取り組むべき項目はWebサーバーです。 これには、実際には2つの異なるステップが含まれます。
最初のステップは、Laravelファイルを保持するために使用するドキュメントルートとディレクトリ構造を構成することです。 /var/www/laravel
というディレクトリにファイルを配置します。
このとき、このパスの最上位(/var
)のみが作成されます。 -p
フラグをmkdir
コマンドに渡すことで、パス全体を1つのステップで作成できます。 これは、特定のパスを構築するために必要な親パス要素を作成するようにユーティリティに指示します。
sudo mkdir -p /var/www/laravel
Laravelコンポーネント用に場所を確保したので、Nginxサーバーブロックの編集に進むことができます。
sudo権限でデフォルトのサーバーブロック構成ファイルを開きます。
sudo nano /etc/nginx/sites-available/default
インストール時に、このファイルにはかなりの数の説明コメントがありますが、基本的な構造は次のようになります。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
これは、私たちが行う変更の良い基盤を提供します。
最初に変更する必要があるのは、ドキュメントルートの場所です。 Laravelは、作成した/var/www/laravel
ディレクトリにインストールされます。
ただし、アプリの駆動に使用されるベースファイルは、public
と呼ばれるこの中のサブディレクトリに保持されます。 ここで、ドキュメントルートを設定します。 さらに、ディレクトリの場所をリクエストするときに、対応するHTMLファイルを探す前に、index.php
ファイルを提供するようにNginxに指示します。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
次に、サーバーの実際のドメイン名を参照するようにserver_name
ディレクティブを設定する必要があります。 ドメイン名をお持ちでない場合は、サーバーのIPアドレスを自由に使用してください。
また、Nginxがリクエストを処理する方法を変更する必要があります。 これは、try_files
ディレクティブを介して行われます。 最初にリクエストをファイルとして提供しようとします。 正しい名前のファイルが見つからない場合は、要求に一致するディレクトリのデフォルトのインデックスファイルを提供しようとする必要があります。 これに失敗すると、クエリパラメータとしてindex.php
ファイルにリクエストを渡す必要があります。
上記の変更は、次のように実装できます。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
最後に、PHPファイルの実際の実行を処理するブロックを作成する必要があります。 これは、.php
で終わるすべてのファイルに適用されます。 ファイル自体を試し、それをパラメーターとしてindex.php
ファイルに渡そうとします。
リクエストのパスが実行のために正しく分割されるようにfastcgi_*
ディレクティブを設定し、Nginxがphp5-fpm
が通信に使用しているソケットを使用し、index.php
が使用していることを確認します]ファイルはこれらの操作のインデックスとして使用されます。
次に、SCRIPT_FILENAME
パラメーターを設定して、PHPが要求されたファイルを正しく見つけられるようにします。 完了すると、完成したファイルは次のようになります。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
終了したら、ファイルを保存して閉じます。
すでに有効になっているdefault
サーバーブロックファイルを変更したため、構成の変更を取得するには、Nginxを再起動する必要があります。
sudo service nginx restart
スワップファイルの作成(オプション)
ComposerとLaravelをインストールする前に、サーバーでスワップを有効にして、ビルドが正しく完了するようにすることをお勧めします。 これは通常、メモリの少ないサーバー(512MBのドロップレットなど)で操作している場合にのみ必要です。
スワップスペースを使用すると、メモリ内の情報量が使用可能な物理メモリスペースを超えたときに、オペレーティングシステムが一時的にデータをメモリからディスクに移動できるようになります。 これにより、メモリを大量に消費するタスクを実行するときに、アプリケーションまたはシステムがメモリ不足(OOM)例外でクラッシュするのを防ぐことができます。
必要に応じて、オペレーティングシステムがディスクにスワップスペースの一部をシャッフルできるように、スワップスペースを非常に簡単に設定できます。 上記のように、これはおそらく、使用可能なRAMが1GB未満の場合にのみ必要です。
まず、次のように入力して、空の1GBファイルを作成できます。
sudo fallocate -l 1G /swapfile
次のように入力すると、スワップスペースとしてフォーマットできます。
sudo mkswap /swapfile
最後に、このスペースを有効にして、カーネルが次のように入力してスペースの使用を開始できるようにします。
sudo swapon /swapfile
システムは次の再起動までこのスペースのみを使用しますが、サーバーが使用可能なメモリを超える可能性があるのはビルドプロセス中のみであるため、これは問題にはなりません。
ComposerとLaravelをインストールします
これで、ComposerとLaravelをインストールする準備が整いました。 最初にComposerをセットアップします。 次に、このツールを使用してLaravelのインストールを処理します。
書き込みアクセス権のあるディレクトリ(ホームディレクトリなど)に移動し、Composerプロジェクトからインストーラスクリプトをダウンロードして実行します。
cd ~
curl -sS https://getcomposer.org/installer | php
これにより、ホームディレクトリにcomposer.phar
というファイルが作成されます。 これはPHPアーカイブであり、コマンドラインから実行できます。
ただし、グローバルにアクセス可能な場所にインストールしたいと考えています。 また、名前をcomposer
(ファイル拡張子なし)に変更します。 次のように入力することで、これを1つのステップで実行できます。
sudo mv composer.phar /usr/local/bin/composer
Composerがインストールされたので、それを使用してLaravelをインストールできます。
Laravelを/var/www/laravel
ディレクトリにインストールしたいことを忘れないでください。 Laravelの最新バージョンをインストールするには、次のように入力します。
sudo composer create-project laravel/laravel /var/www/laravel
この記事の執筆時点では、最新バージョンは4.2です。 プロジェクトへの将来の変更により、このインストール手順が正しく完了しない場合は、代わりに次のように入力して、このガイドで使用しているバージョンを強制することができます。
sudo composer create-project laravel/laravel /var/www/laravel 4.2
これで、ファイルはすべて/var/www/laravel
ディレクトリ内にインストールされますが、それらはroot
アカウントによって完全に所有されています。 Webユーザーがコンテンツを正しく提供するには、部分的な所有権と権限が必要です。
次のように入力することで、Laravelディレクトリ構造のグループ所有権をWebグループに与えることができます。
sudo chown -R :www-data /var/www/laravel
次に、/var/www/laravel/app/storage
ディレクトリのアクセス許可を変更して、Webグループの書き込みアクセス許可を許可します。 これは、アプリケーションが正しく機能するために必要です。
sudo chmod -R 775 /var/www/laravel/app/storage
これでLaravelが完全にインストールされ、準備が整いました。 WebブラウザでサーバーのドメインまたはIPアドレスにアクセスすると、デフォルトのランディングページを確認できます。
http://server_domain_or_IP
これで、Laravelフレームワークを使用してアプリケーションの構築を開始するために必要なものがすべて揃いました。
結論
これで、Laravelがサーバー上で稼働しているはずです。 Laravelは非常に柔軟なフレームワークであり、構造化された方法でアプリケーションを構築するのに役立つ多くのツールが含まれています。
Laravelを使用してアプリケーションを構築する方法については、Laravelのドキュメントをご覧ください。