序章

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

このガイドでは、データベース管理システムとしてMariaDBを使用して、CentOS7サーバーにPHP7.4がインストールされたLEMPスタックを取得します。 MariaDBは、元のMySQLサーバーのドロップイン代替として機能します。つまり、実際には、アプリケーションで構成やコードを変更することなく、MariaDBに切り替えることができます。

前提条件

このガイドを開始する前に、サーバーにroot以外のユーザーアカウントを設定しておく必要があります。 これを行う方法を学ぶには、CentOS 7初期サーバーセットアップの手順1〜4を完了します。

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

サイト訪問者にWebページを表示するために、高性能WebサーバーであるNginxを採用します。 最新のNginxバージョンを入手するには、最初にEPELリポジトリをインストールします。このリポジトリには、CentOS7オペレーティングシステム用の追加ソフトウェアが含まれています。

CentOS 7 EPELリポジトリを追加するには、次のコマンドを実行します。

  1. sudo yum install epel-release

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

EPELリポジトリがサーバーにインストールされたので、次を使用してNginxをインストールします。 yum 指図:

  1. sudo yum install nginx

インストールが完了したら、次のコマンドでNginxサービスを開始します。

  1. sudo systemctl start nginx

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

Open in a web browser:
http://server_domain_name_or_IP/

情報提供とテストの目的で存在するデフォルトのCentOS7NginxWebページが表示されます。 次のようになります。

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

起動時にNginxを起動できるようにするには、次のコマンドを実行します。

  1. sudo systemctl enable nginx

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

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

コマンドラインから、これをいくつかの方法で見つけることができます。 まず、あなたは使用することができます iproute2 これを入力して住所を取得するためのツール:

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

これにより、1行または2行戻ります。 どちらも正しいアドレスですが、お使いのコンピュータではどちらか一方しか使用できない場合がありますので、お気軽に試してみてください。

別の方法は、外部の関係者を使用して、itがサーバーをどのように認識しているかを通知することです。 これを行うには、特定のサーバーにIPアドレスを尋ねます。

  1. curl http://icanhazip.com

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

ステップ2—MariaDBをインストールする

Webサーバーが稼働しているので、MySQLドロップインの代替品であるMariaDBをインストールします。 MariaDBは、MySQLリレーショナルデータベース管理システムのコミュニティ開発されたフォークです。

繰り返しますが、 yum 当社のソフトウェアを取得してインストールします。 今回は、コンポーネントを相互に通信させるのに役立つ他のヘルパーパッケージもインストールします。

  1. sudo yum install mariadb-server mariadb

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

  1. sudo systemctl start mariadb

MariaDBデータベースが実行されているので、いくつかの危険なデフォルトを削除してデータベースへのアクセスをロックダウンするセキュリティスクリプトを実行します。 次のコマンドを実行して、インタラクティブスクリプトを開始します。

  1. sudo mysql_secure_installation

プロンプトはあなたにあなたの現在を尋ねます root MariaDBパスワード。 MariaDBをインストールしたばかりなので、MariaDBがない可能性が高いので、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. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!

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

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

  1. sudo systemctl enable mariadb

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

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

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

CentOS 7サーバー内でデフォルトで使用可能なPHPバージョンは古くなっています。そのため、PHP 7+を入手して、CentOS 7サーバーにインストールするには、サードパーティのパッケージリポジトリをインストールする必要があります。 Remi は、CentOSサーバー用の最新のPHPリリースを提供する人気のあるパッケージリポジトリです。

CentOS 7のRemiリポジトリをインストールするには、次のコマンドを実行します。

  1. sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

インストールが完了したら、コマンドを実行して、好みのバージョンのPHPを含むリポジトリを有効にする必要があります。 Remiリポジトリで利用可能なPHP7以降のリリースを確認するには、次のコマンドを実行します。

  1. yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

次のような出力が表示されます。

Output
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * remi-safe: mirrors.ukfast.co.uk Available Packages php70.x86_64 2.0-1.el7.remi remi-safe php71.x86_64 2.0-1.el7.remi remi-safe php72.x86_64 2.0-1.el7.remi remi-safe php73.x86_64 2.0-1.el7.remi remi-safe php74.x86_64 1.0-3.el7.remi remi-safe php80.x86_64 1.0-3.el7.remi remi-safe

このガイドでは、現在PHPの最も更新されている安定バージョンであるPHP7.4をインストールします。 正しいRemiパッケージを有効にしてPHP7.4をインストールするには、次のコマンドを実行します。

  1. sudo yum-config-manager --enable remi-php74

これで、使用を続行できます yum 通常どおりPHPをインストールします。 次のコマンドは、PHP 7.4をNginx内にセットアップし、MySQLベースのデータベースに接続できるようにするために必要なすべてのパッケージをインストールします。

  1. sudo yum install php php-mysqlnd php-fpm

選択したバージョンとしてPHPが使用可能であることを確認するには、次のコマンドを実行します。

  1. php --version

