CentOS7にLinux、Nginx、MySQL、PHP(LEMP)スタックをインストールする方法
序章
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リポジトリを追加するには、次のコマンドを実行します。
sudo yum install epel-release
sudo
コマンドを使用しているため、これらの操作はroot権限で実行されます。 root権限でコマンドを実行する権限があることを確認するために、通常のユーザーのパスワードの入力を求められます。 インストールの確認も求められるので、Y
を押して続行します。
EPELリポジトリがサーバーにインストールされたので、次のyum
コマンドを使用してNginxをインストールします。
sudo yum install nginx
インストールが完了したら、次のコマンドでNginxサービスを開始します。
sudo systemctl start nginx
WebブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます(この情報がない場合は、次の見出しの下にある注を参照して、パブリックIPアドレスを確認してください。すでに):
Open in a web browser:http://server_domain_name_or_IP/
情報提供とテストの目的で存在するデフォルトのCentOS7NginxWebページが表示されます。 次のようになります。
このページが表示されている場合は、Webサーバーが正しくインストールされています。
起動時にNginxを起動できるようにするには、次のコマンドを実行します。
sudo systemctl enable nginx
サーバーのパブリックIPアドレスを見つける方法
サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。
コマンドラインから、これをいくつかの方法で見つけることができます。 まず、iproute2
ツールを使用して、次のように入力して住所を取得できます。
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、1行または2行戻ります。 どちらも正しいアドレスですが、お使いのコンピュータではどちらか一方しか使用できない場合がありますので、お気軽に試してみてください。
別の方法は、外部の関係者を使用して、itがサーバーをどのように認識しているかを通知することです。 これを行うには、特定のサーバーにIPアドレスを尋ねます。
curl http://icanhazip.com
IPアドレスの取得に使用する方法に関係なく、Webブラウザのアドレスバーに入力してサーバーにアクセスできます。
ステップ2—MariaDBをインストールする
Webサーバーが稼働しているので、MySQLドロップインの代替品であるMariaDBをインストールします。 MariaDBは、MySQLリレーショナルデータベース管理システムのコミュニティ開発されたフォークです。
ここでも、yum
を使用して、ソフトウェアを取得してインストールできます。 今回は、コンポーネントを相互に通信させるのに役立つ他のヘルパーパッケージもインストールします。
sudo yum install mariadb-server mariadb
インストールが完了したら、次のコマンドでMariaDBを起動する必要があります。
sudo systemctl start mariadb
MariaDBデータベースが実行されているので、いくつかの危険なデフォルトを削除してデータベースへのアクセスをロックダウンするセキュリティスクリプトを実行します。 次のコマンドを実行して、インタラクティブスクリプトを開始します。
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を起動時に開始できるようにします。 これを行うには、次のコマンドを使用します。
sudo systemctl enable mariadb
この時点で、データベースシステムがセットアップされ、次に進むことができます。
ステップ3—PHPのインストール
PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示することができます。
CentOS 7サーバー内でデフォルトで使用可能なPHPバージョンは古くなっています。そのため、PHP 7+を入手して、CentOS 7サーバーにインストールするには、サードパーティのパッケージリポジトリをインストールする必要があります。 Remi は、CentOSサーバー用の最新のPHPリリースを提供する人気のあるパッケージリポジトリです。
CentOS 7のRemiリポジトリをインストールするには、次のコマンドを実行します。
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
インストールが完了したら、コマンドを実行して、好みのバージョンのPHPを含むリポジトリを有効にする必要があります。 Remiリポジトリで利用可能なPHP7以降のリリースを確認するには、次のコマンドを実行します。
yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64
次のような出力が表示されます。
OutputLoaded 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をインストールするには、次のコマンドを実行します。
sudo yum-config-manager --enable remi-php74
これで、通常どおりyum
を使用してPHPをインストールできます。 次のコマンドは、PHP 7.4をNginx内にセットアップし、MySQLベースのデータベースに接続できるようにするために必要なすべてのパッケージをインストールします。
sudo yum install php php-mysqlnd php-fpm
選択したバージョンとしてPHPが使用可能であることを確認するには、次のコマンドを実行します。
php --version
次のような出力が表示されます。
OutputPHP 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
よりもユーザーフレンドリーなテキストエディターです。
sudo yum install nano
nano
または選択したエディターを使用して、/etc/php-fpm.d/www.conf
構成ファイルを開きます。
sudo nano /etc/php-fpm.d/www.conf
次に、user
およびgroup
ディレクティブを探します。 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 …
user
変数とgroup
変数の両方が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.group
、およびlisten.mode
ディレクティブを見つけます。 これらの行はデフォルトでコメント化されています。 行の先頭にある前の;
記号を削除して、コメントを解除します。 次に、所有者とグループをnginx
に変更します。
/etc/php-fpm.d/www.conf
listen.owner = nginx listen.group = nginx listen.mode = 0660
編集が完了したら、ファイルを保存して閉じます。 nano
を使用している場合は、CTRL + X
、Y
、ENTER
の順に押してください。
php-fpm
サービスを有効にして開始するには、次のコマンドを実行します。
sudo systemctl start php-fpm
これで、PHP環境の準備が整いました。 次に、php-fpm
で処理されるPHPスクリプトのすべてのリクエストを送信するようにNginxを構成します。
ステップ4—PHPページを処理するためのNginxの構成
これで、必要なすべてのコンポーネントがインストールされました。 まだ行う必要がある唯一の構成変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することです。
Nginxには専用のディレクトリがあり、サーバーブロックを使用して、ホストされている各Webサイトを個別の構成ファイルとして定義できます。 これは、Apacheの仮想ホストに似ています。
ただし、デフォルトのインストールでは、このディレクトリは空です。 このサーバーでデフォルトのPHPWebサイトとして機能する新しいファイルを作成します。これにより、/etc/nginx/nginx.conf
ファイルで定義されているデフォルトのサーバーブロックが上書きされます。
まず、/etc/nginx/conf.d
ディレクトリにある新しいファイルを開きます。
sudo nano /etc/nginx/conf.d/default.conf
次のPHPサーバー定義ブロックを構成ファイルにコピーし、サーバーのドメイン名またはIPアドレスを指すようにserver_name
ディレクティブを置き換えることを忘れないでください。
/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を再起動して変更を適用します。
sudo systemctl restart nginx
これで、Webサーバーが完全にセットアップされました。 次のステップでは、PHPとNginxの統合をテストします。
ステップ5—WebサーバーでのPHP処理のテスト
Webサーバーがセットアップされたので、テストPHPスクリプトを作成して、php-fpm
を使用してNginxが.php
スクリプトを正しく処理していることを確認できます。
スクリプトを作成する前に、Nginxのドキュメントルートのデフォルトの所有権設定を変更して、通常のsudoユーザーがその場所にファイルを作成できるようにします。
次のコマンドは、デフォルトのNginxドキュメントルートの所有権を sammy というユーザーとグループに変更するため、このコマンドで強調表示されているユーザー名とグループを、システムのユーザー名とグループを反映するように置き換えてください。
sudo chown -R sammy.sammy /usr/share/nginx/html/
次に、テストPHPページを作成して、Webサーバーが期待どおりに機能することを確認します。
/usr/share/nginx/html
ディレクトリにinfo.php
という名前の新しいPHPファイルを作成します。
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
を使用して、そのファイルを削除できます。
rm /usr/share/nginx/html/info.php
後で必要になった場合は、いつでもこのファイルを再生成できます。
結論
このガイドでは、NginxをWebサーバーとして使用し、最新のPHPリリースバージョンを使用して、訪問者にPHPWebサイトとアプリケーションを提供するための柔軟な基盤を構築しました。 php-fpm
を介してPHPリクエストを処理するようにNginxを設定しました。また、ウェブサイトのデータを保存するためにMariaDBデータベースを設定しました。