CentOS 7 LinuxはPHP 7をインストール.2.12-コンパイルインストール


CentOS 7 LinuxはPHP 7をインストール.2-インストールのコンパイル
1拡張パッケージのインストールとシステムカーネルの更新
[root@iz28snxdn5mz ~]# yum install epel-release -y
[root@iz28snxdn5mz ~]# yum update

2 YUM実装PHP依存コンポーネント(Nginx依存を含む):
[root@iz28snxdn5mz ~]# yum -y install php-mcrypt libmcrypt-devel libxml2 libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libxslt-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib m4 autoconf gcc gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel wget net-tools zip

yum -y install php-mcrypt libmcrypt-devel libxml2 libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libxslt-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib m4 autoconf gcc gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel wget net-tools zip
3実装構成PHPのコンパイル
3.1アプリケーションパッケージのダウンロード
ダウンロード先:http://www.php.net/downloads.php
php-7.2.12.tar.gz (sig) [19,201Kb] 08 Nov 2018 sha256 : d7cabdf4e51db38121daf0d494dc074743b24b6c79e592037eeedd731f1719dd
3.2アプリケーションパッケージの解凍
[root@iz28snxdn5mz ~]# tar -xvf php-7.2.12.tar.gz

3.3コンパイル
[root@iz28snxdn5mz php7.2-src]# ./configure --prefix=/opt/php/php7.2 \
--with-config-file-path=/opt/php/php7.2/etc \
--with-curl \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-openssl \
--with-pcre-regex \
--with-pdo-sqlite \
--with-pear \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--enable-static \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--disable-debug \
--disable-fileinfo 

3.4インストール
[root@iz28snxdn5mz php7.2-src]# make clean && make -j 4 && make install

3.5リリース
[root@iz28snxdn5mz bin]# ./php -v
PHP 7.2.12 (cli) (built: Nov 14 2018 18:38:28) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
[root@iz28snxdn5mz bin]# pwd
/opt/php/php7.2/bin

