2020年3月8日一部、修正(php-mysqliのインストールを追加)しました。
2020年3月9日 ApacheのAllowOverrideについて追記しました。
2020年6月25日 メール送信の部分を修正しました。
2020年7月13日 CentOS8.2でSSL(https)接続が上手くいかず、最初からやり直したら、上手くいきました。
- 環境
- VirtualBoxのダウンロード
- VirtualBoxで仮想マシンを作る
- VirtualBoxの仮想マシンのネットワークを設定
- Cent OS 8.1をダウンロード
- CentOS8.1を仮想マシンに入れる
- CentOS8.1をインストール
- CentOS8.1 ネットワーク設定
- 開発ツールなど、基本的なパッケージをインストール
- アップデート
- 不要なサービスを停止します
- selinuxの無効化
- firewalld設定
- ssh接続
- タイムゾーン時間設定
- PostfixのメールをGmailで送信
- php7.4のインストール
- MariaDBインストール
- データベースの作成と削除
- https接続用自己署名のサーバー証明書
- WordPressなら、php-mysqliのインストールも必要
- WordPressをインストールする際は、GDライブラリが必要
- FTP接続をしたい場合は、次の記事にお進みください
- WordPressのインストールは、次の記事にお進みください
- 参考サイト
環境
ホスト:WIndows10・・・Macでも操作はほぼ変わりません
ゲスト:CentOS 8.1
VirtualBox:バージョン6.1.4
VirtualBoxのダウンロード
VirtualBoxの公式サイトからダウンロードします。

でかでかと出ているDownloadボタンをクリック
ダウンロードページに遷移します。

Windows10は「Windows hosts」Macなら「OS X hosts」をクリックします。
クリックすると、警告が出る場合と出ない場合がありますが、ダウンロードしてください。
ダウンロードしたら、必要に応じてインストールしましょう。
基本、全部推奨設定のままで良いと思います。
VirtualBoxで仮想マシンを作る

「新規」と書かれている+ボタンをぽっちっとクリックするのだぁ!

エキスパートだと思っていなくても、自分はエキスパートだ!と思っていても、「エキスパートモード」をクリック。

「名前の欄」に「cent_os8」のように入力しましょう。
名前は自由ですが、 他の仮想マシンと混同しないような名前にするようにしましょう。
また、Cent OS8と記入すると、タイプとバージョンが自動的に反映されます。
もし、反映されなかったら、上の図と同じように設定してね。
「メモリーサイズ」を設定するのだぁ。
適当でいいけど、少ないと動作がもっさり・・・最悪フリーズ。
「ハードディスク」は「仮想ハードディスクを作成する」にしましょう。
ここまでできたら、「作成」をぽっちっとな。たぶん爆発しないから大丈夫!

ハードディスク容量は「可変サイズ」にしておきましょう。ちょっと大変ですが、後から増やせます。
後から増やすのも面倒なので、「ファイルサイズ」は余裕を持たせてくださいね。
「作成」をクリックしたら、仮想マシンの完成です!

VirtualBoxの仮想マシンのネットワークを設定

「設定」をクリックします。

左側で「ネットワーク」をクリック。
ネットワークの設定が表示されたら、「割り当て」を「ブリッジアダプター」にします。

一番簡単だし、WordPressの構築などで実機確認ができるので、私はブリッジアダプターにすることが多いです。
設定したら、「OK」をクリックして設定画面を閉じます。
Cent OS 8.1をダウンロード
CentOSの公式サイトからCentOS8.1をダウンロードします。

「CentOS Linux DVD ISO」をクリック。

ミラーサイトがたくさん出てきます。
一番上のものを選んで、ダウンロードします。
7ギガ以上あるので、時間がかかります。
携帯でダウンロードしたら、えらいこっちゃ。
CentOS8.1を仮想マシンに入れる
ダウンロードしたファイルを仮想マシンに入れます。

「設定」をクリック。

画面左側で「ストレージ」を選択。
ストレージデバイス コントローラーの「空」を選択。(真ん中の画面)
属性のところにある「円マーク」をクリック。

