CentOS 7.7に、HTTP/2対応のLAMP環境(Linux,Apache,MariaDB,PHP)を構築します。Apache 2.4(event MPM) / MariaDB10 / PHP7.3(PHP-FPM) の最新バージョンを CentOSに yumでインストール、セキュリティと速度を向上させます。(2019/10/27作成)
TomaszProszek / Pixabay
0.環境
$ cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
1.Apacheインストール
1)httpd,iusレポジトリ用パッケージよりインストール
$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm $ sudo vi /etc/yum.repos.d/ius.repo enabled=0 <= [ius] 1から0に変更する
2)依存関係のあるパッケージの追加
$ sudo yum install openldap-devel expat-devel libdb-devel mailcap system-logos
3)libnghttpインストール
$ sudo yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libnghttp2-1.31.1-2.el7.x86_64.rpm
4)yumコマンドによるhttpdのインストール
$ sudo yum install --disablerepo=base,extras,updates --enablerepo=epel,ius httpd httpd-devel mod_ssl
$ yum list installed | grep httpd httpd24u.x86_64 2.4.41-1.el7.ius @ius httpd24u-devel.x86_64 2.4.41-1.el7.ius @ius httpd24u-filesystem.noarch 2.4.41-1.el7.ius @ius httpd24u-mod_ssl.x86_64 1:2.4.41-1.el7.ius @ius httpd24u-tools.x86_64 2.4.41-1.el7.ius @ius
5)バージョン確認
$ httpd -V | head -n 1 Server version: Apache/2.4.41 (IUS)
2.PHPインストール
1)EPEL リポジトリのインストール手順
※EPELは既にインストール済みの場合は不要
$ sudo yum install epel-release または $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2)Remi リポジトリのインストール手順
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm $ rpm -qa | grep remi-release remi-release-7.6-2.el7.remi.noarch $ yum info --enablerepo=remi php73
3)mcrypt系の依存パッケージを解決する
$ sudo yum install --enablerepo=epel,remi,remi-php73 libmcrypt libmcrypt-devel
4)PHP7.3をインストール
$ sudo yum install --enablerepo=epel,remi,remi-php73 php php-fpm php-devel php-mbstring php-pdo php-gd php-xml php-pecl-mcrypt php-opcache php-pecl-apcu php-mysqlnd php-cli
4)バージョン確認
$ php -v | head -n 1 PHP 7.3.10 (cli) (built: Sep 24 2019 09:20:18) ( NTS )
3.MariaDBインストール
1)リポジトリインストール
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash バージョン指定したい場合は以下 $ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=mariadb-10.0 その他のオプションは下記URLに記述あり https://mariadb.com/kb/en/the-mariadb-library/mariadb-package-repository-setup-and-usage/
2)インストール
$ sudo yum install MariaDB-server MariaDB-client
3)バージョン確認
$ mysql --version mysql Ver 15.1 Distrib 10.4.8-MariaDB, for Linux (x86_64) using readline 5.1
4)サービス開始と自動起動設定
$ sudo systemctl start mariadb $ sudo systemctl enable mariadb $ sudo systemctl is-enabled mariadb enabled
5)初期設定
$ sudo mysql_secure_installation Enter current password for root (enter for none): enter Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y Thanks for using MariaDB!
$ sudo vi /etc/my.cnf.d/server.cnf [mariadb] character-set-server = utf8mb4 $ sudo vi /etc/my.cnf.d//mysql-clients.cnf [mysql] default-character-set = utf8mb4 ◆mariadbメモ チューニング例(1) 4GB割り当て innodb_buffer_pool_size = 2G innodb_log_file_size = 512M read_buffer_size = 8M チューニング例(2) 2GB割り当て innodb_buffer_pool_size = 1G innodb_log_file_size = 256M read_buffer_size = 4M チューニング例(3) 1GB割り当て innodb_buffer_pool_size = 512M innodb_log_file_size = 128M read_buffer_size = 2M チューニング例(4) 512MB割り当て innodb_buffer_pool_size = 256M innodb_log_file_size = 64M read_buffer_size = 1M
4.Apache2.4(event MPM)設定
1)Apache2.4+PHP-FPMの「httpd.conf」
$ sudo vi /etc/httpd/conf.modules.d/00-mpm.conf #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so # コメントアウト LoadModule mpm_event_module modules/mod_mpm_event.so # 有効にする # Event <IfModule mpm_event_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 1000 ServerTokens ProductOnly ServerSignature Off KeepAlive On KeepAliveTimeout 15 MaxKeepAliveRequests 1000 # Apacheで PHP-FPMを動かすなら ProxyPassMatchではなく SetHandlerを使う <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" </FilesMatch> # Unixソケットを使っている場合は以下 #<FilesMatch \.php$> # SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" #</FilesMatch> </Ifmodule>
2)phpモジュール読み込みの無効化
$ sudo vi /etc/httpd/conf.modules.d/15-php.conf ## 以下コメントアウトする ## Cannot load both php5 and php7 modules #<IfModule !mod_php5.c> # <IfModule prefork.c> # LoadModule php7_module modules/libphp7.so # </IfModule> #</IfModule> # # #<IfModule !mod_php5.c> # <IfModule !prefork.c> # LoadModule php7_module modules/libphp7-zts.so # </IfModule> #</IfModule> 3)Apache2.4+PHP-FPMのhttpd.conf $ sudo vi /etc/php-fpm.d/www.conf # TCP listen = 127.0.0.1:9000 ↓↓ # UNIXドメインソケット listen = /var/run/php-fpm/php-fpm.sock #php-fpmオーナー設定 ;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660 ↓↓ listen.owner = apache listen.group = apache listen.mode = 0660 4)php-fpm起動・自動起動 $ sudo systemctl start php-fpm $ sudo systemctl enable php-fpm $ sudo systemctl is-enabled php-fpm enabled
5)httpd再起動・自動起動
$ sudo systemctl restart httpd $ sudo systemctl enable httpd $ sudo systemctl is-enabled httpd enabled
以上