ウェブサイト検索

CentOS7 に LEMP スタック (Nginx、MariaDB、PHP) を段階的にインストールする


LEMP は、Linux、Nginx (エンジン X と読みます)、MySQL/MariaDB、および PHP の略です。これにより、サーバーが動的な Web サイトと Web アプリをホストできるようになります。このチュートリアルでは、CentOS 7 サーバーに LEMP スタックをインストールする方法を説明します。 MySQL の代わりに MariaDB をデータベース サーバーとしてインストールすることを選択します。

EPEL から CentOS7 に Nginx をインストールする

Nginx は Apache に比べて高速な Web サーバーであり、最近ではより人気が高まっています。 CentOS 7 に Nginx をインストールするには、次のコマンドを使用して EPEL リポジトリを追加する必要があります。 EPEL は、Extra Packages for Enterprise Linux の略です。

sudo yum install epel-release -y

パスワードを入力します。リポジトリが追加されたので、Nginx をインストールします。

sudo yum install nginx -y

Nginx をインストールしたら、それを起動する必要があります。

sudo systemctl start nginx

システム起動時に Nginx が起動できるようにします。

sudo systemctl enable nginx

実行中かどうかを確認します。

systemctl status nginx

出力例:

 nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-09-24 08:36:31 UTC; 1min 19s ago
 Main PID: 13692 (nginx)
   CGroup: /system.slice/nginx.service
           ├─13692 nginx: master process /usr/sbin/nginx
           └─13693 nginx: worker process

Nginx のバージョンを確認します。

[linux-terminal@centos7 ~]$ nginx -v
nginx version: nginx/1.12.2

Web ブラウザにサーバーの IP アドレスを入力し、次のメッセージが表示されれば、Nginx は正しくインストールされています。

次のコマンドを使用して、サーバーのパブリック IP アドレスを見つけることができます。

ip address

または

curl http://icanhazip.com

サーバーのファイアウォールがポート 80 へのパブリック アクセスを無効にしている可能性があります。パブリック アクセスを許可するには、次のコマンドを使用して、iptables ファイアウォールにポート 80 へのトラフィックを受け入れるように指示します。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

これで、サーバーは静的 HTML ファイルをホストできるようになりましたが、動的 Web サイトをサーバーに提供するには、MariaDB と PHP をインストールする必要があります。

CentOS 7 に MariaDB をインストールする

MariaDB は、MySQL のドロップイン代替品です。次のコマンドを使用してインストールします。

sudo yum install mariadb-server mariadb -y

インストールしたら、起動する必要があります。

sudo systemctl start mariadb

システム起動時に MariaDB が起動できるようにします。

sudo systemctl enable mariadb

ステータスを確認します:

systemctl status mariadb

出力:

 mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-09-24 08:48:46 UTC; 23s ago
 Main PID: 13970 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─13970 /bin/sh /usr/bin/mysqld_safe --basedir=/usr

バージョンを確認します:

[linux-terminal@centos7 ~]$ mysql --version
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1

次に、セキュリティ スクリプトを実行する必要があります。

sudo mysql_secure_installation

スクリプトが現在の root パスワードを要求する場合は、空白のままにして Enter キーを押します。次に、Y を入力して root パスワードを設定します。

root パスワードを設定したら、Enter キーを押すだけで他のすべての質問に答えることができます。 (文字 Y は大文字であることに注意してください。これは、それがデフォルトの答えであることを意味します。)

次に、PHP 部分に移りましょう。

CentOS7にPHP-FPMをインストールする

次のコマンドを使用して、PHP と関連パッケージをインストールします。

sudo yum install php php-mysql php-fpm php-gd php-xml php-mbstring -y

次に、php-fpm 構成ファイルを編集します。

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

次の行を見つけます。

listen = 127.0.0.1:9000

これを次のように変更します。

listen = /var/run/php-fpm/php-fpm.sock

次に、次の 2 行を見つけます。

;listen.owner = nobody
;listen.group = nobody

直前のセミコロンを削除します。最後に、ユーザーとグループの値を「apache」から「nginx」に変更します。

user = nginx
group = nginx

ファイルを保存して閉じたら、PHP プロセッサを起動します。

sudo systemctl start php-fpm

次に、システム起動時に php-fpm が起動できるようにします。

sudo systemctl enable php-fpm

Nginx仮想ホストの構成

/etc/nginx/conf.d ディレクトリに新しい仮想ホスト ファイルを作成します。

sudo nano /etc/nginx/conf.d/example.com.conf

これに次の行を追加します。 www.example.com と example.com を独自のドメインに置き換えます。ドメイン名に A レコードを設定することを忘れないでください。

server {
  listen 80;
  server_name www.example.com example.com;
  root /usr/share/nginx/html;
  index index.php index.html index.htm;
  location / {
    try_files $uri $uri/ /index.php$query_string;
  }
  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 reload nginx

追加の仮想ホスト ファイルを追加して、単一サーバー上で複数の Web サイトをホストできます。

PHP処理のテスト

Web ルート ディレクトリに info.php ファイルを作成します。

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

次のテキストをファイルに挿入します

<?php phpinfo(); ?>

保存して閉じます。次に、ブラウザに次のように入力して、新しく作成したファイルにアクセスします。

http://example.com/info.php

または

your ip address/info.php

次のスクリーンショットのようなものが表示されれば、PHP は正しく動作しています。

このファイルはテスト専用です。セキュリティ上の理由から、次のコマンドを使用して削除できるようになりました。

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

これで LEMP がインストールされました。次に何をすべきか疑問に思うかもしれません。 LEMP スタックの上に WordPress または Drupal Web サイトをインストールできます。それについては、次のチュートリアルで説明します。

関連記事