CentOS8.0のPHP7.2をインストールする手順を【コマンド付き】で丁寧に解説
CentOSにLAMP環境を構築したいけれど、詳しい手順が分からない、と悩んでいませんか?
前回の記事で、CentOS8.0にApache2.4.37をインストールして、バーチャルホストでのテストページ表示までができたので、
CentOS8にWEBアプリケーションサーバの「PHP」(今回はPHP7.2)をインストールして、
テスト用ページが表示できるようにするまでの手順を、コマンド付きで丁寧に紹介します。
あと、後半では、インフラエンジニアになるためにおすすめの勉強法があれば知りたい、と考えているかたへのおススメ勉強法も書きます。
CentOS8にPHPをインストールする手順を解説します。
本記事の手順を真似しながら進めれば、1時間弱くらいで簡単にできます
本記事では、下記の内容を解説します。
- CentOS8にPHP7.2 をインストールする手順
- PHPインストール後の設定手順
- インフラエンジニアになるためのおススメの勉強法の紹介
この記事を書いている私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、
プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いていますので、記事の信頼性担保に繋がると思います。
前回の記事
souiunogaii.hatenablog.comsouiunogaii.hatenablog.com
インストールする環境の確認
cat /etc/redhat-release
[root@SV-NEPTUNE ~]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
httpd -V | head -n 1
[root@SV-NEPTUNE ~]# httpd -V | head -n 1 Server version: Apache/2.4.37 (centos)
インストール前のパッケージ確認
dnf serch php
[root@SV-NEPTUNE ~]# dnf serch php ============================ 概要 & 名前 一致: php ============================= php.x86_64 : PHP scripting language for creating dynamic web sites php-common.x86_64 : Common files for PHP php-fpm.x86_64 : PHP FastCGI Process Manager php-dbg.x86_64 : The interactive PHP debugger php-cli.x86_64 : Command-line interface for PHP php-pgsql.x86_64 : A PostgreSQL database module for PHP php-devel.x86_64 : Files needed for building PHP extensions php-xml.x86_64 : A module for PHP applications which use XML php-ldap.x86_64 : A module for PHP applications that use LDAP php-json.x86_64 : JavaScript Object Notation extension for PHP php-embedded.x86_64 : PHP library for embedding in applications php-enchant.x86_64 : Enchant spelling extension for PHP applications php-pear.noarch : PHP Extension and Application Repository framework php-intl.x86_64 : Internationalization extension for PHP applications php-odbc.x86_64 : A module for PHP applications that use ODBC databases php-dba.x86_64 : A database abstraction layer module for PHP applications php-pdo.x86_64 : A database access abstraction module for PHP applications php-soap.x86_64 : A module for PHP applications that use the SOAP protocol php-gmp.x86_64 : A module for PHP applications for using the GNU MP library php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases php-process.x86_64 : Modules for PHP script using system process interfaces php-bcmath.x86_64 : A module for PHP applications for using the bcmath library php-recode.x86_64 : A module for PHP applications for using the recode library php-gd.x86_64 : A module for PHP applications for using the gd graphics library php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol php-mbstring.x86_64 : A module for PHP applications which need multi-byte string : handling ================================ 名前 一致: php ================================ php-opcache.x86_64 : The Zend OPcache php-pecl-zip.x86_64 : A ZIP archive management extension php-pecl-apcu.x86_64 : APC User Cache php-pecl-apcu-devel.x86_64 : APCu developer files (header)
今回インストールするパッケージは8個
それぞれのパッケージ情報の確認
dnf info php php-xml php-xmlrpc php-json php-mbstring php-gdd php-pdo php-mysqlnd
[root@SV-NEPTUNE ~]# dnf info php php-xml php-xmlrpc php-json php-mbstring php-gdd php-pdo php-mysqlnd 利用可能なパッケージ 名前 : php バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 1.5 M ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : PHP scripting language for creating dynamic web sites URL : http://www.php.net/ ライセンス : PHP and Zend and BSD and MIT and ASL 1.0 説明 : PHP is an HTML-embedded scripting language. PHP attempts to make : it easy for developers to write dynamically generated web pages. : PHP also offers built-in database integration for several : commercial and non-commercial database management systems, so : writing a database-enabled webpage with PHP is fairly simple. The : most common use of PHP coding is probably as a replacement for : CGI scripts. : : The php package contains the module (often referred to as : mod_php) which adds support for the PHP language to Apache HTTP : Server. 名前 : php-gd バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 83 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A module for PHP applications for using the gd graphics library URL : http://www.php.net/ ライセンス : PHP 説明 : The php-gd package contains a dynamic shared object that will add : support for using the gd graphics library to PHP. 名前 : php-json バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 73 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : JavaScript Object Notation extension for PHP URL : http://www.php.net/ ライセンス : PHP 説明 : The php-json package provides an extension that will add : support for JavaScript Object Notation (JSON) to PHP. 名前 : php-mbstring バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 580 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A module for PHP applications which need multi-byte string : handling URL : http://www.php.net/ ライセンス : PHP and LGPLv2 and OpenLDAP 説明 : The php-mbstring package contains a dynamic shared object that : will add support for multi-byte string handling to PHP. 名前 : php-mysqlnd バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 190 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A module for PHP applications that use MySQL databases URL : http://www.php.net/ ライセンス : PHP 説明 : The php-mysqlnd package contains a dynamic shared object that : will add MySQL database support to PHP. MySQL is an : object-relational database management system. PHP is an : HTML-embeddable scripting language. If you need MySQL support for : PHP applications, you will need to install this package and the : php package. : : This package use the MySQL Native Driver 名前 : php-pdo バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 122 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A database access abstraction module for PHP applications URL : http://www.php.net/ ライセンス : PHP 説明 : The php-pdo package contains a dynamic shared object that will : add a database access abstraction layer to PHP. This module : provides a common interface for accessing MySQL, PostgreSQL or : other databases. 名前 : php-xml バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 188 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A module for PHP applications which use XML URL : http://www.php.net/ ライセンス : PHP 説明 : The php-xml package contains dynamic shared objects which add : support to PHP for manipulating XML documents using the DOM tree, : and performing XSL transformations on XML documents. 名前 : php-xmlrpc バージョン : 7.2.11 リリース : 1.module_el8.0.0+56+d1ca79aa アーキテクチ : x86_64 サイズ : 89 k ソース : php-7.2.11-1.module_el8.0.0+56+d1ca79aa.src.rpm Repo : AppStream 概要 : A module for PHP applications which use the XML-RPC protocol URL : http://www.php.net/ ライセンス : PHP and BSD 説明 : The php-xmlrpc package contains a dynamic shared object that will : add support for the XML-RPC protocol to PHP.
PHPパッケージ8個のインストール
dnf install php php-xml php-xmlrpc php-json php-mbstring phpp-gd php-pdo php-mysqlnd
[root@SV-NEPTUNE ~]# dnf install php php-xml php-xmlrpc php-json php-mbstring phpp-gd php-pdo php-mysqlnd CentOS-8 - AppStream 1.9 kB/s | 4.3 kB 00:02 CentOS-8 - Base 1.8 kB/s | 3.9 kB 00:02 CentOS-8 - Extras 701 B/s | 1.5 kB 00:02 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ Installing: php x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 1.5 M php-gd x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 83 k php-json x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 73 k php-mbstring x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 580 k php-mysqlnd x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 190 k php-pdo x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 122 k php-xml x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 188 k php-xmlrpc x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 89 k 依存関係をインストール中: nginx-filesystem noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 24 k php-cli x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 3.1 M php-common x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 653 k 弱い依存関係をインストール中: php-fpm x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa AppStream 1.6 M Enabling module streams: nginx 1.14 php 7.2 トランザクションの概要 ================================================================================ インストール 12 パッケージ ダウンロードサイズの合計: 8.2 M インストール済みのサイズ: 29 M これでよろしいですか? [y/N]: y
パッケージのダウンロード中です: (中略) インストール済み: php-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-gd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-json-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-mbstring-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-mysqlnd-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-pdo-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-xml-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-xmlrpc-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-fpm-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch php-cli-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 php-common-7.2.11-1.module_el8.0.0+56+d1ca79aa.x86_64 完了しました!
インストール後のパッケージ確認
dnf list installed | grep php
[root@SV-NEPTUNE ~]# dnf list installed | grep php php.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-cli.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-common.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-fpm.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-gd.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-json.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-mbstring.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-mysqlnd.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-pdo.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-xml.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream php-xmlrpc.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
動作確認
php -v
[root@SV-NEPTUNE ~]# php -v PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
CGI動作用のパッケージ「php-fpm」の設定
次に、PHPをCGIとして動かすために必要なパッケージ「php-fpm」の設定をしていきます。
インストールされている「php-fpm」パッケージの確認
dnf list installded | grep php-fpm
[root@SV-NEPTUNE ~]# dnf list installded | grep php-fpm php-fpm.x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa @AppStream
「/etc/php-fpm.d/」配下の設定ファイル「www.conf」の編集
編集前のファイルのバックアップ
cd /etc/php-fpm.d/ cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.originnal_bk
[root@SV-NEPTUNE ~]# cd /etc/php-fpm.d/ [root@SV-NEPTUNE ~]# cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.originnal_bk [root@SV-NEPTUNE php-fpm.d]# ls -l 合計 40 -rw-r--r-- 1 root root 19415 6月 26 2019 www.conf -rw-r--r-- 1 root root 19415 6月 26 2019 www.conf.original_bk
「www.conf」ファイルの編集
vi /etc/php-fpm.d/www.conf
[root@SV-NEPTUNE php-fpm.d]# vi /etc/php-fpm.d/www.conf
左が編集後、右が編集前
00020 |; Unix user/group of processes ||00020 |; Unix user/group of processes 00021 |; Note: The user is mandatory. If the group is not||00021 |; Note: The user is mandatory. If the group is not 00022 |; will be used. ||00022 |; will be used. 00023 |; RPM: apache user chosen to provide access to the||00023 |; RPM: apache user chosen to provide access to the 00024 L|user = www ||00024 R|user = apache 00025 |; RPM: Keep a group allowed to write in log dir. ||00025 |; RPM: Keep a group allowed to write in log dir. 00026 L|group = www ||00026 R|group = apache
00044 |; Set permissions for unix socket, if one is used.||00044 |; Set permissions for unix socket, if one is used. 00045 |; permissions must be set in order to allow connec||00045 |; permissions must be set in order to allow connec 00046 |; Default Values: user and group are set as the ru||00046 |; Default Values: user and group are set as the ru 00047 |; mode is set to 0660 ||00047 |; mode is set to 0660 00048 L|listen.owner = www ||00048 R|;listen.owner = nobody 00049 L|listen.group = www ||00049 R|;listen.group = nobody 00050 L|listen.mode = 0666 ||00050 R|;listen.mode = 0660
00106 |; The number of child processes to be created when||00106 |; The number of child processes to be created when 00107 |; maximum number of child processes when pm is set||00107 |; maximum number of child processes when pm is set 00108 |; This value sets the limit on the number of simul||00108 |; This value sets the limit on the number of simul 00109 |; served. Equivalent to the ApacheMaxClients direc||00109 |; served. Equivalent to the ApacheMaxClients direc 00110 |; Equivalent to the PHP_FCGI_CHILDREN environment ||00110 |; Equivalent to the PHP_FCGI_CHILDREN environment 00111 |; CGI. The below defaults are based on a server wi||00111 |; CGI. The below defaults are based on a server wi 00112 |; forget to tweak pm.* to fit your needs. ||00112 |; forget to tweak pm.* to fit your needs. 00113 |; Note: Used when pm is set to 'static', 'dynamic'||00113 |; Note: Used when pm is set to 'static', 'dynamic' 00114 |; Note: This value is mandatory. ||00114 |; Note: This value is mandatory. 00115 L|;pm.max_children = 50 ||00115 R|pm.max_children = 50 00116 L|pm.max_children = 25 || |
00118 |; The number of child processes created on startup||00117 |; The number of child processes created on startup 00119 |; Note: Used only when pm is set to 'dynamic' ||00118 |; Note: Used only when pm is set to 'dynamic' 00120 |; Default Value: min_spare_servers + (max_spare_se||00119 |; Default Value: min_spare_servers + (max_spare_se 00121 L|;pm.start_servers = 5 ||00120 R|pm.start_servers = 5 00122 L|pm.start_servers = 10 || |
00124 |; The desired minimum number of idle server proces||00122 |; The desired minimum number of idle server proces 00125 |; Note: Used only when pm is set to 'dynamic' ||00123 |; Note: Used only when pm is set to 'dynamic' 00126 |; Note: Mandatory when pm is set to 'dynamic' ||00124 |; Note: Mandatory when pm is set to 'dynamic' 00127 L|;pm.min_spare_servers = 5 ||00125 R|pm.min_spare_servers = 5 00128 L|pm.min_spare_servers = 10 || |
00130 |; The desired maximum number of idle server proces||00127 |; The desired maximum number of idle server proces 00131 |; Note: Used only when pm is set to 'dynamic' ||00128 |; Note: Used only when pm is set to 'dynamic' 00132 |; Note: Mandatory when pm is set to 'dynamic' ||00129 |; Note: Mandatory when pm is set to 'dynamic' 00133 L|;pm.max_spare_servers = 35 ||00130 R|pm.max_spare_servers = 35 00134 L|pm.max_spare_servers = 20 || |
00141 |; The number of requests each child process should||00137 |; The number of requests each child process should 00142 |; This can be useful to work around memory leaks i||00138 |; This can be useful to work around memory leaks i 00143 |; endless request processing specify '0'. Equivale||00139 |; endless request processing specify '0'. Equivale 00144 |; Default Value: 0 ||00140 |; Default Value: 0 00145 |;pm.max_requests = 500 ||00141 |;pm.max_requests = 500 00146 L|pm.max_requests = 500 || |
php-fpmの起動とステータス確認
起動
systemctl start php-fmpm
[root@SV-NEPTUNE php-fpm.d]# systemctl start php-fmpm
ステータス確認
systemctl status php-fpm
[root@SV-NEPTUNE php-fpm.d]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor pr> Active: active (running) since Sun 2020-01-05 02:30:42 JST; 10s ago Main PID: 20714 (php-fpm) Status: "Processes active: 0, idle: 10, Requests: 0, slow: 0, Traffic: 0req/> Tasks: 11 (limit: 11141) Memory: 35.1M CGroup: /system.slice/php-fpm.service tq20714 php-fpm: master process (/etc/php-fpm.conf) tq20715 php-fpm: pool www tq20716 php-fpm: pool www tq20717 php-fpm: pool www tq20718 php-fpm: pool www tq20719 php-fpm: pool www tq20720 php-fpm: pool www tq20721 php-fpm: pool www tq20722 php-fpm: pool www tq20723 php-fpm: pool www mq20724 php-fpm: pool www 1月 05 02:30:41 SV-NEPTUNE systemd[1]: Starting The PHP FastCGI Process Manage> 1月 05 02:30:42 SV-NEPTUNE php-fpm[20714]: [05-Jan-2020 02:30:42] WARNING: [po> 1月 05 02:30:42 SV-NEPTUNE php-fpm[20714]: [05-Jan-2020 02:30:42] WARNING: [po>
php-fpmが自動起動されるよう設定
systemctl enable phop-fpm
[root@SV-NEPTUNE php-fpm.d]# systemctl enable php-fpm Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
systemctl is-enabled php-fpm
[root@SV-NEPTUNE php-fpm.d]# systemctl is-enabled php-fpm enabled
2020/06/13追記
php-fpmの再起動時にACLのエラーが出たときの対処手順を以下の記事に書きました。
souiunogaii.hatenablog.com
PHPの基本設定
次はPHPの基本設定をしますが、ここまでで少し長くなったので、続きは別の記事に記載します。
参考にしたサイト
www.rem-system.comインフラエンジニアになるための勉強のやり方
私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。現在の会社で直接担当している業務の中では、決まった技術しか触れないけれど、
「他にも将来役に立ちそうなインフラ技術を勉強したい」「働きながらでもできる効率的なインフラエンジニアの勉強方法を知りたい」と考えている方のために、
①おすすめの書籍と、②おススメのオンライン学習サイト、③おすすめのエンジニアスクールを紹介します。
働きながら勉強するための、おススメの書籍と、オンラインで学習できるサイトの紹介です。
インフラエンジニアの勉強ができるおススメ書籍
朝の通勤時や帰宅時の電車の中や、社外打合せへの**移動中などに勉強するなら、やはり書籍が一番**だと思います。インフラエンジニアの教科書
LINE社に創業時から在籍しているインフラエンジニア・プロマネの「佐野裕」さんの本です。twitter.com
膨大なトラフィックをさばくLINE社にて構築・保守を行っている現役エンジニアが記すITインフラの必須知識と経験の数々!
サーバ、OS、ネットワーク機器、データセンター、購買と商談、障害対応、大規模インフラ、成長するために必要なスキルなど、基礎知識から実践まで言及。
ITインフラの世界が理解できる珠玉の1冊!
インフラエンジニアの教科書 (C&R研究所) 佐野裕 |
1週間でLPICの基礎が学べる本
Linuxの資格「LPIC」の試験対策を初心者向けに書いた入門書です。Linuxの資格として広く知られているLPICですが、あまり知識の無いまま試験対策を始める人も多いのではないでしょうか。しかし、試験対策書は試験範囲についてのみ解説しているものが多く、初心者が理解するのは困難です。本書は、初心者がスムーズに試験対策を行えるよう、事前に基礎固めを行うLinux入門書です。試験情報や模擬問題も掲載しているので、資格取得を視野に入れた効率的な基礎学習が行えます。
1週間でLPICの基礎が学べる本 第3版 徹底攻略シリーズ (インプレス) 中島能和 |
インフラエンジニアの勉強ができるオンライン学習サイト
Udemy (オンライン動画学習サイト)
Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。ITエンジニア系の講座もたくさん公開されています。
Udemyの特徴
- ユーザー登録すれば、第1回の講座は無料で視聴できる
- 無料のコンテンツもある
- 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい
以上、読んでいただきありがとうございました。