Ubuntu 14.04にLinux、Nginx、MySQL、PHP(LEMP)スタックをインストールする方法
Ubuntu 14.04を使用していませんか?別のバージョンまたはディストリビューションを選択してください。
紹介
LEMPソフトウェアスタックは、動的なウェブページやウェブアプリケーションを提供するために使用できるソフトウェアのグループです。これは、Nginxウェブサーバーを備えたLinuxオペレーティングシステムを表す略語です。バックエンドデータはMySQLに保存されており、動的処理はPHPによって処理されます。
このガイドでは、Ubuntu 14.04サーバーにLEMPスタックをインストールする方法を示します。Ubuntuオペレーティングシステムが最初の要件を満たします。残りのコンポーネントを稼働させる方法について説明します。
注意:LEMPスタックは、Dropletを起動する際にこのスクリプトをUser Dataに追加することで、自動的にインストールできます。このチュートリアルをチェックして、Droplet User Dataについてさらに学んでください。
前提条件
このチュートリアルを完了する前に、サーバー上に通常の非ルートユーザーアカウントを作成し、sudo権限を持っている必要があります。このタイプのアカウントを設定する方法は、私たちのUbuntu 14.04初期サーバーセットアップのステップ1-4を完了することで学ぶことができます。
アカウントが利用可能になったら、そのユーザー名でサーバーにサインインしてください。これで、このガイドに記載された手順を始める準備が整いました。
1. Nginxウェブサーバーをインストールする
私たちのサイト訪問者にウェブページを表示するために、現代的で効率的なウェブサーバーであるNginxを採用する予定です。
この手順で必要なすべてのソフトウェアは、Ubuntuのデフォルトのパッケージリポジトリから直接入手します。つまり、aptパッケージ管理スイートを使用してインストールを完了することができます。
このセッションで初めて apt を使用するので、まずはローカルパッケージインデックスを更新する必要があります。それから、サーバーをインストールできます:
sudo apt-get update
sudo apt-get install nginx
Ubuntu 14.04では、Nginxはインストール時に自動的に起動するように設定されています。
ウェブブラウザでサーバーのドメイン名またはパブリックIPアドレスにアクセスすることで、サーバーが稼働しているかどうかをテストできます。
サーバーに向けられたドメイン名がなく、サーバーのパブリックIPアドレスがわからない場合は、次のいずれかをターミナルに入力することで見つけることができます:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'< /pre> 111.111.111.111 fe80::601:17ff:fe61:9801
または、次のように使ってみることができます:
curl http://icanhazip.com 111.111.111.111
ウェブブラウザで受け取った行の1つを試してみてください。それはNginxのデフォルトのランディングページにあなたを案内するはずです:
http://サーバーのドメイン名またはIP 上記のページが表示されている場合、Nginxが正常にインストールされたことになります。
2. サイトデータを管理するためにMySQLをインストールする
ウェブサーバーがあるので、サイトのデータを保存・管理するために、データベース管理システムであるMySQLをインストールする必要があります。
これを簡単にインストールするには、次のように入力します:
sudo apt-get install mysql-server
MySQLシステム内で使用するために、ルート(管理者)パスワードを提供するように求められます。
MySQLデータベースソフトウェアは現在インストールされていますが、その設定は完全ではありません。
まず、MySQLにデータベースや情報を保存するために必要なディレクトリ構造を生成させる必要があります。これを実行するには、次のように入力します:
sudo mysql_install_db
次に、いくつかの安全でないデフォルトを変更するように促す簡単なセキュリティスクリプトを実行したいと思います。 スクリプトを開始するには、次のように入力します:
sudo mysql_secure_installation
インストール時に選択したMySQLのルートパスワードを入力する必要があります。
次に、パスワードを変更したいかどうか尋ねられます。 MySQLのルートパスワードに満足している場合は、「N」と入力して「ENTER」を押してください。その後、いくつかのテストユーザーとデータベースを削除するように求められます。安全でないデフォルト設定を削除するために、これらのプロンプトではそのまま「ENTER」を押してください。
スクリプトが実行されると、MySQLは準備完了です。
3. 処理のためにPHPをインストールする
現在、私たちはページを提供するためにNginxをインストールし、データを保存・管理するためにMySQLをインストールしましたが、これら二つを接続し、動的なコンテンツを生成するためにはまだ何かが必要です。これにはPHPを使用できます。
Nginxは他のウェブサーバーのようなネイティブPHP処理を含まないため、<code>php5-fpm</code>(これは「fastCGIプロセスマネージャ」を意味します)をインストールする必要があります。私たちは、NginxにこのソフトウェアにPHPリクエストを処理させるよう指示します。
このモジュールをインストールし、PHPがデータベースバックエンドと通信できるようにする追加のヘルパーパッケージも取得できます。インストールは必要なPHPコアファイルを引き込むでしょう。これを実行するには、次のようにタイプしてください:
sudo apt-get install php5-fpm php5-mysql
PHPプロセッサを設定する
私たちは現在、PHPコンポーネントをインストールしましたが、設定をより安全にするためにわずかな構成変更を行う必要があります。
ルート権限でメインのphp5-fpm設定ファイルを開きます:
sudo nano /etc/php5/fpm/php.ini
このファイルで探しているのは、cgi.fix_pathinfoを設定するパラメータです。これはセミコロン(;)でコメントアウトされ、デフォルトでは「1」に設定されています。
これは非常に安全でない設定です。なぜなら、PHPファイルが正確に一致しない場合、PHPに最も近いファイルを実行しようとするよう指示するからです。これは基本的に、ユーザーがPHPリクエストを作成して、実行を許可されていないスクリプトを実行できるようにするものです。
これら二つの条件を変更します。この行のコメントを外し、「0」に設定します。
cgi.fix_pathinfo=0
作業が完了したら、ファイルを保存して閉じてください。
今、私たちはPHPプロセッサーを再起動するために次のように入力するだけです:
sudo service php5-fpm restart
これにより、私たちが行った変更が実施されます。
4. Nginxを設定してPHPプロセッサーを使用する
さて、必要なすべてのコンポーネントがインストールされました。まだ行う必要がある構成変更は、Nginxに動的コンテンツのためにPHPプロセッサを使用するように指示することだけです。
私たちはこれをサーバーブロックレベルで行います(サーバーブロックはApacheのバーチャルホストに似ています)。デフォルトのNginxサーバーブロック構成ファイルを開くには、次のように入力します:
sudo nano /etc/nginx/sites-available/default
現在、コメントが削除された状態で、Nginxのデフォルトサーバーブロックファイルは次のようになっています。
サーバー { リッスン 80 デフォルトサーバー; リッスン [::]:80 デフォルトサーバー ipv6only=on;root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
私たちはこのファイルにサイトのためにいくつかの変更を加える必要があります。
- まず、ディレクトリが要求されたときにPHPインデックスファイルを提供できるように、
indexディレクティブの最初の値としてindex.phpオプションを追加する必要があります。 - 私たちはまた、
server_nameディレクティブを修正して、私たちのサーバーのドメイン名または公衆IPアドレスを指す必要があります。 - 実際の構成ファイルには、エラー処理ルーチンを定義するいくつかのコメントアウトされた行が含まれています。それらをコメント解除して、その機能を含めます。
- 実際のPHP処理のためには、他のセクションの一部のコメントを外す必要があります。また、Nginxが不正なリクエストをPHPプロセッサに渡さないように、
try_filesディレクティブを追加する必要があります。
下記のテキストには、あなたが変更する必要がある部分が赤で示されています。
サーバー { リッスン 80 デフォルトサーバー; リッスン [::]:80 デフォルトサーバー ipv6only=on;root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;
server_name <span class="highlight">server_domain_name_or_IP</span>;
location / {
try_files $uri $uri/ =404;
}
<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
<span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>
<span class="highlight">location ~ \.php$ {</span>
<span class="highlight">try_files $uri =404;</span>
<span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
<span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
<span class="highlight">fastcgi_index index.php;</span>
<span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
<span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>
}
上記の変更を行ったら、ファイルを保存して閉じることができます。
必要な変更を行うためにNginxを再起動します:
sudo service nginx restart
5. 設定をテストするためのPHPファイルを作成する
あなたのLEMPスタックは今や完全に設定されているはずです。私たちはまだ、Nginxが.phpファイルをPHPプロセッサーに正しく渡せるかどうかをテストする必要があります。
私たちは、ドキュメントルートにテスト用のPHPファイルを作成することでこれを実行できます。テキストエディタで、ドキュメントルート内にinfo.phpという新しいファイルを開きます:
sudo nano /usr/share/nginx/html/info.php
これを新しいファイルに入力することができます。これは、サーバーに関するフォーマットされた情報を返す有効なPHPコードです。
<?php
phpinfo();
?>
終わったら、ファイルを保存して閉じてください。
今、あなたはサーバーのドメイン名またはパブリックIPアドレスに /info.php を付けて、このページをウェブブラウザで訪れることができます:
http://サーバーのドメイン名またはIP/info.php あなたのサーバーに関する情報が含まれたPHPによって生成されたウェブページが表示されるはずです。
このようなページが表示されている場合、NginxでPHP処理が正常に設定されていることを示しています。
これをテストした後、作成したファイルは削除するのが最善です。なぜなら、それが実際に不正アクセス者にあなたの設定に関する手がかりを与え、侵入を試みるのに役立つ可能性があるからです。後で必要になった場合は、このファイルを再生成することもできます。
今のところ、次のように入力してファイルを削除します:
sudo rm /usr/share/nginx/html/info.php
結論
あなたは今、Ubuntu 14.04 サーバー上に LEMP スタックを設定しているはずです。これにより、訪問者にウェブコンテンツを提供するための非常に柔軟な基盤が得られます。