「ディスクファイルを選択」をクリック。
別ウィンドウが開きますので、先ほど、ダウンロードしたCentOS8.1のデータを選択します。

先ほど、「空」となっていたところに「CentOS-8.1~~」と変わったことを確認しましょう。
確認したら、「OK」ボタンをクリックします。
CentOS8.1をインストール

仮想マシンを起動してCentOS8.1をインストールします。
VirtualBoxの「起動の右にある小さい三角」をクリックして「通常起動」を選び、仮想マシンを起動しましょう。
「起動」をクリックして起動してもOKです。

VirtualBoxから仮想マシンを起動すると別ウィンドウが立ち上がります。
キーボードの上下キーを使って、「Install CentOS Linux 8」選択します。
何もしないと、自動的にbootされてしまうので、ご注意を。

マウスをつかって、「日本語」を選択します。
選択したら、右下の「続行」ボタンをクリック。

「ソフトウェアの選択」をクリック。

「最小限のインストール」を選択。
左上にある「完了」ボタンをクリック。

画面が切れてしまいますが、「インストール先」をクリック。

ローカルの標準ディスクのところに表示されたディスクを選択。
選択したら左上にある「完了」をクリック。

時刻と日付を選択。

タイムゾーンを日本に設定します。
設定が終わったら、左上の完了を押してください。

設定が終了したら、「インストールの開始」ボタンが青色に変化しますので、クリック。
インストールが開始されます。

インストール中に、「rootパスワード」をクリックして、管理者のパスワードを設定します。

パスワードは忘れないようにしてから、パスワードを入力します。
問題があるパスワードの場合「完了」を2回押す必要があります。

ユーザーを作成したい場合は、「ユーザーの作成」をクリックして作成します。

インストールが終了したら、「再起動」をクリックします。

再起動して上の画面になったら、キーボードの上下キーを押して、自動的にbootされるのを中止させます。

VirtualBoxの仮想マシンのところで右クリック。
閉じる>電源オフを選択して、仮想マシンを終了させます。

仮想マシンの電源がOFFになったら、「設定」をクリック。

画面左側の「ストレージ」をクリック。
画面中央の「CentOS-8.1~~~」を選択。
画面中央の下にある×ボタンをクリック。

コントローラー:IDEの中身が空になったら「OK」をクリック。

再度、「設定」をクリック。

画面左側で「システム」を選択。
画面中央で「ハードディスク」を選択して、上ボタンをクリックして一番上にくるようにします。

設定したら「OK」をクリック。

仮想マシンを起動させます。
いろいろと画面が出てきて・・・

localhost login:
と出てきたら、画面のように
root
と入力します。
パスワードを聞かれますので、インストールした際に設定したパスワードを入力します。
[root@localhost ~]#
と表示されたら、無事にインストール完了です。
さてっと。こっからが長いんだよね。
CentOS8.1 ネットワーク設定
まずは、ネットワークに接続します。

コマンド
nmtui
ネットワークマネージャーが立ち上がります。

キーボードの上下キーで
Edit a connection
を選択、キーボードのEnterキーを押す。

キーボードの上下キーで
enp0s3
を選択、 キーボードのEnterキーを押す。

キーボードの上下キーで
Antomatically connect
を選択し、[ ]なら、スペースキーを押して[x]にします。
上下キーでカーソルを移動させて、OK
にあわせてキーボードのEnterキーを押す。
設定するIPアドレスを決めていない場合
設定するIPアドレスが決まっている場合は、ワープしてくださいね。

<Back>にカーソルをあわせてキーボードのEnterキーを押す。

QuitにカーソルをあわせてキーボードのEnterキーを押す。

コマンド
nmcli
自動で設定されたIPアドレスが表示されます。
ipv4なら上図の矢印のところ、inet4と、DNS configurationのserversの番号を控えましょう。

