Ubuntu14.04ソースコードコンパイルインストールphp 7.0とmysql 5.6


アリ雲でUbuntu 14.04 php 7バージョンのaptインストールパッケージが見つからないため、ソースコードでインストールするしかなく、途中で多くのピットに遭遇し、mysql、Nginxと構成する際にまた問題が発生したため、ここに記録します.
一、aptインストールmysql
1、パッケージの取得
1、前にmysql 5をインストールしました.5バージョンでは、これまでインストールされていなかった場合は、この手順をスキップすることができます.
#     mysql:
sudo apt-get remove mysql-*
#          
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

2、パッケージの更新:
apt update

3、インストール可能なmysqlバージョンを検索する
apt-cache search mysql

印刷:
...
mysql-server-5.6 - MySQL database server binaries and system database setup
mysql-server-core-5.6 - MySQL database server binaries
mysql-source-5.5 - MySQL source
mysql-source-5.6 - MySQL source
mysql-testsuite - MySQL testsuite
mysql-testsuite-5.5 - MySQL testsuite
mysql-testsuite-5.6 - MySQL 5.6 testsuite

パッケージリソースにはmysql-server-5.6バージョンが表示されます.
4、インストール
 apt-get install mysql-server-5.6

インストール中にデータベースのパスワードを入力する必要があります.直接入力すればいいです.
5、mysqlがインストールに成功したかどうかを確認した後、次のコマンドを使用して正常に実行されているかどうかを確認します.
sudo service mysql status

mysqlが正常にインストールされていることがわかります.
root@iZ:/tmp# sudo service mysql status
mysql start/running, process 848

2、構成の変更
6、構成を変更してmysqlサービスに入る:
#    root,     123456
mysql -uroot -p123456

rootアクセスのIP権限を変更します.そうしないと、外部ネットワーク接続が拒否されます.
> use mysql;
> update user set host='%' where user = 'root' and host = '::1'

7、MySQL傍受IPの修正
デフォルトではMySQLが傍受しているのは127.0.0.1、つまりネイティブなので、ネイティブのみ接続できるため、MySQLをリモートホストIPまたはすべてのIPを傍受するように変更する必要があります.
プロファイル/etc/mysql/my.cnfを開き、bind-addressを見つけ、固定リモートIPを傍受するとリモートホストIPに変更し、すべてのIPを傍受すると0.0.0.0またはbind-addressに変更します.ここでは直接注釈し、修正が完了したら再起動します.
#bind-address = 127.0.0.1

mysqlを再起動
service mysql restart

8、完全なmy.cnf配置内容:/etc/mysql/my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port        = 3306
socket        = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket        = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
lc-messages-dir    = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit    = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id        = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size         = 100M
innodb_large_prefix = ON
innodb_file_format = BARRACUDA
max_connections = 10000
#binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]
key_buffer        = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

プロファイルにいくつかのパラメータが追加されました.
#5.6  5.7   mb4        
innodb_large_prefix = ON
innodb_file_format = BARRACUDA
#      10000,     
max_connections = 10000

はい、これまで、aptを使用して、mysql5.6のインストールに成功しました.
二、ソースコードコンパイルインストールphp 7.0
1、ソースコードのダウンロード
ソースパッケージは/var/softwareディレクトリの下にあります.
root@i:/var/software# wget http://am1.php.net/distributions/php-7.0.0.tar.gz

2、解凍インストール
1、解凍
cd /var/software
tar -zxvf php-7.0.0.tar.gz
cd php-7.0.0

2、コンパイル
root@i:/var/software/php7.0# ./configure --prefix=/usr/local/php7.0 --with-config-file-path=/usr/local/php7.0 --enable-mbstring --enable-ftp --with-gd  --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --enable-pcntl --enable-cli --with-openssl --with-curl 
--prefixphpがどのパスにインストールされているかを示します.システムを書かないとデフォルトでパスに配置されます.phpで使用する拡張pdoもインストールします.mysql、openssl、curlなど.
php 7を/usr/local/php7.0ディレクトリにインストールします.
3、コンパイルインストール:
make && make install

4、テスト:私たちがインストールしたディレクトリは:/usr/local/php7.0で、このディレクトリの下にこれらのフォルダがあります.
drwxr-xr-x 2 root root  4096 Nov 28 23:22 bin
drwxr-xr-x 3 root root  4096 Nov 29 09:40 etc
drwxr-xr-x 3 root root  4096 Nov 28 23:17 include
drwxr-xr-x 3 root root  4096 Nov 28 23:17 lib
drwxr-xr-x 4 root root  4096 Nov 28 23:17 php
drwxr-xr-x 2 root root  4096 Nov 28 23:22 sbin
drwxr-xr-x 4 root root  4096 Nov 28 23:17 var

