RHEL8でNginx1.18+PHP7.4+MariaDB10.3でWordPressをインストールする

RHEL8でNginx1.18+PHP7.4+MariaDB10.3でWordPressをインストールする

はじめに

WordPressをRHEL8環境下でインストールしたので備忘録として手順をまとめます。

CentOS8が、2021年12月31日にサポートが終了してしまうので、代わりのOSを探していたところ、2月1日から個人開発者には本番環境を含む最大16システムまで無料でRed Hat Enterprise Linuxの利用が認められるようになりました。(個人でも商用でも1人で使用するサーバに限られるようです。)  

インストールした環境

– ホスト: ESXi 6.7
– OS: Red Hat Enterprise Linux 8
– nginx 1.18
– PHP 7.4
– MariaDB 10.3
– WordPress 5.7

今回はRed Hat CDNを使用して [サーバー] で進めました。

各パッケージのインストールと設定

RHEL8ではパッケージ管理に大きな変更がありました。 Red Hatからリリースされるコンテンツは BaseOS と Appstream の二つのリポジトリから配信されるようになり、特に Appstream では、従来のパッケージ形式のソフトウェア管理に加わる形で、新たにモジュールという概念が追加されました。 モジュールとは、小さなリポジトリの集合から構成されるもので、RPM をさらに拡張させた新たなパッケージ管理の仕組みです。yum コマンドの使用感をそのままに新たな概念が導入された結果、dnf コマンドにはパッケージ形式とモジュール形式という二つのインストール形式が共存することになりました。

nginx1.18のインストール

普通に dnf module install でインストールすると1.14のバージョンがインストールされます。 下記のコマンドを叩いてみてください。

この画像を見てみると、Stream列のところの 1.14 に [d][e] となっていますね。これは、インストールされるデフォルト[d]のバージョンが1.14で、それが有効[e]になっていることを示しています。ですので、dnf module install で進めると1.14がインストールされるわけです。

なので、下記のコマンドで1.18のnginxをインストールします。

nginxの起動&自動起動の有効化

下記のコマンドで起動と自動起動の有効化が同時にすることができます。

firewalld (ポート着信許可設定)

次に、firewall-cmd コマンドで http(80) と https(443) のポートを開けていきます。

次に、正しくポートが空いているか実際に確認します。

サイトにアクセスできるか確認

これでサーバのIPアドレスでアクセスすると下記のような画面が表示されます。

この画面が出れば、正しくポートが開いています。

PHP7.4のインストール

PHPも同様に、dnf module install を使用して、インストールしていきます。

あと、WordPressを動かすのに足りないパッケージもインストールします。

PHPのバージョン確認

バージョンが7.4であることを確認します。

PHPのバージョン非表示

続いて、PHPバージョンを非表示にしていきますWappalyzerという chrome拡張機能でバージョンが 7.4.6であることが分かってしまいます。このような状態だと、攻撃に有用な情報を取得される可能性がありますので念のため非表示にします。

変更するには /etc/php.ini ファイルを変更します。

目安として380行目あたりにあると思われますが、expose_php = On を Off に変更します。

/etc/php-fpm.d/www.conf のユーザ変更

/etc/php-fpm.d/www.confをスーパーユーザーのテキストエディタで開き、下記のように2つの箇所を変更してください。

編集が終わったら保存してエディタを終了します。

また、このままだとセッションを保存しておくディレクトリの所有者が apache になっていて、ユーザーのログインなどが出来なくなってしまうのでchownコマンドで変更します。

これができたら起動します。

MariaDB10.3 のインストール

MariaDBは dnf install を使用してインストールしていきます。

起動&ユーザー作成

まずMySQLを起動と自動起動を有効化します。

そしたら、mysql_secure_installationコマンドで、rootパスワード設定と初期設定をしていきます。

データベース作成

MySQL内でWordPress用のDB、ユーザ作成をします。
ユーザへ権限付与 MySQL 8.0から GRANT文でのユーザ作成ができないので、CREATE文でユーザ作成をして、権限付与しています。 また、MySQL 8.0からユーザ作成はcaching_sha2_password形式がデフォルトの設定になっていますが、PHP7.2以降は対応していないので従来のmysql_native_password形式指定をしています。

これらのコマンドでデータベースとユーザーを作成してください。パスワードに関しては、rootに設定したものとは別のものにすることをお勧めします。

WordPressのインストール

wgetコマンドで WordPress をダウンロード、/var/www/html/wordperssに展開しました。さらにchownコマンドで 所有権をnginxに設定します。

nginxの設定

以下の内容に書き換えてください。心配な方は必要に応じて元の記述内容をコメントアウトしてください。

example.com となっている場所はすべてご自身のドメインに置き換えてください。編集が終わったら nginxを再起動してください。

SELinuxの設定

SELinuxが有効化された状態だと、PHPでのファイル書き込みとインターネット通信が制限されてしまうので、テーマやプラグイン、アップデートのインストールができません。なので、これらを許可する必要があるので、下記のコマンドを叩きます。

WordPress のセットアップ

ブラウザからサーバーIPの /wp-admin/install.php にアクセスしてください。例えば、ドメインが example.com だとURLは https://example.com/wp-admin/install.php です。

アクセスすると、このような画面が表示されます。

次に進んで、データベースの設定の画面では以下のようにMariaDB で設定したデーターベース名・ユーザー名・パスワードを指定します。
ここでエラーが出る方は、上記の設定をもう一度見直してみてください。

この記事の通りにしているならばデータベース名は wp_database、ユーザー名は wp_admin 、パスワードはMariaDBのところで wp_admin用パスワードを設定したと思うので、そのパスワードを入力してください。

正しくできれば、「インストールを実行」という画面が表示されます。続いてボタンをクリックしてください。

あとはサイトのタイトルと管理者のユーザーを作って「Wordpressをインストール」押せば設定は完了です。

成功したら「ログイン」を押すとログイン画面に移動するので、先ほど作った管理者用のユーザーでログインしてください。

これでインストール完了です。

終わりに

以上でインストール完了ですが、現状ではWordpressを動かすのに必要最低限の設定しか行っていません。
これからnginxの細かい設定を執筆する予定なので、しばらくお待ちください。