ネットワーク(インターネット)に接続できているか、確認します。
コマンド
ping google.com
グーグルでなくても良いです。
上図のように反応が返ってきたら、OKです。
pingを終了するには「controlキー+cキー」です。
反応が返ってこない場合、ネットワークに接続できていません。
どっかで設定を間違っているとか、LANケーブルが抜けているとか、ゲートウェイの電源が落ちているとか、原因を探ってみてください。
問題なければ、自動で設定されたIPアドレスで固定してしまいます。
設定するIPアドレスが決まったら、IPアドレスを固定化
再度、ネットワーク設定画面を立ち上げます。
ネットワーク設定画面のままなら、飛ばしてください。

コマンド
nmtui

キーボードの上下キーで
Edit a connection
を選択、Enterキーを押す。

キーボードの上下キーで
enp0s3
を選択、 キーボードのEnterキーを押す。

IPv4 CONFIGURATION <Automatic>のところにキーボードの上下キーを使ってカーソルをあわせて、キーボードのEnterキーを押して、<Manual>に変更する。
IPv4 CONFIGURATION の横にある<Show>にカーソルをあわせてキーボードのEnterキーを押す。

Addressesのところに、固定するIPアドレスを入力。/も忘れずに。
(普通なら、192.168.0.101/24や192.168.1.101/24などですが、私のネットワークはサブネットマスクを変更しているので、ちょっと違います。同じにすると動かないよ。)
Gateway、DNS serversは、コマンドnmcli
で調べた DNS configurationのserversのところの値です。
IPv6 CONFIGURATION <Automatic>のところにキーボードの上下キーを使ってカーソルをあわせて、キーボードのEnterキーを押して、<Ignore>に変更して無効化します。
全部設定が終わったら、<OK>にカーソルをあわせて、キーボードのEnterキーをぽっちっとな。

<Back>にカーソルをあわせてキーボードのEnterキーを押す。

QuitにカーソルをあわせてキーボードのEnterキーを押す。

ちゃんとネットワークに接続できているかpingで確認。
コマンド
ping google.com
上図のように表示されたらOKです。
pingを終了するには「controlキー+cキー」です。
開発ツールなど、基本的なパッケージをインストール
開発ツールなど、基本的なパッケージをインストールしましょう。
コマンド 1行ずつ入力してくださいね。
yum -y groupinstall base
yum -y groupinstall development
yum -y groupinstall network-tools
CentOS8からはyumじゃなくてdnfでは? と思ったあなた!素敵ですね。
アップデート
一式、最新版にアップデートしましょう。
コマンド
dnf update
または
sudo dnf update
不要なサービスを停止します
コマンド 1行ずつ入力してくださいね。
systemctl disable atd
systemctl disable kdump
systemctl disable mdmonitor
selinuxの無効化
私の記憶によれば、selinuxは3つの設定があって、セキュリティなどを向上させてくれるのですが、使うと動かなくなるものが多いので、無効化してしまうことがほとんどです。
コマンド
vim /etc/sysconfig/selinux
または
vi /etc/sysconfig/selinux

SELINUX=enforcing
↓ ↓ ↓ ↓ SELINUX=disabled

再起動します
コマンド
shutdown -h now
firewalld設定
設定を確認します。
コマンド
firewall-cmd --list-all

publicゾーン(パブリックエリア向け設定)にcockpit(ウェブブラウザでサーバーを管理するための機能)、 dhcpv6-client(IPv6用のDHCP clientサービス)、ssh(リモート接続)が許可されています。
HTTP(80/tcp) と HTTPS(443/tcp) を追加します。
メールを送信するなら、下記のポートも追加します。
smtp(25/tcp):メール送受信
imaps(993/tcp):IMAP(Internet Message Access Protocol) Over SSL
pop3s(995/tcp):POP(Post Office Protocol) Over SSL
submission(587/tcp):25番ポート以外でメールの送信を行うためのポート
コマンドは1行ずつ実行してください。
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=25/tcp --permanent
firewall-cmd --add-port=933/tcp --permanent
firewall-cmd --add-port=995/tcp --permanent
firewall-cmd --add-port=587/tcp --permanent
設定を読み込みます。
firewall-cmd --reload