インストールディレクトリにアクセスし、コマンド./bin/php -mで拡張子を表示します.
# cd /usr/local/php7.0
# ./bin/php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO

3、PHP実行命令の簡略化
phpスクリプトを実行するには、phpの完全なパスに基づいて/usr/local/php7.0/bin/php -mを実行する必要があります.これは煩雑で、面倒です.別名を設定すると、後でスクリプトを直接付けるのは簡単です.例えば、php -mは、非常に簡潔ではありませんか.
実行コマンドを変更するには、実行したコマンドをプロファイル /root/.bashrcに追加する必要があります.
vim /root/.bashrc
#   php    
alias php=/usr/local/php7.0/bin/php

再ロード:
source /root/.bashrc

これにより、phpを直接使用してコマンドを実行できます.phpバージョンを表示します.
root@i:/usr/local/php7.0# php -v
PHP 7.0.0 (cli) (built: Nov 28 2019 23:16:55) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

4、php-fpm配置
php-fpmコマンドにソフトリンクを作成し、環境変数に追加
ln -s /usr/local/php7.0/sbin/php-fpm /usr/local/sbin/php-fpm

phpプロファイルディレクトリのphp-fpmをコピーする.conf.default、php-fpmと名前を変更します.conf
cp /usr/local/php7.0/etc/php-fpm.conf.default  /usr/local/php7.0/etc/php-fpm.conf

編集php-fpm.d/www.confphp-fpmモジュールはwww-dataユーザとwww-dataユーザグループのアイデンティティを使用して実行され、傍受者もwww-dataである.
user=www-data
group = www-data

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

listen=/usr/local/php7.0/var/run/php7.0-fpm.sock

ここに大きな穴があって、長い間よく知っていて、デフォルトは傍受listen=127.0.0.1:9000で、Nginx fastcgi_passはsocketリスニングを使用しているので、ここではsocketリスニングモードに変更する必要があります.
listen=/usr/local/php7.0/var/run/php7.0-fpm.sock

このパス/usr/local/php7.0/は私たちのphpインストールパスで、他のパスを使用すると、php7.0-fpm.sockファイルが見つからないので、ここではあなたのPHPインストールパスでなければなりません.また、php7.0-fpm.sockのデフォルトは存在せず、実行時に発生します.
root@i:/usr/local/php7.0/var/run# ls -l
total 4
-rw-r--r-- 1 root     root     4 Nov 29 11:40 php-fpm.pid
srw-rw---- 1 www-data www-data 0 Nov 29 11:40 php7.0-fpm.sock
www.conf完全構成:パス:/usr/local/php 7.0/etc/php-fpm.d/www.conf
; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr/local/php7.0) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user=www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen=/usr/local/php7.0/var/run/php7.0-fpm.sock
; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =

; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1

; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
;       - The pool processes will inherit the master process priority
;         unless it specified otherwise
; Default Value: no set
; process.priority = -19

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic

; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 15

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

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3

; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500

; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
;   pool                 - the name of the pool;
;   process manager      - static, dynamic or ondemand;
;   start time           - the date and time FPM has started;
;   start since          - number of seconds since FPM has started;
;   accepted conn        - the number of request accepted by the pool;
;   listen queue         - the number of request in the queue of pending
;                          connections (see backlog in listen(2));
;   max listen queue     - the maximum number of requests in the queue
;                          of pending connections since FPM has started;
;   listen queue len     - the size of the socket queue of pending connections;
;   idle processes       - the number of idle processes;
;   active processes     - the number of active processes;
;   total processes      - the number of idle + active processes;
;   max active processes - the maximum number of active processes since FPM
;                          has started;
;   max children reached - number of times, the process limit has been reached,
;                          when pm tries to start more children (works only for
;                          pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
;   pool:                 www
;   process manager:      static
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          62636
;   accepted conn:        190460
;   listen queue:         0
;   max listen queue:     1
;   listen queue len:     42
;   idle processes:       4
;   active processes:     11
;   total processes:      15
;   max active processes: 12
;   max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
;   http://www.foo.bar/status
;   http://www.foo.bar/status?json
;   http://www.foo.bar/status?html
;   http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
;   http://www.foo.bar/status?full
;   http://www.foo.bar/status?json&full
;   http://www.foo.bar/status?html&full
;   http://www.foo.bar/status?xml&full
; The Full status returns for each process:
;   pid                  - the PID of the process;
;   state                - the state of the process (Idle, Running, ...);
;   start time           - the date and time the process has started;
;   start since          - the number of seconds since the process has started;
;   requests             - the number of requests the process has served;
;   request duration     - the duration in µs of the requests;
;   request method       - the request method (GET, POST, ...);
;   request URI          - the request URI with the query string;
;   content length       - the content length of the request (only with POST);
;   user                 - the user (PHP_AUTH_USER) (or '-' if not set);
;   script               - the main script called (or '-' if not set);
;   last request cpu     - the %cpu the last request consumed
;                          it's always 0 if the process is not in Idle state
;                          because CPU calculation is done when the request
;                          processing has terminated;
;   last request memory  - the max amount of memory the last request consumed
;                          it's always 0 if the process is not in Idle state
;                          because memory calculation is done when the request
;                          processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
;   ************************
;   pid:                  31330
;   state:                Running
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          63087
;   requests:             12808
;   request duration:     1250261
;   request method:       GET
;   request URI:          /test_mem.php?N=10000
;   content length:       0
;   user:                 -
;   script:               /home/fat/web/docs/php/test_mem.php
;   last request cpu:     0.00
;   last request memory:  0
;
; Note: There is a real-time FPM status monitoring sample web page available
;       It's available in: /usr/local/php7.0/share/php/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;pm.status_path = /status

; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;ping.path = /ping

; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong

; The access log file
; Default: not set
;access.log = log/$pool.access.log

; The access log format.
; The following syntax is allowed
;  %%: the '%' character
;  %C: %CPU used by the request
;      it can accept the following format:
;      - %{user}C for user CPU only
;      - %{system}C for system CPU only
;      - %{total}C  for user + system CPU (default)
;  %d: time taken to serve the request
;      it can accept the following format:
;      - %{seconds}d (default)
;      - %{miliseconds}d
;      - %{mili}d
;      - %{microseconds}d
;      - %{micro}d
;  %e: an environment variable (same as $_ENV or $_SERVER)
;      it must be associated with embraces to specify the name of the env
;      variable. Some exemples:
;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
;  %f: script filename
;  %l: content-length of the request (for POST request only)
;  %m: request method
;  %M: peak of memory allocated by PHP
;      it can accept the following format:
;      - %{bytes}M (default)
;      - %{kilobytes}M
;      - %{kilo}M
;      - %{megabytes}M
;      - %{mega}M
;  %n: pool name
;  %o: output header
;      it must be associated with embraces to specify the name of the header:
;      - %{Content-Type}o
;      - %{X-Powered-By}o
;      - %{Transfert-Encoding}o
;      - ....
;  %p: PID of the child that serviced the request
;  %P: PID of the parent of the child that serviced the request
;  %q: the query string
;  %Q: the '?' character if query string exists
;  %r: the request URI (without the query string, see %q and %Q)
;  %R: remote IP address
;  %s: status (response code)
;  %t: server time the request was received
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsuled in a %{}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %T: time the log has been written (the request has finished)
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsuled in a %{}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0

; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024

; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0

; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =

; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
;catch_workers_output = yes

; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no

; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'.
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr/local/php7.0)

; Default Value: nothing is defined by default except the values in php.ini and
;                specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected]
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M

5、php.iniファイル/usr/local/php7.0インストールディレクトリにphp.iniプロファイルがないことがわかります.これは、ソースパッケージのphp.iniをインストールディレクトリにコピーする必要があります.
コピー:
#      
cd /var/software/php7.0
cp php.ini-development /usr/local/php7.0/etc

ファイル名phpを変更します.ini-developmentはphp.ini:
cd /usr/local/php7.0/etc
mv php.ini-development php.ini

ここにはもう一つの穴があります.私たちはphp.iniファイルを変更した後、発効しなかったことがあります.このような問題はどのように調べますか.
次のコマンドphp -i | grep php.iniで見ることができます.
php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/php7.0

最終的な実行経路は/usr/local/php7.0の下にあり、通常は/usr/local/php7.0/etcの下に配置され、コンパイル後は/usr/local/php7.0の下に配置されるので、etcの下にphp 7に移動することができます.0インストールディレクトリの下にあります.
root@i:/usr/local/php7.0# mv ./etc/php.ini ./

次に、
root@i:/usr/local/php7.0# php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/php7.0
Loaded Configuration File => /usr/local/php7.0/php.ini

phpを変更します.iniデフォルト設定:
#    php  mysql     
display_errors = Off
#      
log_errors = On
#      
error_log = /var/log/php7.0/php_errors.log

