CentOS8にWordPressのテスト環境を構築してみた
- 
          カテゴリ:
                      
 - サーバ
 
最近CentOS8が出たということで、試しに触ってみることにしました。
ちょうど同時期にWordPressの環境を構築していじっていたので、その流れでCentOS8にWordPressのテスト環境を構築してみたいと思います。
環境構築する上で今回使うもののバージョン情報は以下の通りです。
- Virtualbox: 6.0.10
 - CentOS: CentOS Linux release 8.0.1905 (Core)
 - Apache: 2.4.37
 - PHP: 7.2.11
 - MariaDB: 15.1
 
CentOS8+VirtualBoxのインストール
CentOS8をダウンロードしてきます。
https://ftp.riken.jp/Linux/centos/8.0.1905/isos/x86_64/
その中の「CentOS-8-x86_64-1905-dvd1.iso」をダウンロードしてください。6GBあるので結構ダウンロードには時間がかかります。
次にVirtualBoxなどの仮想環境構築ツールでCentOS8をインストールしていきます。
左上の「新規」をクリック。

名前:CentOS8
マシーンフォルダー:デフォルト
タイプ:Linux
バージョン:Red Hat(64-bit)
にして次へをクリック。

足りないかもしれないけど、とりあえずメモリは1~2GBを設定。
「仮想ハードディスクを作成する」を選択。
「VDI(VirtualBox Disk Image)」を選択。
可変サイズを選択して次へをクリック。
仮想環境のハードディスクを設定します。OSが6~8GBあるので、余裕を見て16BGにしておきます。
そのままの状態で「作成」をクリック。
そして、CentOS8を選択した状態で「起動」をクリックします。
「起動ハードディスクの選択」が出てくるので、最初にダウンロードしたCentOS8のイメージファイルを選択してください。
そして、「起動」ボタンをクリックしてください。
「Install CentOS Linux 8.0.1905」を選択
インストールの初期設定をしていきます。インストール先を選択します。

「ATA VBOX HARDDISK」を選択して完了をクリック。

ネットワークとホスト名の設定で、左側のトグルをオンにしてください。
「ソフトウェアの選択」をクリックし、その後ベース環境の中から「最小限のインストール」を選択してください。
完了を押したら、先ほどの画面に戻るので「インストールの開始」をクリックしてください。
OSのインストールが開始されます。
インストール中にroot権限のパスワードを設定してください。
さらに、一般ユーザを設定します。ここでは「wordpress」というユーザを作成しました。
設定すると、インストールが再開されます。
来た!
このまま再起動すると再度インストールが開始してしますので、思い切って仮想マシンを停止!
ストレージにある「CentOS8-8-x86=84-1905dvd1.iso」などとあるISOイメージを除去してください。

再度仮想マシンを起動します。
やっとCentOS8をインストールしてログインできました。
とりあえずは、ll、pwd、unameコマンドは使えますね
これからWordPressの環境を構築していきます。
WordPressの環境構築
下準備
OSのバージョン確認
[wordpress@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
タイムゾーンの設定をしておきます。
[wordpress@localhost ~]$ sudo su - timedatectl set-timezone Asia/Tokyo
[注意]
もし上記コマンド実行時に「sudoers ファイル内にありません。この事象は記録・報告されます」というメッセージが出たら、別途設定が必要です。
設定手順は下記記事にまとめてあります。
【CeontOS】「sudoers ファイル内にありません。この事象は記録・報告されます」というメッセージが出た時の対処
CentOS7まではyumコマンドを使ってましたが、CentOS8ではdnf コマンドを使います。
、、、と思いきや、普通にyumコマンドも使えるっぽい。(;^^)
実はyumコマンドに見えて、中身は/usr/bin/dnf-3 へのシンボリックリンクになっていました。(;・・)
試しにオプションを見てみます。
[wordpress@localhost ~]$ dnf -h
usage: dnf [options] COMMAND
主要コマンドの一覧:
alias                     List or create command aliases
autoremove                当初は依存関係としてインストールされた不要なパッケージをすべて削除します
 ・・・
upgrade                   システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします
upgrade-minimal           システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアップグレードします
プラグインコマンドの一覧
builddep                  Install build dependencies for package or spec file
changelog                 Show changelog data of packages
 ・・・
repomanage                rpm パッケージのディレクトリーを管理します
reposync                  リモート repo からすべてのパッケージをダウンロードします
オプションの引数:
  -c [config file], --config [config file]
                        設定ファイルの場所
  -q, --quiet           静かな操作
 ・・・
  --cves CVES           特定の CVE の修正に必要なパッケージを更新に含めます
  --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low}
                        深刻度に一致するセキュリティー関連パッケージを更新に含めます
  --forcearch ARCH      アーキテクチャーの使用を強制します