設定を確認します。
firewall-cmd --list-ports --zone=public
80/tcp 443/tcp と表示されたらOKです。
25、933、995、587のポートも設定した場合は、25/tcp 933/tcp 995/tcp 587/tcpが表示されていることを確認しましょう。
念のため、firewall-cmd --list-all
でも確認しておきましょう。
下記のキャプチャーは、80、443のみ設定しています。

ssh接続
ssh接続ができるので、ssh接続で作業した方がいいと思います。
SSH接続すると、Macならターミナル、Windowsならコマンドプロンプトなどを使ってコマンドをコピペできるので楽。
Macのターミナルなら右クリックでペーストができます。
Windowsのコマンドプロンプトなら、ウィンドウの上の枠を右クリックして、「プロパティ」を選択

Ctrl + Shift +C/V をコピー/貼り付けとして使用する(C)を有効化します。

ターミナルかコマンドプロンプトかPowershellを立ち上げて
ssh root@192.168.0.101
と打ち込みます。@の後は、CentOSで設定したIPアドレスです。
Yes,Noと聞いてくるので、「yes」
CentOSのパスワードを聞いてくるので、入力します。
これでSSH接続ができました!
参考画像:IPアドレスが違います。

タイムゾーン時間設定
タイムゾーンをアジア/東京に設定します。
timedatectl set-timezone Asia/Tokyo

NTPサーバーを変更します。
本来なら、Stratum1じゃなくて、Stratum2以降のサーバーに接続するのが推奨されていますが、日本の場合、 Stratum1でもOKだそうなので・・・詳細はこちら
vim /etc/chrony.conf
pool 2.centos.pool.ntp.org iburst
↓↓↓
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
/etc/chrony.conf 変更前

/etc/chrony.conf 変更後

chronyd を再起動
systemctl restart chronyd
chronyd を自動起動
systemctl enable chronyd

10分後に動作確認
chronyc sources -v
下図の赤矢印のような表示があればOKです。

PostfixのメールをGmailで送信
お問い合わせフォームの確認などでメールの送信が必要な場合、必要な設定です。
メールを使わないものを開発される場合は、必要ありません。
必要なものをインストール
yum -y install postfix
yum -y install mailx
dnf install cyrus-sasl-plain cyrus-sasl-md5dnf -y install telnet telnet-server
Googleアカウントで、SMTP認証につかう専用パスワードを作成(2段階認証をしている場合)

グーグルアカウント https://myaccount.google.com/
左側メニューで「セキュリティ」を選択。
「アプリパスワード」を新規作成してください。
GmailのSMTP認証情報ファイルを作成します。
新規ファイルを作成。
vim /etc/postfix/gmail

1行目に入力します。
[smtp.gmail.com]:587 <Gmailのアドレス>:<Gmailのパスワード>
Gmailアドレスの後にスペースは不要です。Gmailのパスワードの前にもスペースは不要です。<>も不要です。
Gmailアドレスとパスワードの間にはセミコロン:を半角で入れてください!

保存したら、パーミッションを変更します。
chmod 600 /etc/postfix/gmail
PostfixのDBファイルを生成します。
postmap /etc/postfix/gmail
postmap hash:/etc/postfix/gmail
Postfixの設定
vim /etc/postfix/main.cf
最終行に下記を追加します。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes

Postfix 、Telnet を起動します。
systemctl start postfix
systemctl start telnet.socket
Postfix、Telnet の自動起動を設定します。
systemctl enable postfix
systemctl enable telnet.socket
root宛メールの送信先を変更します。
vim /etc/aliases
最終行に下記を追加します。
root: Gmailのアドレス

