Linux、Nginx、MySQL、PHP(LEMPスタック)をDebian8にインストールする方法
序章
LEMPソフトウェアスタックは、動的WebページおよびWebアプリケーションを提供するために使用できるソフトウェアのグループです。 これは、NginxWebサーバーを備えたLinuxオペレーティングシステムを表す頭字語です。 バックエンドデータはMySQLデータベースに保存され、動的処理はPHPによって処理されます。
このガイドでは、オペレーティングシステムが提供するパッケージを使用して、DebianサーバーにLEMPスタックをインストールします。
前提条件
このガイドを完了するには、次のものが必要です。
- root以外のユーザーがいるDebian8サーバー
sudo
特権。 これらの権限を持つユーザーは、Debian8ガイドの初期サーバーセットアップでセットアップできます。
ステップ1—NginxWebサーバーをインストールします
サイト訪問者にWebページを表示するために、最新の効率的なWebサーバーであるNginxを採用します。
この手順で使用するすべてのソフトウェアは、Debianのデフォルトのパッケージリポジトリから直接提供されます。 これは、 apt
インストールを完了するためのパッケージ管理スイート。
初めて使うので apt
このセッションでは、ローカルパッケージインデックスを更新することから始める必要があります。 次に、サーバーをインストールできます。
- sudo apt-get update
- sudo apt-get install nginx
Debian 8では、Nginxはインストール時に実行を開始するように構成されています。
あなたが持っている場合 ufw
ファイアウォールが実行されている場合は、Nginxへの接続を許可する必要があります。 必要なトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にする必要があります。 サーバーにSSLをまだ構成していないため、このガイドでは、ポートでのトラフィックのみを許可する必要があります。 80
.
これを有効にするには、次のように入力します。
- sudo ufw allow 'Nginx HTTP'
次のように入力して、変更を確認できます。
- sudo ufw status
表示された出力に許可されたHTTPトラフィックが表示されます。
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
次に、Webブラウザでサーバーのドメイン名またはパブリックIPアドレスにアクセスして、サーバーが稼働しているかどうかをテストします。 サーバーを指すドメイン名がなく、サーバーのパブリックIPアドレスがわからない場合は、端末に次のいずれかを入力してドメイン名を見つけることができます。
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、いくつかのIPアドレスが出力されます。 Webブラウザでそれぞれを順番に試すことができます。
別の方法として、インターネット上の他の場所から見たときにアクセス可能なIPアドレスを確認できます。
- curl -4 icanhazip.com
Webブラウザで受け取ったアドレスの1つを入力します。 Nginxのデフォルトのランディングページに移動するはずです:
http://server_domain_or_IP
上記のページが表示されている場合は、Nginxが正常にインストールされています。
ステップ2—MySQLをインストールしてサイトデータを管理する
Webサーバーができたので、データベース管理システムであるMySQLをインストールして、サイトのデータを保存および管理する必要があります。
次のように入力すると、これを簡単にインストールできます。
- sudo apt-get install mysql-server
MySQLシステム内で使用するためのroot(管理)パスワードを提供するように求められ、そのパスワードを確認する必要があります。
これでMySQLデータベースソフトウェアがインストールされましたが、その構成はまだ完全ではありません。
インストールを保護するために、いくつかの安全でないデフォルトを変更するかどうかを尋ねる簡単なセキュリティスクリプトを実行できます。 次のように入力してスクリプトを開始します。
- sudo mysql_secure_installation
MySQL rootアカウントに設定したパスワードを入力するように求められます。 次に、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに満足している場合は、次のように入力します N
プロンプトで「いいえ」の場合:
Using existing password for root.
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
スクリプトが尋ねる残りの質問については、を押す必要があります Y
、続いて ENTER
各プロンプトでキーを押します。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。
この時点で、データベースシステムがセットアップされ、保護されています。 PHPを設定しましょう。
ステップ3—処理のためにPHPをインストールする
これで、ページを提供するためにNginxがインストールされ、データを保存および管理するためにMySQLがインストールされました。 ただし、動的コンテンツを生成できるものはまだありません。 そこでPHPが登場します。
Nginxには他のWebサーバーのようなネイティブPHP処理が含まれていないため、インストールする必要があります fpm
、「fastCGIプロセスマネージャー」の略です。 処理のためにこのソフトウェアにPHPリクエストを渡すようにNginxに指示します。 PHPがMySQLデータベースバックエンドと通信できるようにする追加のヘルパーパッケージもインストールします。 インストールは、それを機能させるために必要なPHPコアファイルをプルします。
これらのパッケージは、ライセンスの問題によりデフォルトのリポジトリでは利用できないため、リポジトリソースを変更してプルする必要があります。
開ける /etc/apt/sources.list
テキストエディタで:
- sudo nano /etc/apt/sources.list
次に、ソースごとに、 contrib
と non-free
各ソースへのリポジトリ。 これらの変更を行うと、ファイルは次のようになります。
...
deb http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free
ファイルを保存して終了します。 次に、ソースを更新します。
- sudo apt-get update
次に、をインストールします php5-fpm
と php5-mysql
モジュール:
- sudo apt-get install php5-fpm php5-mysql
これでPHPコンポーネントがインストールされましたが、セットアップをより安全にするために、構成を少し変更する必要があります。
メインを開く php-fpm
ルート権限を持つ構成ファイル:
- sudo nano /etc/php5/fpm/php.ini
設定するパラメータをファイルで探します cgi.fix_pathinfo
. これはセミコロン(;)でコメントアウトされ、デフォルトで「1」に設定されます。
これは、要求されたPHPファイルが見つからない場合に、見つけることができる最も近いファイルを実行しようとするようにPHPに指示するため、非常に安全でない設定です。 これにより、基本的に、ユーザーは、実行を許可されるべきではないスクリプトを実行できるようにPHPリクエストを作成できます。
次のように、行のコメントを解除して「0」に設定することにより、これらの条件の両方を変更します。
cgi.fix_pathinfo=0
終了したら、ファイルを保存して閉じます。
ここで、次のように入力してPHPプロセッサを再起動する必要があります。
- sudo systemctl restart php5-fpm
これにより、行った変更が実装されます。
ステップ4—PHPプロセッサーを使用するようにNginxを構成する
これで、必要なすべてのコンポーネントがインストールされました。 まだ必要な唯一の構成変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することです。
これはサーバーブロックレベルで行います(サーバーブロックはApacheの仮想ホストに似ています)。 次のように入力して、デフォルトのNginxサーバーブロック構成ファイルを開きます。
- sudo nano /etc/nginx/sites-available/default
現在、コメントが削除されているため、Nginxのデフォルトのサーバーブロックファイルは次のようになります。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
私たちのサイトのためにこのファイルにいくつかの変更を加える必要があります。
- まず、追加する必要があります
index.php
私たちの最初の価値としてindex
ディレクティブindex.php
ディレクトリが要求されたときに、利用可能な場合は提供されます。 - 変更することができます
server_name
サーバーのドメイン名またはパブリックIPアドレスを指すディレクティブ。 - 実際のPHP処理では、PHPリクエストを処理するファイルのセグメントのコメントを解除する必要があります。 これは
location ~\.php$
ロケーションブロック、含まれていますfastcgi-php.conf
スニペット、およびに関連付けられたソケットphp-fpm
. - また、処理するロケーションブロックのコメントを解除します
.htaccess
ファイル。 Nginxはこれらのファイルを処理しません。 これらのファイルのいずれかがドキュメントルートにたまたま入った場合は、訪問者に提供しないでください。
以下のテキストでは、必要な変更が赤で示されています。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
上記の変更を行ったら、ファイルを保存して閉じることができます。
次のように入力して、構成ファイルの構文エラーをテストします。
- sudo nginx -t
エラーが報告された場合は、続行する前に戻ってファイルを再確認してください。
準備ができたら、Nginxをリロードして必要な変更を加えます。
- sudo systemctl reload nginx
ステップ5—構成をテストするためのPHPファイルを作成する
これで、LEMPスタックが完全にセットアップされました。 Nginxが正しく処理できることを検証するためにテストできます .php
PHPプロセッサにファイルを送信します。
これを行うには、ドキュメントルートにテストPHPファイルを作成します。 と呼ばれる新しいファイルを開きます info.php
テキストエディタのドキュメントルート内:
- sudo nano /var/www/html/info.php
次の行を入力するか、新しいファイルに貼り付けます。 これは、サーバーに関する情報を返す有効なPHPコードです。
<?php
phpinfo();
?>
終了したら、ファイルを保存して閉じます。
これで、サーバーのドメイン名またはパブリックIPアドレスにアクセスしてから、Webブラウザーでこのページにアクセスできます。 /info.php
:
http://server_domain_or_IP/info.php
サーバーに関する情報を含むPHPによって生成されたWebページが表示されます。
このようなページが表示された場合は、Nginxを使用してPHP処理を正常に設定しています。
Nginxがページを正しくレンダリングすることを確認した後、作成したファイルを削除することをお勧めします。これにより、許可されていないユーザーに、侵入を試みるのに役立つ構成に関するヒントが実際に与えられる可能性があります。
今のところ、次のように入力してファイルを削除します。
- sudo rm /var/www/html/info.php
後で必要になった場合は、いつでもこのファイルを再生成できます。
結論
これで、DebianサーバーにLEMPスタックが構成されているはずです。 これにより、訪問者にWebコンテンツを提供するための非常に柔軟な基盤が提供されます。