Linux、Nginx、MySQL、PHP(LEMP)スタックをCentOS 7にインストールする方法

前書き

LEMPソフトウェアスタックは、サーバーが動的なWebサイトおよびWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は実際には L inuxオペレーティングシステムを表す頭字語で、 E Nginx Webサーバー(LAMPスタックのApacheコンポーネントを置き換えます)を表します。 サイトデータは M ySQLデータベース(MariaDBを使用)に保存され、動的コンテンツは P HPによって処理されます。

このガイドでは、CentOS 7 VPSにLEMPスタックをインストールします。 CentOSは、最初の要件であるLinuxオペレーティングシステムを満たします。

前提条件

このガイドを開始する前に、サーバーに別の非ルートユーザーアカウントを設定する必要があります。 これを行う方法については、https://www.digitalocean.com/community/articles/initial-server-setup-with-centos-7 [CentOS 7の初期サーバーセットアップ]の手順1〜4を完了することで学習できます。

  • SELinuxに関する注意:* Nginxが実行されないという問題が発生した場合は、Nginx構成ファイルのSELinuxコンテキストが正しいことを確認するか、SELinuxモードを「+ permissive 」または「 disabled +」に変更してください。

ステップ1-Nginxをインストールする

サイト訪問者にWebページを表示するために、最新の効率的なWebサーバーであるNginxを採用します。

CentOS 7 EPELリポジトリを追加するには、ターミナルを開き、次のコマンドを使用します。

sudo yum install epel-release

`+ sudo +`コマンドを使用しているため、これらの操作はルート権限で実行されます。 root権限でコマンドを実行する権限があることを確認するために、通常のユーザーのパスワードを求められます。

Nginxリポジトリがサーバーにインストールされたので、次の `+ yum +`コマンドを使用してNginxをインストールします。

sudo yum install nginx

その後、Webサーバーがインストールされます。

インストールしたら、VPSでNginxを起動できます。

sudo systemctl start nginx

WebブラウザーでサーバーのパブリックIPアドレスにアクセスすることで、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます(この情報がない場合は、パブリックIPアドレスが何であるかを確認するために次の見出しの下のメモを参照してください)既に):

Open in a web browser:http:///

デフォルトのCentOS 7 Nginx Webページが表示されます。これは、情報提供およびテスト目的であります。 これは次のようになります。

image:https://assets.digitalocean.com/articles/lemp_1404/nginx_default.png [CentOS 7 Nginx Default]

このページが表示された場合、Webサーバーは正しくインストールされています。

続行する前に、Nginxを有効にして起動時に起動することをお勧めします。 これを行うには、次のコマンドを使用します。

sudo systemctl enable nginx

サーバーのパブリックIPアドレスを見つける方法

サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。

コマンドラインから、これをいくつかの方法で見つけることができます。 まず、 `+ iproute2 +`ツールを使用して、次のように入力して住所を取得できます。

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

これにより、1つまたは2つの行が返されます。 どちらも正しいアドレスですが、お使いのコンピューターはどちらか一方しか使用できない可能性がありますので、それぞれを試してみてください。

別の方法は、外部のパーティを使用して、サーバーがどのように見えるかを示すことです。 これを行うには、特定のサーバーにIPアドレスを尋ねます。

curl http://icanhazip.com

IPアドレスの取得に使用する方法に関係なく、Webブラウザーのアドレスバーに入力してサーバーにアクセスできます。

ステップ2-MySQL(MariaDB)をインストールする

Webサーバーが稼働しているので、次はMySQLのドロップイン代替品であるMariaDBをインストールします。 MariaDBは、コミュニティが開発したMySQLリレーショナルデータベース管理システムのフォークです。 基本的に、それは私たちのサイトが情報を保存できるデータベースを整理し、アクセスを提供します。

繰り返しになりますが、 `+ yum +`を使用してソフトウェアを取得およびインストールできます。 今回は、コンポーネントが相互に通信できるようにする他の「ヘルパー」パッケージもインストールします。

sudo yum install mariadb-server mariadb

インストールが完了したら、次のコマンドでMariaDBを起動する必要があります。

sudo systemctl start mariadb

MySQLデータベースが実行されたので、危険なデフォルトを削除し、データベースシステムへのアクセスを少し制限する簡単なセキュリティスクリプトを実行します。 次を実行して、インタラクティブスクリプトを開始します。

sudo mysql_secure_installation

プロンプトが表示され、現在のルートパスワードが求められます。 MySQLをインストールしたばかりなので、おそらくMySQLがないため、Enterキーを押して空白のままにします。 次に、rootパスワードを設定するかどうかを尋ねるプロンプトが表示されます。 先に進み、「+ Y +」と入力して、指示に従います。

mysql_secure_installation prompts:Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

残りの質問については、各プロンプトで「ENTER」キーを押してデフォルト値を受け入れる必要があります。 これにより、一部のサンプルユーザーとデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされるため、MySQLはすぐに変更を反映します。

最後にしたいことは、MariaDBを起動時に起動できるようにすることです。 これを行うには、次のコマンドを使用します。

sudo systemctl enable mariadb

この時点で、データベースシステムがセットアップされ、先に進むことができます。

ステップ3-PHPのインストール

PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示できます。

コンポーネントをインストールするために、 `+ yum +`システムを再度利用できます。 php-mysqlおよびphp-fpmパッケージも含める予定です。

sudo yum install php php-mysql php-fpm

PHPプロセッサを構成する

これでPHPコンポーネントがインストールされましたが、セットアップをより安全にするためにわずかな構成変更を行う必要があります。