ファイルの編集が完了したら、設定を反映させます。
newaliases
メール送信確認
自分のアドレスへメールを送信すると、登録したGmailアドレスからメールが届くはずです。
なお、登録したGmailに送信しても届きませんのでご注意ください。
mail test@sample.jp
Subject: test
test
EOT
EOTはCtrl+Dです。 メールアドレスはご自身のものに変更してくださいね。
または、次のコマンドでも送信できます。
echo "complete setup postfix" | mail -s "`hostname` finished first setup." test@sample.jp
※メールアドレスはご自身のものに変更してくださいね。
メールが送信できていないとき
vi /var/log/maillog
上記コマンドで、メールログが確認できます。
エラーを修正しましょう。
php7.4のインストール
CentOS8は、php7.2が標準ですが、最新版にしたいので、REMIレポジトリを使ってインストールします。
REMIレポジトリのウィザードを使って、コマンドを確認しながら、インストールします。

上図の赤枠のところを選択すると、コマンドが表示されます。

順番にやっていきましょうね。
EPELとREMI Repositoryを追加
-y
をつけて、途中の入力を省いています。
また、画像はsudo yum
としてあります。管理者でログインしている場合、sudo
は不要です。
CentOS7まではyumでしたが、CentOS8からはdnfになっていますが、yumでも大丈夫なようです。
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

yum-utils packageインストール
dnf install yum-utils

7.4のモジュールストリームを有効化
dnf module reset php
dnf module install php:remi-7.4
途中で、インストールするかどうか聞かれるのでyと入力します。

アップデート
dnf update
途中、インストールするか聞かれたらyと入力します。


完了しましたと表示されたら、完了です。
phpインストール
dnf install php
途中、インストールするか聞かれたらyと入力します。

テスティングパッケージインストール
dnf --enablerepo=remi-modular-test install php
インストールできたか確認
php -v
PHPのバージョンが表示されたら、無事にインストールされました。

php設定
サーバーにphpがインストールされていることを告知しないようにする設定です。
必要なければ、パスしてください。
vim /etc/php.ini
expose_php = On
↓↓↓
expose_php = Off

php自動起動
phpを起動します。
systemctl start php-fpm
自動起動を設定します。
systemctl enable php-fpm

自動起動確認
systemctl is-enabled php-fpm
enabledと表示されたら、OKです。
Apacheも自動的にインストールされるはずです
httpd -v
Apacheのバージョンが表示されたら、インストールされています。

SSL接続用のmod_sslをインストール
Apacheでhttps機能を使用するために、mod_sslというモジュールをインストールします。
必要なければ、パスしてください。
yum -y install mod_ssl

Apache自動起動
Apacheを起動します。
systemctl start httpd
自動起動を設定します。
systemctl enable httpd
確認。
systemctl is-enabled httpd

Apacheの設定変更
WordPressを使う場合、AllowOverrideを有効化する必要があります。
vi /etc/httpd/conf/httpd.conf
viが起動して、ファイルが表示されたら、コマンドモードで「:set number
」と入力し行数を表示させます。
106行 AllowOverride None を AllowOverride All
128行 AllowOverride None を AllowOverride All
154行 AllowOverride None を AllowOverride All
もしかしたら、106行目、128行目は変更しなくてもいいかもしれません。

Apacheを再起動します。
systemctl restart httpd
MariaDBインストール
MariaDBのパッケージ確認
dnf list maria*

必要なパッケージ内容確認
dnf info mariadb-server mariadb mariadb-devel

必要なパッケージをインストール
dnf install -y mariadb-server mariadb mariadb-devel
-yと書いたので、途中でyと入力する必要はありません。

インストール後の確認
dnf list installed | grep mariadb
下図のように表示されたら、OKです。

Mariadb起動・確認
systemctl start mariadb
エラーが出力されなかったら、正常に起動しています。
ステータスでも確認します。
systemctl status mariadb
緑色でactiveとなっていれば起動しています。

MariaDB自動起動
自動起動するように設定します。
systemctl enable mariadb
自動起動の設定確認。
systemctl is-enabled mariadb
enabledと表示されたら、正常です。

データベースのセキュリティ対策
下記のコマンドを実行します。
mysql_secure_installation
設定ウィザードが起動します。

データベースにパスワードを設定しているかどうか聞いてきます。
Enterキーを押して次に。

