CentOS8.0開発環境構築(php7.2)

VirtualBoxを使用してCentOS8.0＋php7.2の開発環境を構築しました。
ゲストOSのIPは固定にしました。
#本記事の環境
ホストOS：Windows10 Pro 64bit 16GB
ゲストOS：CentOS 8.0
Oracle VM VirtualBox：6.0.4
Apache：2.4.37
Tera Term：4.102
php：7.2

#構築手順1(CentOS8インストールまで)
* 以下でCentOS-8-x86_64-1905-dvd1.iso等をダウンロードする。  
  https://www.centos.org/download/  
※ダウンロードは時間がかかります。
* VirtualBoxを起動し「新規」を選択する。

* 「名前とオペレーティングシステム」を以下のように選択し、「次へ」を選択する。
> * Name：任意
> * Machine Folder：変更しない
> * タイプ：Linux
> * バージョン：Red Hat (64-bit)

* メモリーサイズを2048MB(※任意)とし、「次へ」を選択する。

* 「仮想ハードドライブを作成する」を選択し、「作成」を選択する。

* 「仮想ハードドライブの作成」にて、以下のように選択し、「次へ」を選択する。
> * ハードドライブのファイルタイプ：VDI (VirtualBox Disk Image)
> * 物理ハードドライブにあるストレージ：固定サイズ
> * ファイルの場所とサイズ：40.00GB(※任意)

* 作成された仮想マシンを選択した状態で「設定」を選択する。

* 「システム」の「マザーボード」の「起動順序」で「ハードディスク」を一番上にする。

* 「ネットワーク」の「アダプター 1」の「割り当て」を「NAT」にする。

* 「ネットワーク」の「アダプター 1」の「ポートフォワーディング」を選択する。

* ホストIPに「127.0.0.1」、ホストポートに「2222」、ゲストポートに「22」を入力し「OK」を選択する。

* 「ネットワーク」の「アダプター 2」の「ネットワークアダプターを有効化」を選択し、
  「割り当て」を「ホストオンリーアダプター」に変更。「OK」を選択する。

* 作成された仮想マシンを選択した状態で「起動」を選択する。

* 「起動ハードディスクを選択」ダイアログが表示されるので、
  ダウンロードしておいたISOイメージを選択して「起動」を選択する。

* 言語を選択して「続行」を選択する。
  ※ホストOS、ゲストOS間の入力切替はRight Ctrlキーを使用。
  ※検索窓に「j」と入力すると日本語を見つけやすいです。
※tabキーで選択対象を切り替えられます。

* 「インストール先」を選択し、何もせずに「完了」する。

* 「ソフトウェアの選択」を選択し、「最小限のインストール」を選択して「完了」を選択する。

* 「時刻と日付」を選択し、設定を変更したら「完了」を選択する。

* 「ネットワークとホスト名」を選択し、
  「ネットワークとホスト名」設定画面の右上にあるスイッチを
  Ethernet(enp0s3)、Ethernet(enp0s8)両方ともオンにして「完了」を選択する。

* 「インストールの開始」を選択する。rootパスワードの設定を求められるため設定する。
  ユーザーの作成を求められるため「このユーザーを管理者にする」にチェックを入れて作成する。
  ※インストールは時間がかかります。

* CentOSのインストールが完了するので、設定画面右下の「再起動」を選択する。

* ログイン画面に切り替わるので、先ほど作成したユーザーでログインする。

* 言語を選択し次へ、入力ソースはそのままで次へ、オンラインアカウントはそのままで次へ、
  セットアップを完了する。

* 「端末」を起動しrootユーザに切り替え、/etc/sysconfig/network-scripts/に移動する。

* ifcfg-enp0s8を開き「IPADDR=192.168.56.XXX」「PREFIX=24」を追記、
  「BOOTPROTO=none」「ONBOOT=yes」に変更して保存する。
　※XXX：101等。

* 設定を反映させるため再起動する。
<pre>
ifdown enp0s8
ifup enp0s8
</pre>

