6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LAMP 環境構築 PHP 7 MySQL 5.7(後編)

Posted at

概要

前回の記事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
/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を以下の内容で追加する。

/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の設定がブラウザ上に表示される。

phpinfo.png

おまけ

ここまでの環境構築をAnsibleとVagrantを使って自動化しておいた。

前回の記事と本投稿の内容で説明した環境が構築可能となっている。

使い方に関しては、VagrantfileのREADMEを参照して欲しい。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?