ApacheCentOS 7WordPress LAMPMySQL自宅サーバ

最新のローカル LAMP 環境で WordPress を構築する〜MySQL 設置編|CentOS 7

wordpress-mysql-logo Apache
スポンサーリンク

『MySQL 8.0.6 設置』編

MySQL8 への移行を行い、最新の LAMP環境 が整った上で WordPress5.2.2 を設置します。

※ 2019/10/15 追記
WordPress 5.2.4 でも正常動作します。

「最新のローカル LAMP 環境で WordPress を構築する」は、4編に分けてあります。他の記事は ▼ をご参照ください。

MySQL 5.x から MySQL 8.x への移行の失敗例

yum upgrade mysql-community-server で失敗

libsasl2.so.2 のライブラリが見つからなくてエラーが発生

[root@ centos7〜]# sudo yum upgrade mysql-community-server
Error:Package:mysql-community-server-8.0.16-2.el6.x86_64(mysql80-community)
           Requires:libsasl2.so.2()(64bit)
 You could try using--skip-broken to work around the problem
 You could try running:rpm-Va--nofiles--nodigest

ソフトリンクをかけても解決されない

[root@ centos7〜]# ln -s /lib64/libsasl2.so.3.0.0/lib64/libsasl2.so.2
[root@ centos7〜]# yum clean all  # << エラー発生時のキャッシュされたのを除去

OS の Reboot 後、再度試しても失敗!

[root@ centos7〜]#sudo yum upgrade mysql-community-server

DataFile をまるごとバックアップ

[root@centos7 ~]# cp -aR /var/lib/mysql/ /var/lib/mysql_bk/

既存の MySQL パッケージを削除

#インストールされたパッケージを確認
[root@centos7 ~]# yum list installed | cut -d " " -f 1  | grep mysql

#不要なパッケージを削除します。
[root@centos7 ~]# yum remove -y `yum list installed | cut -d " " -f 1 | grep mysql`

MySQL リポジトリを追加

最新版 を確認してリポジトリに追加します。(2019/06/19現在)

[root@centos7 ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

MySQL 8.0.16 を設置

yum -y install mysql-community-devel
yum -y install mysql-community-server

デフォルト認証プラグインを変更

MySQL8.0 から デフォルトの認証プラグインmysql_native_password ⇒ caching_sha2_password に変更されました。
WordPress 5.2.2 バージョンで caching_sha2_password をサポートしていないため、デフォルトの認証プラグインを mysql_native_password に変更しておきます。

注意!
万一、変更の前に WordPress ユーザーを作成した場合、caching_sha2_password 認証プラグインが適用されてしまいます。DB に接続して SQL 文で mysql_native_password に変更しない限り、ログインが出来なくなります。出来れば、下記の設定を変更してからユーザーを追加してください。

[root@centos7 ~]# vi /etc/my.cnf

#default-authentication-plugin=mysql_native_password
↓↓↓
default-authentication-plugin=mysql_native_password

MySQL 8.0 を起動して、サービス自動起動を有効にします。

systemctl start mysqld
systemctl enable mysqld

設置直後の初期設定

初期パスワードの変更

Root ユーザ初期パスワードはそのまま使えないため、下記のように変更してください。
MySQL を初めてインストールした場合のみ実行します。
以下のコマンドで初期パスワードを確認します。

grep password /var/log/mysqld.log

初期パスワードを確認したら、mysql_secure_installation を実行してパスワードを変更します。

[root@centos7 ~]# mysql_secure_installation

Securing the MySQL server deployment.
Enter password for user root:     #   << 初期パスワードを入力
The existing password for the user account root has expired. Please set a new password.
New password:      #   << 新しいパスワード
Re-enter new password:       #   << 再入力

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y     #   << VALIDATE PASSWORD を有効に
There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0    #   << パスワードの強度を指定
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y        #   << root パスワードの変更

New password:       #   << 上記で設定した password validation policy に合わせて入力

Re-enter new password:        #   << 再入力

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y       #   << 追加設定
By default, a MySQL installation has an anonymous user, a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y         #   << anonymous ユーザーを削除
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y     #   << リモートからのrootユーザーのログイン禁止
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y    #   << テストDB削除

Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y       #  <<   privilege tableをリロードして変更内容を適用する

Success.

All done!

インストールされた MySQL のバージョンをチェックします。

[root@centos7 ~]# mysql --version
mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

以上、MySQL の設置が完了しました。
これからは Apache httpd 2.4MySQLログローテーション の設定をしておきます。

ログローテーション(logrotate.d)設定

Apache httpd 2.4.39 のログローテーション(logrotate.d)を設定

[root@centos7 ~]# vi /etc/logrotate.d/httpd24

/usr/local/apache2/logs/*log {
daily
missingok
dateext
rotate 60
create 644 daemon daemon
sharedscripts
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}

確認!

[root@centos7 ~]# logrotate -dv /etc/logrotate.d/httpd24
reading config file /etc/logrotate.d/httpd24
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /usr/local/apache2/logs/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/apache2/logs/access_log
...

MySQL 8.0.16 のログローテーション(logrotate.d)を設定

[root@centos7 ~]# vi /etc/logrotate.d/mysql80

/var/log/mysqld.log {
create 644 mysql mysql
notifempty
weekly
rotate 5
missingok
postrotate
if test -x /usr/bin/mysqladmin &&
/usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf ping &>/dev/null
then
/usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs
fi
endscript
}

確認!

[root@centos7 ~]# logrotate -dv /etc/logrotate.d/mysql80
reading config file /etc/logrotate.d/mysql80
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/mysqld.log weekly (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysqld.log
log does not need rotating (log has been rotated at 2019-5-26 8:0, that is not week ago yet)

MySQL の Root ユーザのパスワードファイルを作成しておきます。

[root@centos7 ~]# vi /root/.my.cnf

[mysqladmin]
user=root
password="your-password-here"

パーミッションを Root 自分に変更しておきます。

chown root:root /root/.my.cnf
chmod 600 /root/.my.cnf

LAMP 関連パッケージのサービス自動起動設定を確認

httpd、httpd2、mysql、php-fpm

[root@centos7 ~]# systemctl list-unit-files | grep -e httpd -e php-fpm -e mysqld.service
httpd.service enabled
httpd2.service enabled
mysqld.service enabled
php-fpm.service enabled

[root@centos7 ~]# systemctl disable httpd

以上、最新の LAMP 環境が整いました。
次回WordPress 5.2.2 をインストールおよび設定を行います。

スポンサーリンク

コメント

タイトルとURLをコピーしました