3.6 php.ini
[root@iz28snxdn5mz etc]# pwd
/opt/php/php7.2/etc
[root@iz28snxdn5mz etc]# find / -name php.ini-production
/opt/php/php7.2.12-src/php.ini-production
[root@iz28snxdn5mz etc]# cp /opt/php/php7.2.12-src/php.ini-production php.ini
[root@iz28snxdn5mz etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d  php.ini
[root@iz28snxdn5mz etc]#

3.7 php-fpm
[root@iz28snxdn5mz etc]# pwd
/opt/php/php7.2/etc
[root@iz28snxdn5mz etc]# cp php-fpm.conf.default php-fpm.conf
[root@iz28snxdn5mz etc]# ll
total 24
-rw-r--r-- 1 root root 1240 Apr  3 10:56 pear.conf
-rw-r--r-- 1 root root 4468 Apr  3 11:17 php-fpm.conf
-rw-r--r-- 1 root root 4468 Apr  3 10:55 php-fpm.conf.default
drwxr-xr-x 2 root root 4096 Apr  3 10:55 php-fpm.d
[root@iz28snxdn5mz etc]#

3.8 www.conf
[root@iz28snxdn5mz php-fpm.d]# pwd
/opt/php/php7.2/etc/php-fpm.d
[root@iz28snxdn5mz php-fpm.d]# cp www.conf.default www.conf
[root@iz28snxdn5mz php-fpm.d]# ls
www.conf  www.conf.default

3.9 php-fpm.service
[root@iz28snxdn5mz system]# pwd
/usr/lib/systemd/system
[root@iz28snxdn5mz system]# find / -name php-fpm.service
/opt/php/php-7.2.12.src/sapi/fpm/php-fpm.service
[root@iz28snxdn5mz system]# pwd
/usr/lib/systemd/system
[root@iz28snxdn5mz systemd]# cp /opt/php/php-7.2.12.src/sapi/fpm/php-fpm.service php-fpm.service
[root@iz28snxdn5mz systemd]# ls php*
php-fpm.service

3.10 PHP起動
[root@iz28snxdn5mz system]# service php-fpm start
Redirecting to /bin/systemctl start php-fpm.service
[root@iz28snxdn5mz system]# ps -ef | grep php
root     23696     1  0 22:40 ?        00:00:00 php-fpm: master process (/opt/php/php7.2/etc/php-fpm.conf)
nobody   23697 23696  0 22:40 ?        00:00:00 php-fpm: pool www
nobody   23698 23696  0 22:40 ?        00:00:00 php-fpm: pool www

4プロファイル
4.1 php.iniパラメータ
[root@iz28snxdn5mz etc]# vim /opt/php/php7.2/etc/php.ini

php.ini
デフォルト
説明
expose_php = Off
デフォルト:On
無効化expose_phpは,Webサーバの署名を防止し,httpヘッダにX-Powered-By:PHP/7.2という機密情報が露出することを防止する.
short_open_tag = Off
デフォルト:On
phpショートラベルを有効にします.これは通常の書き方です.?>は短いラベルです.
max_execution_time = 120
デフォルト:30
PHPプログラム処理要求の最大時間、単位「秒」.
max_input_time = 60
デフォルト:60
この変数は、POST、GET、PUTによるデータ受信時間を「秒」単位で制限することができる.
memory_limit = 128M
デフォルト:128 M
メモリの最大使用制限を許可します.スクリプトが割り当てる最大メモリ量を設定し、暴走したスクリプトがサーバメモリを独占しないようにします.
file_uploads = On
デフォルト:On
サーバー上のPHPスクリプトがHTTPファイルのアップロードを許可できるかどうかを確認する
post_max_size = 8M
デフォルト:8 M
POST方式で許容できる情報の最大量を制限する
upload_max_filesize = 8M
デフォルト:2 M
PHP処理アップロードファイルの最大値を制限します.この値はpost_より小さくなければなりません.max_size値
date.timezone = Asia/Shanghai
デフォルト:
PHPが実行するデフォルト時間のタイムゾーンルールを設定します.
mbstring.func_overload=2
デフォルト:0
よく使われるsubstr()はmb_に自動的に置き換えられますsubstr().0:関数を再ロードしない(デフォルト)を表します.1:mail()関数を再ロードします.2:strシリーズのリロード文字列処理関数を表します.4:重荷eregシリーズの正規処理関数を表す.7:前述したすべての関数を再ロードします.
4.2 www.confパラメータ
次のコメントをキャンセルし、最適化パラメータを変更します.
pm = dynamic pm.max_children = 180 pm.start_servers = 50 pm.min_spare_servers = 50 pm.max_spare_servers = 180 request_terminate_timeout = 120 request_slowlog_timeout = 50 slowlog = var/log/slow.log
; fpm    
;  nginx php     ,       。
;      : ‘ip:port’, ‘port’, ‘/path/to/unix/socket’.           .
listen = 127.0.0.1:9000

; backlog ,-1     ,       。
;;listen.backlog = -1

;     FastCGI   IP,  any    IP(    any)。
;           nginx      FPM  ,listen            IP。
;           .           ,            。
listen.allowed_clients = 127.0.0.1

;          
user = nginx
group = nginx

; unix socket    ,    tcp    ,      。
;listen.owner = www
;listen.group = www
;listen.mode = 0666

;     FastCGI   IP,  any    IP(    any);           nginx      FPM  ,listen            IP。
;           .           ,            。
pm = dynamic

;       
pm.max_children = 8

;        (Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2)
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
pm.start_servers = 4

;    pm = dynamic
;           ,          ,        。
pm.min_spare_servers = 4

;           ,          ,     。
;    pm = dynamic
pm.max_spare_servers = 4

;                  .
;                         .
;       '0'        .     PHP_FCGI_MAX_REQUESTS     .    : 0.
pm.max_requests = 500

; FPM       .       ,          .    : none. munin      
; Default Value: not set
;pm.status_path = /status

; FPM     ping  .       ,      ping  .          FPM            .            (/); Default Value: not set
;ping.path = /ping

;     ping       .     HTTP 200   text/plain     .    : pong.
; Default Value: pong
;ping.response = pong

;              .        php.ini    'max_execution_time'                   . 
;     '0'    'Off'.     502            。
; Default Value: 0
request_terminate_timeout = 180

;               ,      PHP               . 
;     '0'    'Off'
; Default Value: 0
;request_slowlog_timeout = 10

;         ,  request_slowlog_timeout  
;slowlog = log/$pool.log.slow

;           rlimit  . 
;    :              1024,    ulimit -n  ,ulimit -n 2048  。
; Default Value: system defined value
;rlimit_files = 1024

;     rlimit     .    : 'unlimited' 、0     .    :      .
; Default Value: system defined value
;rlimit_core = 0

;     Chroot  .              .       ,  chroot    .
; Default Value: not set
;chroot =

;       ,      Chdir    .              .    :     ,  /  (chroot )
;chdir = /var/www

;          stdout stderr           .       , stdout   stderr     FastCGI         /dev/null .    :  .
; Default Value: no
;catch_workers_output = yes

4.3 php-fpm.confパラメータ
; pid  ,         var/run/php-fpm.pid,    。
pid = /opt/php/php7.2/var/run/php-fpm.pid

;     ,         var/log/php-fpm.log
error_log = log/php-fpm.log

;     .      : alert(      ), error(    ), warning(    ), notice(      ), debug(    ).   : notice.
log_level = notice

;    emergency_restart_interval      SIGSEGV  SIGBUS   php-cgi        emergency_restart_threshold ,php-fpm      。            。
emergency_restart_threshold = 60
emergency_restart_interval = 60s

;     fpm,    yes,          no。 FPM ,                 。                  。
daemonize = yes

5これでphp 7のインストールが完了しました
説明:php関数を無効にします.プログラムがこれらの関数を必要とする場合は、禁止を取り消すことができます.初心者はこのステップを無視することをお勧めします./usr/lib/systemd/system/php-fpm.serviceファイルはCentOS 7.4の中でシステムサービスの配置方式がとても使いやすくて、上はすでに配置が完成して、興味があるのはこのファイルの具体的な配置情報を見ることができます.
[root@web system]# more php-fpm.service 
# It's not recommended to modify this file in-place, because it
# will be overwritten during upgrades.  If you want to customize,
# the best way is to use the "systemctl edit" command.

[Unit]
Description=The PHP FastCGI Process Manager(v 7.2.12)
After=network.target

[Service]
Type=simple
PIDFile=/opt/php/php7.2/var/run/php-fpm.pid
ExecStart=/opt/php/php7.2/sbin/php-fpm --nodaemonize --fpm-config /opt/php/php7.2/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

5.1 php-fpmサービスを起動し、起動してから起動する
$ systemctl enable php-fpm.service
$ systemctl restart php-fpm.service

PHPのインストールプロセス全体が完了しました.もしあなたがこの文書に従ってインストールに成功しなかったら、間違いの原因を伝言で説明してほしいです.私は無償であなたの構成に協力します.
もしあなたがこの文章を改善する良い提案があれば、あなたの提出と改善を歓迎して、私たちは一緒に勉強して進歩します.