CentOS7にApache2.4、PHP7、MySQL5.7をインストールしてLAMP環境を構築する手順をまとめています。特にWordPressを使用する場合はPHP5とPHP7で大違いです。WordPress用のLAMP環境を構築する場合は参考にしていただければと思います。
目次
1. Apache2.4のインストール
Apache2.4をインストールしていきます。
インストール
CentOS7では、デフォルトでyumを使用すると、Apache2.4がインストールされます。
# yum -y install httpd
インストールされているかの確認は以下で行えます。
# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: May 12 2016 10:27:23
httpd サービスの自動起動設定
httpdのサービスの自動起動設定を行います。
# systemctl enable httpd
httpd サービスを開始
httpdサービスを開始します。
# systemctl restart httpd
2. iptablesの設定
外からアクセスできるようにhttpポートの穴あけを行います。
# firewall-cmd --add-service=http --permanent # firewall-cmd --reload
3. MySQL5.7のインストール
MySQL5.7をインストールしていきます。
競合が起きないようにmariaDB削除
競合が起きないようにmariaDB削除します。
# yum -y remove mariadb-libs # rm -Rf /var/lib/mysql/
yumのリポジトリを追加
CentOS7にMySQL5.7をyumでインストールするにはリポジトリの追加が必要です。
# yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
追加されたかの確認
MySQL5.7のリポジトリが追加されていることを確認します。
# yum list | grep mysql ・・・略・・・ mysql-community-server.x86_64 5.7.13-1.el7 @mysql57-community ・・・
インストール
mysql-community-serverをyumでインストールします。
# yum -y install mysql-community-server
インストールされたかの確認
MySQL5.7がインストールされていることを確認します。
# mysqld --version mysqld Ver 5.7.13 for Linux on x86_64 (MySQL Community Server (GPL))
サービスの自動起動設定
mysqldのサービスの自動起動の設定を行います。
# systemctl enable mysqld.service
MySQLの起動
mysqldのサービスを起動します。
# systemctl restart mysqld.service
初期パスワードを探す
初期パスワードがあり、ログより探す必要があります。
# grep password /var/log/mysqld.log 2016-07-06T02:58:35.498209Z 1 [Note] A temporary password is generated for root@localhost: <MySQL5.7の初期パスワード>
初期設定
以下のコマンドで初期設定を行います。パスワードはポリシーが厳しいので英数字記号を組み合わせて、判定にクリアするように入力する必要があります。
# /usr/bin/mysql_secure_installation
設定ファイル編集
パスワードの有効期限をOFF
デフォルトで1年後にパスワードの有効期限が切れる設定になっています。覚えてられなくて、アプリが1年後に動かなくなると怖いので、「default_password_lifetime=0」でoffにします。余談ですが、覚えやすいパスワードにする運用が始まるなど、パスワードを替えることもリスクになる場合があるので初めに厳しいパスワードにして厳重に監視するのもいいかもしれません。
設定ファイル編集例
ここでは以下のような設定を追加してみました。
# vi /etc/my.cnf [mysqld] : default_password_lifetime=0 character-set-server = utf8 max_allowed_packet=32m max_connections = 500 max_prepared_stmt_count=1000000 read_buffer_size = 256K read_rnd_buffer_size = 256K join_buffer_size = 256K sort_buffer_size = 256K query_cache_limit = 1M query_cache_size = 32M table_open_cache = 1024 table_definition_cache=500 thread_cache_size = 80 open_files_limit = 10000 binlog_cache_size = 2M tmp_table_size = 16M :
MySQL再起動
MySQLのサービスを再起動します。
# systemctl restart mysqld
接続確認
MySQLにmysqlクライアントを使用して接続確認を行います。
$ mysql -u root -p -e "SELECT Host,User FROM mysql.user;" Enter password: +-----------+-----------+ | Host | User | +-----------+-----------+ | localhost | mysql.sys | | localhost | root | +-----------+-----------+
4. PHP7のみを導入する場合
本記事内では「PHP7」を導入する方法と「PHP7+OPCache+APCu」を導入する方法を記載しています。PHP7よりもPHP7+OPCache+APCuの方が3倍くらい高速です。以下は、PHP7の方の導入方法です。
4.1. PHP7インストール
EPELリポジトリのインストール
# yum -y install epel-release
Remiリポジトリのインストール
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHP7のインストール
PHP7をインストールします。
# yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-mysql
確認
PHP7がインストールされているか確認します。
# 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
4.2. ApacheとPHPの設定
最低限以下の設定がないとPHP7がApacheで動きません。
#php <IfModule prefork.c> #LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so </IfModule>
その他、セキュリティ面などApacheとPHPの設定変更が必要です。
Apache2.4の再起動
# systemctl restart httpd.service
以上で完了です。適当なPHPファイルを置いて表示できるか確認できればOKです。
5. PHP7+OPCache+APCuを導入する場合
本記事内では「PHP7」を導入する方法と「PHP7+OPCache+APCu」を導入する方法を記載しています。以下は、PHP7+OPCache+APCuの導入方法です。
5.1. PHP7+OPCache+APCuインストール
EPELリポジトリのインストール
# yum -y install epel-release
Remiリポジトリのインストール
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHP7+OPCache+APCuなど関連モジュールのインストール
PHP7をインストールします。
# yum remove php* -y # yum --enablerepo=remi,remi-php70 install php php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y --skip-broken
確認
PHP7がインストールされているか確認します。
# 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
php-fpmの自動起動設定
# systemctl enable php-fpm
php-fpmの再起動
# systemctl restart php-fpm
5.2. Apacheとphp-fpmの設定
httpd.confまたはインクルードするconfファイルにて最低限以下の設定を行います。
#php <IfModule prefork.c> #LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so </IfModule>
ProxyPassMatch ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/<公開ディレクトリ例 /var/www/html>/$1 DirectoryIndex /index.php index.php
その他、セキュリティ面などApacheとPHPの設定変更が必要です。
Apache2.4の再起動
# systemctl restart httpd.service
php-fpmプロセスの確認
# ps -aef | grep php-fpm
以上で完了です。適当なPHPファイルを置いて表示できるか確認できればOKです。
ページが表示されない、パミッションエラーとなる場合
SELinuxの動作状況は getenforce コマンドを調べられます。
SELinux機能、アクセス制御が有効な場合は、「enforcing」と表示されます。
SELinuxを一時的に無効にする場合は以下のコマンドを実行します。
# setenforce 0
SELinuxを常に無効にする場合は、/etc/sysconfig/selinuxを修正します。
SELINUX=disabled
参考)RedisでPHP7+OPCache+APCu環境のWordPressよりも3倍以上高速化する方法
WordPressは、PHPの速度がサーバサイドの大半を占め、PHPの速度がものをいいます。PHP5をそのまま使うとかなり遅いです。PHP7+OPCache+APCuにするとかなり高速化されるのですが、Redisを使用することでさらに3倍以上も高速化されます。
※注意)本記事ですが、ページがキャッシュされるわけですので、キャッシュされてほしくないページがキャッシュされないか十分に検証が必要です。
更新履歴
更新履歴になります。
- 2016年08月02日 PHP7+OPCache+APCuの導入方法について追記しました。
- 2016年07月06日 ページを作成しました。