ヘルプが事細かに出るようになりましたね。結構量が多くてぴっくり!
余りにも数が多かったので一部省略しています。全体を見たい方は記事の最後の補足事項の中で全部載せています。
念のためdnfの最新にアップデート。
[wordpress@localhost ~]$ sudo dnf update
まずSELinuxの無効化しておきます。
[wordpress@localhost ~]$ sudo vi /etc/selinux/config
#SELINUX=enforcing
上記に「#」を付けてコメントアウトし、下記を追記。
SELINUX=disabled
Apache
Apache のインストールをインストールします。
[wordpress@localhost ~]$ sudo dnf -y install httpd
Apacheの設定変更
[wordpress@localhost conf]$ sudo vi httpd.conf
#User apache
#Group apache
上記に「#」を付けてコメントアウトし、下記を追記。
User wordpress
Group wordpress
自動起動の設定
[wordpress@localhost ~]$ sudo systemctl enable httpd
Apacheの起動
[wordpress@localhost ~]$ sudo systemctl start httpd
Apacheの状態確認
[wordpress@localhost ~]$ sudo systemctl status httpd
※実行してみるとわかりますが結果は標準出力ではなく、vimのようにエディターのような形で表示されるっぽい。
バージョンの確認
[wordpress@localhost ~]$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Jul 30 2019 19:56:12
PHP
PHPをインストールします。
現時点でインストール可能なPHPを確認。
[wordpress@localhost ~]$ sudo dnf -y install php-mysqlnd php
バージョンの確認
[wordpress@localhost ~]$ php -v
PHP 7.2.11 (cli) (built: Oct  9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
MariaDB(MySQL)
MariaDB(MySQL)をインストールします。
[wordpress@localhost ~]$ sudo dnf -y install mariadb-server
自動起動設定
[wordpress@localhost ~]$ sudo systemctl enable mariadb
MariaDBの起動
[wordpress@localhost ~]$ sudo systemctl start mariadb
MariaDBの状態確認
[wordpress@localhost ~]$ sudo systemctl status mariadb
MariaDBのバージョン確認
[wordpress@localhost ~]$ mysql --version
mysql  Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1
Wordpress用のデータベース作成と権限の設定を行います。
[wordpress@localhost html]$ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.3.11-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> exit
WordPress
Wordpressのダウンロードの前に、下準備といしてwgetとtarをインストールします。
[wordpress@localhost ~]$ sudo dnf -y install wget tar
最新のWordpressをダウンロードします。
[wordpress@localhost ~]$ cd /var/www/html
[wordpress@localhost ~]$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
ダウンロードしたファイルを解凍します
[wordpress@localhost ~]$ sudo tar xvf latest-ja.tar.gz
権限の変更
[wordpress@localhost ~]$ sudo chown -R wordpress:wordpress .
あとはブラウザより「http://xx.xx.xx.xx/wordpress/」にアクセスして画面から設定を行います。以下のWindows10の設定と同じなので参考にしてください。
補足事項
※1.dnfのヘルプ
[wordpress@localhost ~]$ dnf -h
usage: dnf [options] COMMAND
主要コマンドの一覧:
alias                     List or create command aliases
autoremove                当初は依存関係としてインストールされた不要なパッケージをすべて削除します
check                     packagedb の問題を確認します
check-update              利用可能なパッケージのアップグレードを確認します
clean                     キャッシュデータを削除します
deplist                   パッケージの依存関係とこれを提供するパッケージがどれかを一覧表示します
distro-sync               インストール済みパッケージを利用可能な最新バージョンに同期します
downgrade                 パッケージをダウングレードします
group                     グループ情報を表示または使用します
help                      有用な使用方法のメッセージを表示します
history                   トランザクション履歴を表示、または使用します
info                      パッケージもしくはパッケージのグループについての詳細を表示します
install                   システムに 1 つのパッケージまたは複数のパッケージをインストールします
list                      パッケージまたはパッケージのグループを一覧表示します
makecache                 メタデータキャッシュを生成します
mark                      インストール済みパッケージをユーザーがインストールしたとマークするか、またはマークをはずします。
module                    モジュールと対話します。
provides                  どのパッケージが特定の値を提供するか見つけます
reinstall                 パッケージを再インストールします
remove                    システムから 1 つのパッケージまたは複数のパッケージを削除します
repolist                  設定済みのソフトウェアリポジトリーを表示します
repoquery                 キーワードに一致するパッケージを検索します
repository-packages       特定のリポジトリーのすべてのパッケージに対して、コマンドを実行します
search                    特定の文字列のパッケージの詳細を検索します
shell                     対話式 DNF シェルを実行します
swap                      1 つの  spec を削除およびインストールするために対話式 dnf モッドを実行します
updateinfo                パッケージに関する勧告を表示します
upgrade                   システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします
upgrade-minimal           システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアップグレードします
プラグインコマンドの一覧
builddep                  Install build dependencies for package or spec file
changelog                 Show changelog data of packages
config-manager            dnf 設定オプションおよびリポジトリーの管理
copr                      Copr リポジトリーとの対話。
debug-dump                ファイルにインストール済みの rpm パッケージに関するダンプ情報
debug-restore             debug-dump ファイルに記録されたパッケージを復元します
debuginfo-install         debuginfo パッケージのインストール
download                  現在のディレクトリーにパッケージをダウンロードします
needs-restarting          再起動が必要な更新済みバイナリーを決定します
playground                Playground リポジトリーとの対話。
repoclosure               リポジトリーの未解決の依存関係の一覧を表示します
repodiff                  List differences between two sets of repositories
repograph                 ドット形式でパッケージの依存関係グラフ全体を出力
repomanage                rpm パッケージのディレクトリーを管理します
reposync                  リモート repo からすべてのパッケージをダウンロードします
オプションの引数:
  -c [config file], --config [config file]
                        設定ファイルの場所
  -q, --quiet           静かな操作
  -v, --verbose         詳細な操作
  --version             DNF バージョンを表示して終了します
  --installroot [path]  インストール root を設定します
  --nodocs              ドキュメントをインストールしません
  --noplugins           すべてのプラグインを無効にします
  --enableplugin [plugin]
                        名前ごとにプラグインを有効にします
  --disableplugin [plugin]
                        名前ごとにプラグインを無効にします
  --releasever RELEASEVER
                        設定ファイルと repo ファイルの $releasever の値をオーバーライドします
  --setopt SETOPTS      任意の設定オプションと repo オプションを設定します
  --skip-broken         パッケージをスキップして depsolve 問題を解決します
  -h, --help, --help-cmd
                        コマンドのヘルプを表示する
  --allowerasing        依存関係を解決するために、インストール済みパッケージの消去を許可します
  -b, --best            トランザクションにおいて利用可能な最適なパッケージバージョンを試してください。
  --nobest              do not limit the transaction to the best candidate
  -C, --cacheonly       システムキャッシュから全面的に実行し、キャッシュは更新しません
  -R [minutes], --randomwait [minutes]
                        コマンドの最大待ち時間
  -d [debug level], --debuglevel [debug level]
                        出力レベルをデバッグします
  --debugsolver         ファイルに詳細な解決結果をダンプします
  --showduplicates      一覧/検索コマンドで repo の重複を表示します
  -e ERRORLEVEL, --errorlevel ERRORLEVEL
                        エラー出力レベル
  --obsoletes           dnf の廃止されたアップグレードの処理ロジックを有効にするか、情報、一覧、repoquery を廃止するパッケージの機能を表示します
  --rpmverbosity [debug level name]
                        rpm の出力レベルをデバッグします
  -y, --assumeyes       すべての質問に「はい」(yes) と自動的に答えます
  --assumeno            すべての質問に「いいえ」(no) と自動的に答えます
  --enablerepo [repo]
  --disablerepo [repo]
  --repo [repo], --repoid [repo]
                        id または glob により特定のリポジトリーだけを有効にします。複数回指定することが可能です
  --enable, --set-enabled
                        enable repos with config-manager command
                        (automatically saves)
  --disable, --set-disabled
                        disable repos with config-manager command
                        (automatically saves)
  -x [package], --exclude [package], --excludepkgs [package]
                        名前または glob ごとにパッケージを除外します
  --disableexcludes [repo], --disableexcludepkgs [repo]
                        excludepkgs を無効にします
  --repofrompath [repo,path]
                        追加のリポジトリーに対するラベルおよびパスは、複数回指定することが可能です。
  --noautoremove        もはや使用されていない依存関係の削除を無効にします
  --nogpgcheck          disable gpg signature checking (if RPM policy allows)
  --color COLOR         色を使うかどうか制御します
  --refresh             コマンド実行前にメタデータを期限切れに設定します
  -4                    IPv4 アドレスのみを解決します
  -6                    IPv6 アドレスのみを解決します
  --destdir DESTDIR, --downloaddir DESTDIR
                        パッケージをコピーするディレクトリーを設定します
  --downloadonly        パッケージのみをダウンロードします
  --comment COMMENT     トランザクションにコメントを追加します
  --bugfix              バグ修正関連パッケージを更新に含めます
  --enhancement         機能拡張関連パッケージを更新に含めます
  --newpackage          newpackage の関連パッケージを更新に含めます
  --security            セキュリティー関連パッケージを更新に含めます
  --advisory ADVISORY, --advisories ADVISORY
                        特定のアドバイザリーの修正に必要なパッケージを更新に含めます
  --bzs BUGZILLA        特定の BZ の修正に必要なパッケージを更新に含めます
  --cves CVES           特定の CVE の修正に必要なパッケージを更新に含めます
  --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low}
                        深刻度に一致するセキュリティー関連パッケージを更新に含めます
  --forcearch ARCH      アーキテクチャーの使用を強制します
※2.インストール中に画面がバグる(虹色のノイズ画面)時の対処法
CentOS8のインストール時当初、何度やってもバグってしまいます。
以下のようなカオスな画面が表示されます。最初かなりビビりました。w(´゚д゚`)

ネットで調べたら解決策を見つけました。!
原因として、VirtualBoxのバージョンが古かった(Ver5.2.22)のと、グラフィックコントローラーの設定を「VBoxSVGA」にしていたのが分かった模様。
そのため解決策として、
- 最新のVirtualBoxを使う(Ver6.0.10)
 - グラフィックコントローラーとしてVBoxSVGAではなく「VMSVGA」を選択することでした。
 
上記を実施したところ、うまくインストールができました。\(^_^)/
        