RockyLinux8にLEMPスタックをインストールする方法


LEMPは、本番環境でも開発サイクルのどの段階でも、Webアプリケーションをホストおよび提供するために集合的に使用されるオープンソースソフトウェアで構成される人気のあるスタックです。

用語LEMPは、Linux、Nginx(Engine X、したがってEと発音)の頭字語であり、Webブラウザー、MariaDBまたはMySQL –データベース、および動的コンテンツを処理するためのPHPです。 LEMPスタックは、トラフィックが多くスケーラブルなWebアプリケーションやWebサイトをホストするために広く使用されています。

このガイドでは、RockyLinux8.4にLEMPスタックをインストールする方法を学習します。

LEMPスタックのインストールを開始する前に、次の要件が満たされていることを確認してください。

  • sudoユーザーが設定されたRockyLinux8のインスタンス。
  • RockyLinuxインスタンスへのSSHアクセス。

始めましょう…

ステップ1:RockyLinuxにNginxをインストールする

最初のステップは、NginxWebサーバーであるLEMPスタックの最初のコンポーネントをインストールすることです。まず、パッケージをアップグレードします。

$ sudo dnf update -y

更新が完了したら、次のコマンドを実行してNginxをインストールします。これにより、Webサーバーに必要な他の依存関係とともにNginxがインストールされます。

$ sudo dnf install nginx 

Nginxを配置したら、起動時に起動できるようにして、Nginxデーモンを起動します。

$ sudo systemctl enable nginx 
$ sudo systemctl start nginx 

Webサーバーが実行されていることを確認するには、次のコマンドを実行します。

$ sudo systemctl status nginx

出力から、Webサーバーが稼働していると結論付けることができます。

興味があれば、次のようにNginxのバージョンを確認できます。出力は、Nginx1.14.1を実行していることを示しています。

$ nginx -v

nginx version: nginx/1.14.1

また、表示されているURLを参照することで、ブラウザが動作していることを確認できます。これにより、すべてが順調であることを示すデフォルトのNginxウェルカムページが表示されます。

http://server-ip or domain name

ページの表示に問題がある場合は、ポート80を開くか、ファイアウォールでHTTPトラフィックを許可することを検討してください。

$ sudo firewall-cmd --zone=public --add-service=http --permanent 

次に、ファイアウォールをリロードしてページをリロードします。

$ sudo firewall-cmd --reload

ステップ2:MariaDBをRockyLinuxにインストールする

このガイドでは、MariaDBデータベースをインストールします。これは、MySQLよりもはるかに優れた、最適化されたパフォーマンスと豊富なストレージエンジンによるものです。

MariaDBデータベースサーバーをインストールするには、次のコマンドを実行します。

$ sudo dnf install mariadb-server mariadb

完了したら、図のようにMariaDBを有効にして起動します。

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

次に、そのステータスを確認します。

$ sudo systemctl status mariadb

MariaDBのデフォルト設定は十分に安全ではなく、データベースが簡単に侵害される可能性があります。最も基本的なレベルで侵入者を阻止するための予防策として、以下のスクリプトを実行します。

$ sudo mysql_secure_installation

必ずルートパスワードを設定してください。

残りのプロンプトについては、 Y と入力して匿名ユーザーを削除し、リモートrootログインを拒否し、テストデータベースを削除して、最後に加えた変更を保存します。

データベースサーバーにログインするには、次のコマンドを実行します。

$ sudo mysql -u root -p

パスワードを入力してEnterキーを押します。

ステップ3:RockyLinuxにPHPをインストールする

インストールする最後のコンポーネントは、FastCGIProcessManagerの略であるPHP-FPMを介したPHPです。これは、PHP用の効率的で高度なプロセッサであり、トラフィックの多いWebサイトに最適なパフォーマンスとセキュリティを保証する機能を提供します。

まず、最新のPHPバージョンを提供するサードパーティの無料リポジトリであるRemiリポジトリをインストールします。

Remiリポジトリを有効にするには、次のコマンドを実行します。

$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Remiリポジトリを有効にしたら、示されているコマンドを使用してホストされているPHPモジュールのリストを確認します。

$ sudo dnf module list php

出力から、デフォルトバージョンが7.2であることがわかります–タグ [d]が付いています。ただし、最新のモジュールであるRemi8.0をインストールします。

したがって、デフォルトのPHPモジュールをリセットし、最新のRemiPHPモジュールを有効にします。

$ sudo dnf module list reset php
$ sudo dnf module enable php:remi-8.0

次に、システムを更新し、PHPとPHP-FPMを好みのPHP拡張機能と一緒にインストールします。

$ sudo dnf install php php-fpm php-gd php-mysqlnd php-cli php-opcache

インストールが完了したら、図のようにPHP-FPMを有効にして起動します。

$ sudo systemctl enable php-fpm
$ sudo systemctl start php-fpm

次に、PHP-FPMの実行状態を確認します。

$ sudo systemctl status php-fpm

通常、PHP-FPMはApacheユーザーとして実行されますが、Nginxを使用しているため、Nginxに設定する必要があります。したがって、次の構成ファイルを開きます。

