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 サイトをインストールできます。それについては、次のチュートリアルで説明します。