root権限でメインのphp-fpm構成ファイルを開きます。

sudo vi /etc/php.ini

このファイルで探しているのは、cgi.fix_pathinfoを設定するパラメーターです。 これはセミコロン(;)でコメント化され、デフォルトで「1」に設定されます。

これは、PHPファイルが完全に一致しない場合に検出できる最も近いファイルを実行しようとするようにPHPに指示するため、非常に安全でない設定です。 これにより、基本的にユーザーは、実行を許可しないスクリプトを実行できるようにPHPリクエストを作成できます。

行のコメントを外し、次のように「0」に設定することで、これらの両方の条件を変更します。

/etc/php.iniの抜粋

cgi.fix_pathinfo=0

完了したら、ファイルを保存して閉じます。

次に、php-fpm設定ファイル `+ www.conf +`を開きます。

sudo vi /etc/php-fpm.d/www.conf

`+ listen +`パラメータを指定する行を見つけて、次のように変更します。

/etc/php-php.d/www.conf-1/3

listen =

次に、 `+ listen.owner `と ` listen.group +`を設定する行を見つけて、コメント解除します。 彼らはこのように見えるはずです:

/etc/php-php.d/www.conf-2/3

listen.owner = nobody
listen.group = nobody

最後に、 + user`と + group`を設定し、それらの値を「apache」から「nginx」に変更する行を見つけます。

/etc/php-php.d/www.conf-3/3

user = nginx
group = nginx

その後、保存して終了します。

ここで、次のように入力してPHPプロセッサを起動するだけです。

sudo systemctl start php-fpm

これにより、行った変更が実装されます。

次に、ブート時にphp-fpmを開始できるようにします。

sudo systemctl enable php-fpm

ステップ4-PHPページを処理するためのNginxの構成

これで、必要なコンポーネントがすべてインストールされました。 まだ必要な設定変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することだけです。

これはサーバーブロックレベルで行います(サーバーブロックはApacheの仮想ホストに似ています)。 次のように入力して、デフォルトのNginxサーバーブロック構成ファイルを開きます。

sudo vi /etc/nginx/conf.d/default.conf

現在、コメントを削除すると、Nginxのデフォルトサーバーブロックは次のようになります。

/etc/nginx/conf.d/default.conf-オリジナル

server {
   listen       80;
   server_name  localhost;

   location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm;
   }
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }
}

サイトのこのファイルに変更を加える必要があります。

  • 最初に、ディレクトリが要求されたときにPHPインデックスファイルを提供できるように、indexディレクティブの最初の値としてindex.phpオプションを追加する必要があります

  • また、server_nameディレクティブを変更して、サーバーのドメイン名またはパブリックIPアドレスを指すようにする必要があります

  • 実際の構成ファイルには、エラー処理ルーチンを定義するコメントアウトされた行が含まれています。 その機能を含めるためにコメントを外します

  • 実際のPHP処理では、別のセクションの一部のコメントを外す必要があります。 また、try_filesディレクティブを追加して、NginxがPHPプロセッサに不正なリクエストを渡さないようにする必要があります。

必要な変更は、下のテキストでは赤で表示されています。 必要に応じて、すべてをコピーして貼り付け、 `+ server_name +`の値を適切なドメイン名またはIPアドレスに置き換えます。

/etc/nginx/conf.d/default.conf-更新されました

server {
   listen       80;
   server_name  ;

   # note that these lines are originally from the "location /" block

   index  index.html index.htm;

   location / {

   }

   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
       root /usr/share/nginx/html;
   }








}

上記の変更を行ったら、ファイルを保存して閉じることができます。

Nginxを再起動して、必要な変更を加えます。

sudo systemctl restart nginx

ステップ5-WebサーバーでのPHP処理のテスト

システムがPHP用に適切に構成されていることをテストするために、非常に基本的なPHPスクリプトを作成できます。

このスクリプトを「+ info.php」と呼びます。 Apacheがファイルを見つけてそれを正しく提供するためには、「webルート」と呼ばれる非常に特定のディレクトリに保存する必要があります。

CentOS 7では、このディレクトリは `+ / usr / share / nginx / html / +`にあります。 次のように入力して、その場所にファイルを作成できます。

sudo vi /usr/share/nginx/html/info.php

これにより、空のファイルが開きます。 有効なPHPコードである次のテキストをファイル内に配置します。

PHPスクリプトのテスト

<?php phpinfo(); ?>

終了したら、ファイルを保存して閉じます。

これで、WebサーバーがPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 これを試すには、Webブラウザでこのページにアクセスするだけです。 サーバーのパブリックIPアドレスが再び必要になります。

訪問するアドレスは次のとおりです。

Open in a web browser:http:///info.php

訪れるページは次のようになります。

image:https://assets.digitalocean.com/articles/lamp_c7/default_php_fpm.png [CentOS 7デフォルトPHP情報]

このページは基本的に、PHPの観点からサーバーに関する情報を提供します。 デバッグや、設定が正しく適用されていることを確認するのに役立ちます。

これが成功した場合、PHPは期待どおりに機能しています。

実際にサーバーに関する情報を許可されていないユーザーに提供する可能性があるため、このテスト後にこのファイルを削除することをお勧めします。 これを行うには、次のように入力できます。

sudo rm /usr/share/nginx/html/info.php

後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。

結論

LEMPスタックがインストールされたので、次に何をするかについて多くの選択肢があります。 基本的に、サーバーにほとんどの種類のWebサイトとWebソフトウェアをインストールできるプラットフォームをインストールしました。

Related