次のような出力が表示されます。

Output
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies

これで、PHPがシステムに正常にインストールされました。 次に、デフォルト構成にいくつかの調整を加える必要があります。 CentOSでのファイルの編集を容易にするために、最初にインストールします nano、よりユーザーフレンドリーなテキストエディタ vi:

  1. sudo yum install nano

を開きます /etc/php-fpm.d/www.conf を使用した構成ファイル nano または選択した編集者:

  1. sudo nano /etc/php-fpm.d/www.conf

今探して usergroup ディレクティブ。 使用している場合 nano、あなたは打つことができます CTRL+W 開いているファイル内でこれらの用語を検索します。

/etc/php-fpm.d/www.conf
…
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

あなたは両方が usergroup 変数はに設定されます apache. これらをに変更する必要があります nginx:

/etc/php-fpm.d/www.conf
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

次に、 listen 指令。 デフォルトでは、 php-fpm TCPを介して特定のホストとポートでリッスンします。 サーバーの全体的なパフォーマンスが向上するため、この設定を変更して、ローカルソケットファイルをリッスンするようにします。 を含む行を変更します listen 次の指令:

/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock;

最後に、定義したソケットファイルの所有者とグループの設定を変更する必要があります。 listen 指令。 を見つけます listen.owner, listen.grouplisten.mode ディレクティブ。 これらの行はデフォルトでコメント化されています。 上記を削除してコメントを外します ; 行頭に署名します。 次に、所有者とグループをに変更します nginx:

/etc/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

編集が完了したら、ファイルを保存して閉じます。 使用している場合 nano、を押してそうします CTRL + X、 それから YENTER.

有効にして開始するには php-fpm サービス、実行:

  1. sudo systemctl start php-fpm

これで、PHP環境の準備が整いました。 次に、PHPスクリプトのすべてのリクエストを送信するようにNginxを構成します。 php-fpm.

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

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

Nginxには専用のディレクトリがあり、サーバーブロックを使用して、ホストされている各Webサイトを個別の構成ファイルとして定義できます。 これは、Apacheの仮想ホストに似ています。

ただし、デフォルトのインストールでは、このディレクトリは空です。 このサーバーでデフォルトのPHPWebサイトとして機能する新しいファイルを作成します。これにより、で定義されているデフォルトのサーバーブロックが上書きされます。 /etc/nginx/nginx.conf ファイル。

まず、で新しいファイルを開きます /etc/nginx/conf.d ディレクトリ:

  1. sudo nano /etc/nginx/conf.d/default.conf

次のPHPサーバー定義ブロックを構成ファイルにコピーし、忘れずに server_name サーバーのドメイン名またはIPアドレスを指すようにディレクティブ:

/etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  server_domain_or_IP;

    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

次に、Nginxを再起動して変更を適用します。

  1. sudo systemctl restart nginx

これで、Webサーバーが完全にセットアップされました。 次のステップでは、PHPとNginxの統合をテストします。

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

Webサーバーがセットアップされたので、テストPHPスクリプトを作成して、Nginxが正しく処理されていることを確認できます。 .php の助けを借りてスクリプト php-fpm.

スクリプトを作成する前に、Nginxのドキュメントルートのデフォルトの所有権設定を変更して、通常のsudoユーザーがその場所にファイルを作成できるようにします。

次のコマンドは、デフォルトのNginxドキュメントルートの所有権を sammy というユーザーとグループに変更するため、このコマンドで強調表示されているユーザー名とグループを、システムのユーザー名とグループを反映するように置き換えてください。

  1. sudo chown -R sammy.sammy /usr/share/nginx/html/

次に、テストPHPページを作成して、Webサーバーが期待どおりに機能することを確認します。

と呼ばれる新しいPHPファイルを作成します info.php/usr/share/nginx/html ディレクトリ:

  1. nano /usr/share/nginx/html/info.php

次のPHPコードは、サーバーで実行されている現在のPHP環境に関する情報を表示します。

/usr/share/nginx/html/info.php
<?php

phpinfo();

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

これで、WebサーバーがPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 ブラウザに移動し、サーバーのホスト名またはIPアドレスにアクセスしてから、 /info.php:

http://server_host_or_IP/info.php

次のようなページが表示されます。

そのページでPHPサーバーに関する関連情報を確認した後、PHP環境とCentOSサーバーに関する機密情報が含まれているため、作成したファイルを削除することをお勧めします。 使用できます rm そのファイルを削除するには:

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

後で必要になった場合は、いつでもこのファイルを再生成できます。

結論

このガイドでは、NginxをWebサーバーとして使用し、最新のPHPリリースバージョンを使用して、訪問者にPHPWebサイトとアプリケーションを提供するための柔軟な基盤を構築しました。 PHPリクエストを処理するようにNginxを設定しました php-fpm、また、Webサイトのデータを保存するためにMariaDBデータベースを設定します。