CentOS 8にnginxとMariaDB、phpをインストールする手順

「そんな解説いらねえよ」という声が聞こえてきそうなレベルの解説ですが、自分でも忘れないように記しておこうと思います。サーバー構築に自信のあるニキも手順書を横に置いておくだけで安心感が出てくると思うので、ぜひご参考までに…

Webサーバー用ソフトウェア

Webサーバーを動かすのに必要なソフトウェアとして、『Apache』『IIS』、そして『nginx』の3つが大きなシェアを占めています。アクセス数の多いトップ100万サイトのうち3割がnginxを用いているらしいです。

Apacheは開発の歴史が長いためか、資料も多くとっつきやすいと思います。多くのサーバー入門書もApacheでのWebサーバーの構築が多いです。

IISはMicrosoft が開発したものです。Windowsで使われているので、サーバーを触ったことのない方でも見慣れたGUIでポチポチとクリックするだけでWebサイトが公開できてしまいます。

Windowsで動くためか、脆弱性が多く、「外部公開用ならIISは絶対に使うな!」という過激派もいます。私はクローズドなソフトウェアはあまり使いたくないので一度も使ったことはありません。(まず、Microsoftをあまり信用していない)

nginxは上記2つのソフトウェアと同じくWebサーバーを構築するものですが、他のものより速度が違います。また、ロードバランサやリバースプロキシ等の機能が豊富で負荷分散等にも高い性能を持って行うことができます。

性能が高いのは動作に必要なメモリやCPUのタスクが少ないかららしいです。

これは人によりますが、設定ファイルの読みやすさも特徴の一つだと思っています。C言語ライクな記述方法で私にとってはApacheよりも読みやすく、設定のミスが少なくなります。

LAMPとLEMPの違い

よく、サーバー環境の話になると、『LAMP』と『LEMP』が出てきます。サーバーに強い方でないとなんのこっちゃわかりません。「光るのかな?」という意見も出てきそうですw

LAMPとは、

  • Linux
  • Apache
  • MySQL
  • PHP

の頭文字を取ったものです。多くのWebサーバーが上記の構成で動作しているので、固有名詞になってしまっています。

それに対してLEMPとは、

  • Linux
  • nginx
  • MySQL
  • PHP

のソフトウェア軍のことです。

ちなみにnginxは「エンジンエックス」って読むらしいです…私はいつも「ンギィンクス」って言ってます。

解説が長くなってしまいましたが、次から手順を解説していきます。今回は、nginxでphpが動くまでを記載します。

インストール方法

とりあえず、rootを取ります。(取れない方は管理者アカウントで”sudo”してください)

su

早速nginxをインストールします。

dnf install nginx -y

インストール完了後、nginxの起動と自動起動を有効にします。

systemctl start nginx
systemctl enable nginx 

nginxのバージョンは以下のコマンドで調べられます。

nginx -v 

起動した状態で、サーバーのアドレスをブラウザのアドレスバーに入力すると以下の画像が出てきます。

redhatのおじさんすき

systemctlでの起動は成功するけど、画面が出てこない場合はファイアウォールで妨げられている可能性があります。

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

今回はhttp(80番ポート)でのアクセスですので上記のコマンドで十分です。

https(443番ポート)でのアクセスを有効にするには以下のコマンドを入力します。

firewall-cmd --permanent --zone=public --add-service=https 

「そもそも、ルーターで必要な分だけポート開放するから、CentOSのファイアウォールなんかいらないぜ!」という方は以下のコマンドでファイアウォールを切ることができます。

systemctl stop firewalld 
 systemctl disable firewalld  

このテストサイトは /usr/share/nginx/html というディレクトリにありますがデフォルトでは権限がrootですので、後に403を引き起こす可能性があります。以下のコマンドでディレクトリの権限を変更します。

chown nginx:nginx /usr/share/nginx/html -R 

MariaDBのインストール

Oracle社がMySQLをクローズドにしようとしているので、それのフォークがMariaDBです。MySQLと文法は全く同じです。

yum install mariadb-server mariadb -y 

インストールが完了したら起動・自動起動を有効化します。

systemctl start mariadb
systemctl enable mariadb 

MariaDBの初回セットアップを行います。セキュリティ的に重要ですので、初回起動直後に行いましょう。

mysql_secure_installation 
  1. 最初の質問は空白でEnterを押してください。
  2. MySQLのrootパスワードを入力します。再度入力します。
  3. あとはすべて”y”を選んでいくと、セキュリティの強いSQLが出来上がります。

セットアップが終わったら、実際にログインしてみます。

mysql -u root -p 

先ほど入力したパスワードを入力してください。

ログインが出来たらデータベースの操作ができますが、ここでは解説しません。出ましょう。

exit;

PHP-FPMのインストール

Apacheではphpは簡単に使えますが、nginxでは別モジュールになっています。

以下のコマンドでインストールします。

yum install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring -y 

インストール完了後、起動・自動起動を有効にします。

systemctl start php-fpm 
 systemctl enable php-fpm  

php-fpmはapacheを想定して設定ファイルが書かれていますので、nginx仕様に変更します。好きなエディタを使ってください。

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

エディタの検索機能を使って以下の個所を見つけます。

user = apache
group = apache 

この”apache”を”nginx”に変更します。

user = nginx
group = nginx  

変更が完了したら、保存して、nginxとphp-fpmの再起動を行います。

systemctl restart nginx
systemctl restart php-fpm

ここまで完了したら、PHPのテストを行います。PHPテストページを作成します。

nano /usr/share/nginx/html/test.php

ここに以下のコードを入力して保存します。

<?
php phpinfo();
?>

保存ができたら、先ほどのブラウザのアドレスバーに『サーバーのIPアドレス/test.php』を入力してPHP Version~というページが見れれば成功です。

PHPファイルのダウンロードが始まってしまう場合は、PHPとnginxが連携できていない可能性が高いです。/etc/php-fpm.d/www.conflisten =/run/php-fpm/www.sock がちゃんと記述されているか確認してください。

サーバーを公開する前にphpinfoは削除しておきましょう。

rm -f /usr/share/nginx/html/test.php 

これでLEMP環境の構築は以上です。

いかがでしたか?

最近の低質アフィカスブログ記事の〆のセンテンスです。このセンテンスは文法的に間違っているので、イラっと来るのかもしれないですね… 正しくは、

『いかがでしたでしょうか?』