概要
前回の記事LAMP 環境構築 PHP 7 MySQL 5.7(前編) の続き。
前回ApacheのVirtualHostの設定まで完了していたかと思うが、今回はMySQL、PHPのインストールを行っていく。
環境
LAMP 環境構築 PHP 7 MySQL 5.7(前編)と同じ。
MySQLのインストール
MySQL公式のyumリポジトリの追加
rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
リポジトリ追加後にyum update
yum update
※私が試した時はこのyum updateによってmariadb-libsが削除された。
インストールを実行
yum install mysql-community-server
初回起動を行う
systemctl start mysqld.service
どうやらMySQL5.7からは初期パスワードが勝手に設定されるように仕様が変更された模様。
初期パスワードは以下の方法で確認出来る。
[vagrant@localhost ~]$ sudo cat /var/log/mysqld.log | grep 'temporary password'
2016-07-19T05:13:27.092395Z 1 [Note] A temporary password is generated for root@localhost: Y5q&Vz3Iawet
この"Y5q&Vz3Iawet"が今回設定された初期パスワードとなる。
↓初回のセキュリティ設定を行う
mysql_secure_installation
ここからは対話式のインターフェースになる。
詳しくはこちらの記事等を参照。
基本新しいパスワードを入力して後は全部、Y + Enterで良い。
ちなみに初期設定だとパスワードポリシーが「英数字記号混在の8文字以上」となっている。
このパスワードポリシーは後で変更する事が可能。
設定ファイルの編集
viで設定ファイルを開く。
vi /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8mb4
skip-character-set-client-handshake
default-storage-engine=innodb
collation-server=utf8mb4_general_ci
innodb_file_per_table=1
default-storage-engine=InnoDB
default_password_lifetime = 0
[mysql]
auto-rehash
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
このあたりの設定は状況に応じて設定して欲しい。
私見だが開発に利用するだけならこの設定で十分だと感じる。
文字コードをutf8mb4に設定、auto-rehash(tabキーでのテーブル名等の補完の有効化)等を行ってある。
MySQL5.7から設定しておくべきパラメータとしてdefault_password_lifetimeがある。
デフォルト設定だと365日(もしかしたら違っているかも)でパスワードを強制変更するようにMySQL側から求められるようになっている。
つまりパスワードに有効期限が設定されるようになったという事。
セキュリティが強化されたと言えばそうだが、これだと本番運用時に突然サービスが止まってしまう事になるので非常に困る。
よってdefault_password_lifetimeを0に設定する事でパスワードの有効期限を無制限にする。
※5.7.11からはデフォルトで0に設定が変更されたようなのでこの設定は不要かもしれない(未確認)
設定を反映させる為、MySQLを再起動させる
systemctl restart mysqld.service
ついでにサービスの自動起動設定も行っておく↓
systemctl enable mysqld.service
↓自動起動設定の確認
[root@ip-172-31-29-90 centos]# systemctl list-unit-files -t service | grep mysqld
mysqld.service enabled
mysqld@.service disabled
念の為、文字コードの設定が反映されているか確認する
↓MySQLにログインを行う
mysql -u root -p
↓以下のSQLを実行し下記のように表示されれば設定の反映が正常に行われている。
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
PHPのインストール
yumでインストールを行う為には2つのyumリポジトリを追加する必要がある。
EPELリポジトリ追加
yum install epel-release
Remiリポジトリを追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHPのインストール
yum install --enablerepo=remi,remi-php70 php php-devel php-opcache php-mbstring php-mcrypt php-pdo php-gd php-mysqlnd php-pecl-xdebug php-fpm php-xml
php.iniの設定
こちら等を参考に設定ファイルの修正を行っておく。
私はこちらのように設定した。
開発用途であれば最低限、date.timezone = "Asia/Tokyo"とmbstring.language = Japaneseあたりを設定しておけばよい。
Apacheの再起動
systemctl restart httpd.service
PHPのインストール確認
php -v
以下のように表示されればインストールが正常に出来ている。
PHP 7.0.8 (cli) (built: Jun 22 2016 11:57:34) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
ブラウザでの表示確認
前回の記事の通りに進めていれば、VirtualHostのドキュメントルートが/home/vagrant/wordpressになっているハズ。
そこでドキュメントルートにindex.phpを以下の内容で追加する。
<?php
phpinfo();
※前回の記事の通りに進めているとここにはindex.htmlが残っているハズ、このままだと、https://domainname.com にアクセスした際にindex.htmlが優先して読み込まれてしまうので、index.htmlの名前を変えておく。
mv index.html index.html.org
ブラウザで下記のURLにアクセスする。
https://domainname.com/
すると下記のようにPHPの設定がブラウザ上に表示される。
おまけ
ここまでの環境構築をAnsibleとVagrantを使って自動化しておいた。
前回の記事と本投稿の内容で説明した環境が構築可能となっている。
使い方に関しては、VagrantfileのREADMEを参照して欲しい。