パスワードを設定するか聞かれます。
yと入力。
パスワードを入力します。
確認用パスワードを入力します。
MariaDBにディフォルトで設定されている匿名ユーザーを削除するか聞かれます。yを入力します。

リモート環境からDBの管理者ユーザーでログインを無効化するか聞いてきます。
yを入力して無効化します。

testデータベースの接続権限を削除するか聞いてきます。
yで削除します。

直ぐに反映するか聞いてきます。
yを入力してすぐに反映させます。

設定完了です。
MariaDBの文字コード変更
vim /etc/my.cnf.d/mariadb-server.cnf

設定ファイルの[mariadb]
ディレクティブにcharacter-set-server=utf8mb4
パラメータを追加します。[client-mariadb]
ディレクティブを追加しdefault-character-set = utf8mb4
パラメーターを追加します。

上書き保存をしたら、MariaDBをリスタートさせます。
systemctl restart mariadb
エラーが出力されなければ、正常です。
ステータスを確認します。
systemctl status mariadb

データベースの作成と削除
MariaDBへ接続
mysql -u root -p
パスワードを聞かれますので、設定したデータベースのパスワードを入力します。

データベース全体の文字コードを確認します。
show variables like "chara%";
下図のようにutf8mb4となっていれば、正常です。

大文字小文字もチェックします。
show variables where variable_name='lower_case_table_names';
Valueのところが0なら、大文字と小文字を区別する設定になっています。
区別する設定にしましょう。

データベース作成
wordpressという名称のデータベースを作成します。
create database wordpress;

データベース名を表示
show databases;
データベースが表示されます。

データベースに接続
use wordpress;
接続しているデータベースが切り替わり、プロンプトが「none」から「wordpress」に変わります。

wordpressというデータベースの文字コードを確認
show variables like "chara%";
wordpressというデータベースの文字コードが表示されます。

データベース削除
データベースはdrop databese データベース名で削除できます。
drop database wordpress;

データベースが削除されると「Query OK」と応答があります。
また、「wordpress」だったプロンプトが「none」へ戻ります。
確認のためデータベースの一覧を表示させましょう。
show databases;

wordpressというデータベースが削除できたことがわかります。
MariaDB接続解除
quit

MariaDBから抜け出し、元の状態に戻りました。
https接続用自己署名のサーバー証明書
Apacheでhttps機能を使用するために、mod_sslというモジュールをインストールする必要があります。詳細
また、自己証明書なので、「警告」が表示されます。
必要なければ、パスしてください。
秘密鍵を作成。
openssl ecparam -name prime256v1 -genkey -out server.key

CSR(証明書署名要求)の作成。
openssl req -new -key server.key > server.csr
入力は2か所だけ。
Country NameのところにJP
Common Nameのところに、名前かサーバーのホスト名(例:www.example.com)
他は空エンターです。

自己署名のサーバー証明書を作成します。(有効期限10年)
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

秘密鍵とサーバー証明書を適切な場所に移動。
mv -i server.key /etc/pki/tls/private/
mv -i server.crt /etc/pki/tls/certs/
パーミッションを変更。
chmod 600 /etc/pki/tls/private/server.key
chmod 600 /etc/pki/tls/certs/server.crt

CSRを削除。
rm server.csr
削除しますか?と聞かれるのでyと入力します。

このような感じで接続できます。

これで、LAMP環境が整ったので、WordPressをローカルで開発できまっせ~~~。
WordPressなら、php-mysqliのインストールも必要
WordPressの場合、 MySQL/MariaDBのデータベースに接続するMySQLiのインストールが必要です。
dnf -y install php-mysqli

Apacheを再起動します。
systemctl restart httpd
お疲れさまでした。
WordPressをインストールする際は、GDライブラリが必要
もし、WordPressを使う場合、GDライブラリが必要になります。
下記の記事を参考にインストールしてください。
FTP接続をしたい場合は、次の記事にお進みください
WordPressのインストールは、次の記事にお進みください
参考サイト
ありがとうございます!