* Tera TermでIP「192.168.56.XXX」、ポート「22」にアクセスする。
  ※アクセスできない場合は、ファイアフォールを確認しすると良い。以下が手順です。
<pre>
systemctl is-enabled firewalld  ※OS起動時のファイアウォールのデフォルト動作を確認
systemctl status firewalld      ※現在のファイアウォールの有効/無効を確認
systemctl stop firewalld        ※ファイアウォールを止める方法
systemctl status firewalld
systemctl disable firewalld     ※OS起動時のファイアウォールのデフォルト動作を「無効」に変更。
systemctl is-enabled firewalld
</pre>

* コマンドラインで「cat /etc/redhat-release」を実行し、
  「CentOS Linux release 8.0.XXXX (Core)」と表示されることを確認する。


#構築手順2(Apacheインストール)
* Tera TermでIP「192.168.56.XXX」、ポート「22」にアクセスする。

* コマンドラインで以下を実行する。
<pre>
dnf -y install httpd httpd-tools httpd-devel httpd-manual
dnf list installed | grep httpd
</pre>

* コマンド実行結果を以下のものと比較し過不足がないことを確認する。
<pre>
centos-logos-httpd.noarch            80.5-2.el8                            @AppStream
httpd.x86_64                         2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-devel.x86_64                   2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-filesystem.noarch              2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-manual.noarch                  2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-tools.x86_64                   2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
</pre>

* コマンドラインで「which httpd」を実行し、結果が「/usr/sbin/httpd」であることを確認する。

* コマンドラインで以下を実行する。
<pre>
systemctl start httpd
systemctl status httpd
</pre>

* コマンドラインで「systemctl enable httpd」を実行し、
  サーバーの再起動や停止の復旧時に、httpdが自動的に起動するように設定する。
  コマンドラインで「systemctl is-enabled httpd」を実行し、「enabled」と表示されれば成功。

* コマンドラインで以下を実行する。
<pre>
httpd -t
systemctl restart httpd
systemctl status httpd
</pre>

#構築手順3(php7.2インストール)
* PHP7.2をインストールする。
<pre>
dnf install -y php
dnf install -y php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd
dnf list installed | grep php
</pre>

* php-fpmを起動する。
<pre>
systemctl start php-fpm
systemctl status php-fpm
</pre>

* 再起動時もphp-fpmを起動しておきたい場合は、「systemctl enable php-fpm」を実行し、
  「systemctl is-enabled php-fpm」の実行結果が「enabled」であることを確認する。

* /etc/php.iniの修正を実施。※任意 ※バックアップを取った方がよい。
<pre>
expose_php = Off                     ※phpのバージョンの公開(on)/非公開(off)
post_max_size = 8M                   ※アップロードファイルサイズ
upload_max_filesize = 8M             ※アップロードファイルサイズ
date.timezone = "Asia/Tokyo"         ※タイムゾーン
mbstring.language = Japanese         ※言語
mbstring.internal_encoding = UTF-8   ※文字コード
mbstring.http_input = UTF-8          ※文字コード
mbstring.http_output = pass          ※自動変換実施要否
mbstring.encoding_translation = On   ※HTTP入力変換有無  ※文字化けが発生した場合はOffへ
mbstring.detect_order = auto         ※文字コード自動検出の優先順位
mbstring.substitute_character = none ※変換できない文字がある場合の代替文字を出力有無
</pre>

* php-fpmを再起動する。
<pre>
systemctl restart php-fpm
systemctl status php-fpm
</pre>

* Apacheを再起動する。
<pre>
systemctl restart httpd
systemctl status httpd
</pre>

* phpの動作確認を行う。
<pre>
php -v     ※PHP 7.2.11 (cli) (built: Oct  9 2018 15:09:36) ( NTS )
php -r 'phpinfo();'
</pre>

#関連
[OracleLinux8.3開発環境構築(php7.3)](https://qiita.com/Pell/items/c7928a2387f0575b92b1)