#  PHP   
date.timezone = PRC

6、拡張機能のインストール
ソースパッケージの中に拡張があれば、openssl拡張パッケージのように、ソースパッケージの中に直接コンパイルインストールすればいいです.
ソース拡張パッケージ:
/var/software/php-7.0.0/ext
root@iZ94j7ehy5oZ:/var/software/php-7.0.0/ext# ls -l
total 316
drwxr-xr-x  4 1000 1000  4096 Dec  1  2015 bcmath
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 bz2
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 calendar
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 com_dotnet
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:09 ctype
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:10 curl
drwxr-xr-x  5 1000 1000  4096 Nov 28 23:10 fileinfo
drwxr-xr-x  5 1000 1000  4096 Nov 28 23:10 filter
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:10 ftp
drwxr-xr-x  5 1000 1000  4096 Nov 28 23:10 gd
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 imap
drwxr-xr-x  7 1000 1000  4096 Nov 28 23:12 mbstring
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 mcrypt
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:12 mysqli
drwxr-xr-x  3 1000 1000  4096 Nov 28 23:15 mysqlnd
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 oci8
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 odbc
drwxr-xr-x  5 1000 1000  4096 Nov 28 23:07 opcache
drwxr-xr-x  8 1000 1000  4096 Nov 29 11:35 openssl
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:12 pcntl
drwxr-xr-x  5 1000 1000  4096 Nov 28 23:09 pcre
drwxr-xr-x  4 1000 1000  4096 Nov 28 23:12 pdo
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 pdo_dblib
drwxr-xr-x  3 1000 1000  4096 Dec  1  2015 pdo_firebird
drwxr-xr-x  8 1000 1000  4096 Nov 28 23:12 pdo_mysql

インストールする拡張子がソースインストールパッケージに存在しない場合は、phpredis拡張を例に挙げると、オンラインでダウンロードしてインストールする必要があります.
ダウンロード:
wget https://github.com/phpredis/phpredis/archive/5.0.0.tar.gz

名前の変更
mv 5.0.0.tar.gz phpredis-5.0.0.tar.gz

解凍:
tar -zvx phpredis-5.0.0.tar.gz

解凍ディレクトリ生成プロファイルにアクセスするには、次の手順に従います.
/var/software/# cd phpredis-5.0.0
/var/software/phpredis-5.0.0# /usr/local/php7.0/bin/phpize
./configure --with-php-config=/usr/local/php7.0/bin/php-config
make && make install

コンパイルに成功すると、/usr/local/php7.0/lib/php/extensions/no-debug-non-zts-20151012/ディレクトリの後に、新しく生成された拡張redis.soが表示されます.
次に、php.iniに拡張子を追加します.
extension_dir="/usr/local/php7.0/lib/php/extensions/no-debug-non-zts-20151012/"
extension=redis.so

拡張インストールOKです.
三、Nginxとphp-fpm使用
Nginxとphp-fpmをSockソケットで接続するように設定します.ここではパスに注意してください.nginxの構成:
cat /etc/nginx/vhost/blog.conf

完全な構成:
server {
        listen 80;

        root /var/www/myblog/public;
        index index.php  index.html index.htm;

        # Make site accessible from http://localhost/
        server_name digtime.cn www.digtime.cn;

        # ssl-20160924
        # rewrite ^/(.*) https://myblog.cn/$1 permanent;
        # add_header Access-Control-Allow-Origin *;        

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # handle 405 error
                # if ($request_method = 'OPTIONS') { 
                #  add_header Access-Control-Allow-Origin *; 
                # add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
                # return 204; 
                #}
                
                try_files $uri $uri/ /index.php?$query_string;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
                # 405 error
        }


        location ~ \.php$ {
               try_files $uri /index.php =404;

               fastcgi_split_path_info ^(.+\.php)(/.+)$;

               fastcgi_pass unix:/usr/local/php7.0/var/run/php7.0-fpm.sock;

               fastcgi_index index.php;

               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

               include fastcgi_params;
         }
}

注意:fastcgi_passここではphp-fpmが傍受している場所と同じパスを使用しています.
 fastcgi_pass unix:/usr/local/php7.0/var/run/php7.0-fpm.sock;

これらの穴を埋め終わってこそ、私たちの環境は構築に成功します.
参考記事:Ubuntuはphp 7をインストール.0環境Swoole学習のPHPソースインストール(一)アリクラウドのECSにLaravelプロジェクトを配備コンパイルインストールPHP 7および拡張