$ sudo vim /etc/php-fpm.d/www.conf

ユーザーとグループをNginxに設定します。

user = nginx
Group = nginx

その後、PHP-FPMデーモンをリロードします。

$ sudo systemctl reload php-fpm

最新バージョンのPHPがインストールされていることを確認するには、コマンドを実行します。

$ php -v

Testin PHPのもう1つの便利な方法は、単純なPHPファイルを作成し、それを/ usr/share/nginx/htmlにあるwebrootディレクトリに配置することです。したがって、/ usr/share/nginx /htmlwebrootディレクトリに簡単なinfo.phpファイルを作成します。

$ sudo vim /usr/share/nginx/html/info.php

以下の内容を追加してファイルを保存してください。

<?php

phpinfo();

?>

変更を有効にするには、NginxWebサーバーをリロードします。

$ sudo systemctl restart nginx

最後に、次のURLにアクセスします。

http://server-ip/info.php

インストールされているPHPバージョンに関する詳細情報と他のPHP拡張機能が記載されたWebページが表示されます。

この時点で、LEMPのセットアップは完了です。次のステップでは、Nginxサーバーブロックを構成してサンプルサイトをホストします。

ステップ3:RockyLinuxでNginxサーバーブロックを構成する

サーバーブロックを使用すると、管理者は、異なるサイトドキュメントのルートディレクトリを定義することにより、1つのサーバーで複数のWebサイトをホストできます。これらは、Webサイトファイルを含むディレクトリです。

ここでは、サンプルWebサイトをホストする単一のNginxサーバーブロックファイルを作成します。

まず、サイトの訪問者が利用できるサイトのデータを含むサイトのドキュメントディレクトリを作成します。 example.comというドメインがあるとします。次のようにサイトのドメインディレクトリを作成します。必ずexample.comをサイトの完全修飾ドメイン名または登録済みドメインに置き換えてください。

$ sudo mkdir -p /var/www/example.com/html

これで、ドメインのディレクトリ構造がサイトのファイルをホストするように設定されました。現在、ファイルを所有しているのはrootユーザーです。ファイルを所有するのが通常のユーザーになるように所有権を設定する必要があります。

ファイルの所有権を現在ログインしているユーザーに変更するには、chownコマンドを使用します。

$ sudo chown -R $USER:$USER /var/www/example.com/html

$USER 変数は、現在ログインしているユーザーの値を取得し、ユーザーにhtmlファイルとサブディレクトリの所有権を付与します。さらに、サイト訪問者がサイトページにアクセスできるように、一般的なWebルートディレクトリに読み取り権限を付与します。

$ sudo chmod -R 755 /var/www

これで、サイトディレクトリは、サイトのWebページを提供するように適切に構成されました。

次に、サンプルのテストサイトを作成しましょう。ドメインのhtmlディレクトリに非常に基本的なindex.htmlファイルを作成します。

$ sudo vim /var/www/example.com/html/index.html

以下の内容を貼り付けてください。ご覧のとおり、テスト目的でのみ使用しているため、非常に基本的です。

<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The server block is active!</h1>
  </body>
</html>

HTMLファイルを保存して終了します。

サーバーブロックファイルは、サイトの構成を含むファイルです。これは、NginxWebサーバーがサイトの訪問者からの要求にどのように応答するかを詳しく説明しています。まず、2つのディレクトリを作成します。

  • /etc/nginx/sites-available –これはサーバーブロックファイルを保持するディレクトリです。
  • /etc/nginx/sites-enabled –ディレクトリはNginxにサーバーブロックファイルがリクエストを処理する準備ができていることを通知します。

したがって、次のようにディレクトリを作成します。

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

その後、Nginxのメイン構成ファイルを編集します。

$ sudo mkdir /etc/nginx/nginx.conf

次の行を貼り付けます。最初の行は、追加の構成ファイルを含むディレクトリーへのパスを指定します。 2行目は、ドメイン名の解析に割り当てられるメモリを増やします。

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

保存して終了。

次に、サーバーブロックファイルを作成します。

$ sudo vim /etc/nginx/sites-available/example.com.conf

以下の内容を貼り付けてください。 example.comを完全修飾ドメイン名(FQDN)またはサーバーのIPアドレスに置き換えます。

server {
    listen  80;

    server_name example.com www.example.com;

    location / {
        root  /var/www/example.com/html;
        index  index.html index.htm;
        try_files $uri $uri/ =404;
    }

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

ファイルを保存して終了します。

最後に、サーバーブロックファイルを有効にする必要があります。そのために、サーバーブロックファイルのサイト対応ディレクトリへのシンボリックリンクを作成します。

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

次に、変更を有効にするためにNginxを再起動します。

$ sudo systemctl restart nginx

構成をテストするには、ブラウザを起動してサイトのドメインにアクセスします

http://example.com

これにより、手順3で構成したサーバーブロックのサイトが表示されます。

そして、これで終わりです。このガイドでは、Rocky Linux 8へのLEMPスタックのインストールについて説明し、さらに一歩進んで、カスタムWebサイトをホストするサーバーブロックファイルを作成および構成しました。