php编译安装与配置
===========================================
官网:https://php.net/
官网下载:https://php.net/downloads.php
===========================================
一:懂得与预备
1.1:Apache(httpd) nginx 与 php 衔接方法:
httpd与php:
1:php 作为 httpd 模块
2:fastcgi(php-fpm)
3:cgi(此处不讲授)
nginx与php:
1:fastcgi(php-fpm)
1.2:PHP安装与依附:
~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
1.3:备注:
1:上面的依附根本解决所须要的依附。
2:编译安装完成后可以增减所支撑的php模块,此地方编译的模块已非常完备。
3:须要编译单个模块,查看php模块编译方法:php模块编译
4:下面编译安装的配置选项:
--prefix=/usr/local/php7 主程叙文件路径
--sysconfdir=/etc/php7 配置文件路径
--with-config-file-path=/etc/php7 php.ini 文件路径
--with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时须要指定 httpd 的 apxs 文件路径。
其他的配置可以按自己需求指定,这几个选项也能够应用默许配置。
5:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql。php5可以应用。
php5编译时参加选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)衔接
6:此处以 CentOs7 编译 php7 为示例,配合讲授php5安装的要点。
7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(制造)
编译完成后选择自己须要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
默以为php目录下的 lib 目录。
8:PHP安装与依附中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止过程。
二:php编译与配置:
2.1: httpd 模块
备注:须要事前存在httpd ,编译指定 apxs 文件地位。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.2:fastcgi php-fpm 模式
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.3:php.ini 配置文件(在源码包目录下)
~]# cp php.ini-production /etc/php7/php.ini
2.4:php 作为 httpd 模块
不须要修正 php 配置,
2.5:fastcgi php-fpm
~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
# 默许便可是本机 127.0.0.1 没必要修正。
~]# vi /etc/php7/php-fpm.d/www.conf
# 监听地址
listen = 127.0.0.1:9000
# 许可的客户端
listen.allowed_clients = 127.0.0.1
备注:php5 须要复制 php-fpm.conf.default 为 php-fpm.conf 便可。查看 php-fpm.conf 监听地址和许可的客户端。
2.6:启动与停滞
httpd模块:
重新加载 httpd 。
fastcgi:
~]# vi /etc/php7/php-fpm.conf
打开注释:(不打开注释仅能应用 killall php-fpm 关闭 php)
pid = run/php-fpm.pid
启动:
/usr/local/php7/sbin/php-fpm
立刻终止
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
killall php-fpm
平滑终止
kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
平滑重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
2.7:参加环境变量
~]# vi /etc/profile.d/web.sh
export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
2.8:CentOS 体系服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释须要打开:2.6 )
CentOS 6:
~]# vi /etc/rc.d/init.d/php-fpm
~]# chmod +x /etc/rc.d/init.d/php-fpm
--------------------------file start---------------------------------
#! /bin/sh
# chkconfig: - 84 16
# description: PHP FastCGI Process Manager
# Source function library.
. /etc/init.d/functions
# Check that networking is up.
. /etc/sysconfig/network
# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
. /etc/sysconfig/php-fpm
fi
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="php-fpm"
# 可依据版本不同修正 phpfpm pidfile lockfile变量。其他地方不用修正。
phpfpm="/usr/local/php7/sbin/php-fpm"
pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
start () {
echo -n $"Starting $prog: "
dir=$(dirname ${pidfile})
[ -d $dir ] || mkdir $dir
daemon --pidfile ${pidfile} ${phpfpm}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} php-fpm
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
reload () {
echo -n $"Reloading $prog: "
if ! ${phpfpm} --test ; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $prog due to configuration syntax error"
else
killproc -p ${pidfile} php-fpm -USR2
RETVAL=$?
fi
echo
}
# See how we were called.
case "
php编译安装与配置
===========================================
官网:https://php.net/
官网下载:https://php.net/downloads.php
===========================================
一:懂得与预备
1.1:Apache(httpd) nginx 与 php 衔接方法:
httpd与php:
1:php 作为 httpd 模块
2:fastcgi(php-fpm)
3:cgi(此处不讲授)
nginx与php:
1:fastcgi(php-fpm)
1.2:PHP安装与依附:
~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
1.3:备注:
1:上面的依附根本解决所须要的依附。
2:编译安装完成后可以增减所支撑的php模块,此地方编译的模块已非常完备。
3:须要编译单个模块,查看php模块编译方法:php模块编译
4:下面编译安装的配置选项:
--prefix=/usr/local/php7 主程叙文件路径
--sysconfdir=/etc/php7 配置文件路径
--with-config-file-path=/etc/php7 php.ini 文件路径
--with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时须要指定 httpd 的 apxs 文件路径。
其他的配置可以按自己需求指定,这几个选项也能够应用默许配置。
5:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql。php5可以应用。
php5编译时参加选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)衔接
6:此处以 CentOs7 编译 php7 为示例,配合讲授php5安装的要点。
7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(制造)
编译完成后选择自己须要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
默以为php目录下的 lib 目录。
8:PHP安装与依附中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止过程。
二:php编译与配置:
2.1: httpd 模块
备注:须要事前存在httpd ,编译指定 apxs 文件地位。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.2:fastcgi php-fpm 模式
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.3:php.ini 配置文件(在源码包目录下)
~]# cp php.ini-production /etc/php7/php.ini
2.4:php 作为 httpd 模块
不须要修正 php 配置,
2.5:fastcgi php-fpm
~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
# 默许便可是本机 127.0.0.1 没必要修正。
~]# vi /etc/php7/php-fpm.d/www.conf
# 监听地址
listen = 127.0.0.1:9000
# 许可的客户端
listen.allowed_clients = 127.0.0.1
备注:php5 须要复制 php-fpm.conf.default 为 php-fpm.conf 便可。查看 php-fpm.conf 监听地址和许可的客户端。
2.6:启动与停滞
httpd模块:
重新加载 httpd 。
fastcgi:
~]# vi /etc/php7/php-fpm.conf
打开注释:(不打开注释仅能应用 killall php-fpm 关闭 php)
pid = run/php-fpm.pid
启动:
/usr/local/php7/sbin/php-fpm
立刻终止
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
killall php-fpm
平滑终止
kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
平滑重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
2.7:参加环境变量
~]# vi /etc/profile.d/web.sh
export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
2.8:CentOS 体系服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释须要打开:2.6 )
CentOS 6:
~]# vi /etc/rc.d/init.d/php-fpm
~]# chmod +x /etc/rc.d/init.d/php-fpm
--------------------------file start---------------------------------
#! /bin/sh
# chkconfig: - 84 16
# description: PHP FastCGI Process Manager
# Source function library.
. /etc/init.d/functions
# Check that networking is up.
. /etc/sysconfig/network
# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
. /etc/sysconfig/php-fpm
fi
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="php-fpm"
# 可依据版本不同修正 phpfpm pidfile lockfile变量。其他地方不用修正。
phpfpm="/usr/local/php7/sbin/php-fpm"
pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
start () {
echo -n $"Starting $prog: "
dir=$(dirname ${pidfile})
[ -d $dir ] || mkdir $dir
daemon --pidfile ${pidfile} ${phpfpm}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} php-fpm
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
reload () {
echo -n $"Reloading $prog: "
if ! ${phpfpm} --test ; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $prog due to configuration syntax error"
else
killproc -p ${pidfile} php-fpm -USR2
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} php-fpm
RETVAL=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
configtest)
${phpfpm} --test
RETVAL=$?
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
RETVAL=2
;;
esac
exit $RETVAL
--------------------------file end---------------------------------
~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
CentOS 7:
~]# vim /usr/lib/systemd/system/php-fpm.service
--------------------------file start---------------------------------
[Unit]
Description=php-fpm
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php7/var/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
--------------------------file end---------------------------------
~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
2.8:体系启动服务
CentOS 6:
参加 chkconfig 管理:
~]# chkconfig --add php-fpm
开机启动:
~]# chkconfig --level 345 php-fpm on
开机不启动:
~]# chkconfig php-fpm off
查看开机是不是启动
~]# chkconfig --list php-fpm
CentOS 7:
开机启动:
~]# systemctl enable php-fpm.service
开机不启动:
~]# systemctl disable php-fpm.service
2.9:参加 man 文档
CentOS 6:
~]# vim /etc/man.config
CentOS 7:
~]# vi /etc/man_db.conf
写入:
MANPATH /usr/local/php7/php/man
备注:然后便可以够应用 man 命令查看
三:httpd nginx 与 php 衔接
3.1:httpd 模块 php
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译指定 httpd apxs 路径(成为 httpd 模块)
--with-apxs2=/usr/local/httpd24/bin/apxs
衔接:
~]# vi /etc/httpd/httpd.conf
1:添加:(编译时这个默许已添加)
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
2:添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
3:文件最后添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
备注:vhost 也能够运用
3.2:httpd(fastcgi)与 php-fpm
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译开启模块:
--enable-fpm
衔接方法1:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
衔接方法2:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<LocationMatch ^(.*\.php)$>
ProxyPass fcgi://127.0.0.1:9000/var/www/html/
</LocationMatch>
衔接方法3:类型2的转变
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
衔接方法设置完后再添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
备注:衔接方法1 更便利在本地应用,2和3一般会应用远程 php 服务器上。
3.3:Nginx与php衔接
要点:
1:Nginx 默许支撑 fastcgi
2:php编译开启模块:
--enable-fpm
衔接:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
.......
# nginx 衔接方法
location ~ \.php$ {
# root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
四:PHP与MariaDB(mysql)衔接:
4.1:应用 MariaDB 编译(相对mysql安装的目录)
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
4.2:应用 PHP 的 mysqlnd 编译(推举应用)
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
4.3:php版本区分要点:
1:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql
2:mysqlnd 请求 php版本 >= 5.3
4:mysqlnd和php内部机制联合更紧密,是优化过的mysql驱动,建议应用。
五:测试
1.1:添加文件与内容
~]# vi /var/www/html/index.php
<?php
phpinfo();
?>
六:php多版本安装注意事项。
6.1:httpd与php
httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个须要注释。
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
httpd fastcgi:
在 vhost 虚拟机中指定不同的监听地址。
例如:
<VirtualHost *:80>
DocumentRoot "/web/a"
ServerName www.a.com
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
# 或
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>
6.2:nginx与php
指定不同的监听地址
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
七:推举博客
6.1:官网安装赞助文档:https://php.net/manual/zh/install.php
6.2:https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/
" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} php-fpm
RETVAL=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
configtest)
${phpfpm} --test
RETVAL=$?
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage:
php编译安装与配置
===========================================
官网:https://php.net/
官网下载:https://php.net/downloads.php
===========================================
一:懂得与预备
1.1:Apache(httpd) nginx 与 php 衔接方法:
httpd与php:
1:php 作为 httpd 模块
2:fastcgi(php-fpm)
3:cgi(此处不讲授)
nginx与php:
1:fastcgi(php-fpm)
1.2:PHP安装与依附:
~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
1.3:备注:
1:上面的依附根本解决所须要的依附。
2:编译安装完成后可以增减所支撑的php模块,此地方编译的模块已非常完备。
3:须要编译单个模块,查看php模块编译方法:php模块编译
4:下面编译安装的配置选项:
--prefix=/usr/local/php7 主程叙文件路径
--sysconfdir=/etc/php7 配置文件路径
--with-config-file-path=/etc/php7 php.ini 文件路径
--with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时须要指定 httpd 的 apxs 文件路径。
其他的配置可以按自己需求指定,这几个选项也能够应用默许配置。
5:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql。php5可以应用。
php5编译时参加选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)衔接
6:此处以 CentOs7 编译 php7 为示例,配合讲授php5安装的要点。
7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(制造)
编译完成后选择自己须要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
默以为php目录下的 lib 目录。
8:PHP安装与依附中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止过程。
二:php编译与配置:
2.1: httpd 模块
备注:须要事前存在httpd ,编译指定 apxs 文件地位。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.2:fastcgi php-fpm 模式
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.3:php.ini 配置文件(在源码包目录下)
~]# cp php.ini-production /etc/php7/php.ini
2.4:php 作为 httpd 模块
不须要修正 php 配置,
2.5:fastcgi php-fpm
~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
# 默许便可是本机 127.0.0.1 没必要修正。
~]# vi /etc/php7/php-fpm.d/www.conf
# 监听地址
listen = 127.0.0.1:9000
# 许可的客户端
listen.allowed_clients = 127.0.0.1
备注:php5 须要复制 php-fpm.conf.default 为 php-fpm.conf 便可。查看 php-fpm.conf 监听地址和许可的客户端。
2.6:启动与停滞
httpd模块:
重新加载 httpd 。
fastcgi:
~]# vi /etc/php7/php-fpm.conf
打开注释:(不打开注释仅能应用 killall php-fpm 关闭 php)
pid = run/php-fpm.pid
启动:
/usr/local/php7/sbin/php-fpm
立刻终止
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
killall php-fpm
平滑终止
kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
平滑重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
2.7:参加环境变量
~]# vi /etc/profile.d/web.sh
export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
2.8:CentOS 体系服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释须要打开:2.6 )
CentOS 6:
~]# vi /etc/rc.d/init.d/php-fpm
~]# chmod +x /etc/rc.d/init.d/php-fpm
--------------------------file start---------------------------------
#! /bin/sh
# chkconfig: - 84 16
# description: PHP FastCGI Process Manager
# Source function library.
. /etc/init.d/functions
# Check that networking is up.
. /etc/sysconfig/network
# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
. /etc/sysconfig/php-fpm
fi
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="php-fpm"
# 可依据版本不同修正 phpfpm pidfile lockfile变量。其他地方不用修正。
phpfpm="/usr/local/php7/sbin/php-fpm"
pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
start () {
echo -n $"Starting $prog: "
dir=$(dirname ${pidfile})
[ -d $dir ] || mkdir $dir
daemon --pidfile ${pidfile} ${phpfpm}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} php-fpm
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
reload () {
echo -n $"Reloading $prog: "
if ! ${phpfpm} --test ; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $prog due to configuration syntax error"
else
killproc -p ${pidfile} php-fpm -USR2
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} php-fpm
RETVAL=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
configtest)
${phpfpm} --test
RETVAL=$?
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
RETVAL=2
;;
esac
exit $RETVAL
--------------------------file end---------------------------------
~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
CentOS 7:
~]# vim /usr/lib/systemd/system/php-fpm.service
--------------------------file start---------------------------------
[Unit]
Description=php-fpm
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php7/var/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
--------------------------file end---------------------------------
~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
2.8:体系启动服务
CentOS 6:
参加 chkconfig 管理:
~]# chkconfig --add php-fpm
开机启动:
~]# chkconfig --level 345 php-fpm on
开机不启动:
~]# chkconfig php-fpm off
查看开机是不是启动
~]# chkconfig --list php-fpm
CentOS 7:
开机启动:
~]# systemctl enable php-fpm.service
开机不启动:
~]# systemctl disable php-fpm.service
2.9:参加 man 文档
CentOS 6:
~]# vim /etc/man.config
CentOS 7:
~]# vi /etc/man_db.conf
写入:
MANPATH /usr/local/php7/php/man
备注:然后便可以够应用 man 命令查看
三:httpd nginx 与 php 衔接
3.1:httpd 模块 php
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译指定 httpd apxs 路径(成为 httpd 模块)
--with-apxs2=/usr/local/httpd24/bin/apxs
衔接:
~]# vi /etc/httpd/httpd.conf
1:添加:(编译时这个默许已添加)
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
2:添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
3:文件最后添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
备注:vhost 也能够运用
3.2:httpd(fastcgi)与 php-fpm
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译开启模块:
--enable-fpm
衔接方法1:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
衔接方法2:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<LocationMatch ^(.*\.php)$>
ProxyPass fcgi://127.0.0.1:9000/var/www/html/
</LocationMatch>
衔接方法3:类型2的转变
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
衔接方法设置完后再添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
备注:衔接方法1 更便利在本地应用,2和3一般会应用远程 php 服务器上。
3.3:Nginx与php衔接
要点:
1:Nginx 默许支撑 fastcgi
2:php编译开启模块:
--enable-fpm
衔接:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
.......
# nginx 衔接方法
location ~ \.php$ {
# root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
四:PHP与MariaDB(mysql)衔接:
4.1:应用 MariaDB 编译(相对mysql安装的目录)
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
4.2:应用 PHP 的 mysqlnd 编译(推举应用)
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
4.3:php版本区分要点:
1:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql
2:mysqlnd 请求 php版本 >= 5.3
4:mysqlnd和php内部机制联合更紧密,是优化过的mysql驱动,建议应用。
五:测试
1.1:添加文件与内容
~]# vi /var/www/html/index.php
<?php
phpinfo();
?>
六:php多版本安装注意事项。
6.1:httpd与php
httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个须要注释。
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
httpd fastcgi:
在 vhost 虚拟机中指定不同的监听地址。
例如:
<VirtualHost *:80>
DocumentRoot "/web/a"
ServerName www.a.com
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
# 或
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>
6.2:nginx与php
指定不同的监听地址
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
七:推举博客
6.1:官网安装赞助文档:https://php.net/manual/zh/install.php
6.2:https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/
{start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}" RETVAL=2 ;; esac exit $RETVAL --------------------------file end--------------------------------- ~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest} CentOS 7: ~]# vim /usr/lib/systemd/system/php-fpm.service --------------------------file start--------------------------------- [Unit] Description=php-fpm After=syslog.target network.target [Service] Type=forking PIDFile=/usr/local/php7/var/run/php-fpm.pid ExecStart=/usr/local/php7/sbin/php-fpm ExecReload=/bin/kill -USR2 $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target --------------------------file end--------------------------------- ~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service 2.8:体系启动服务 CentOS 6: 参加 chkconfig 管理: ~]# chkconfig --add php-fpm 开机启动: ~]# chkconfig --level 345 php-fpm on 开机不启动: ~]# chkconfig php-fpm off 查看开机是不是启动 ~]# chkconfig --list php-fpm CentOS 7: 开机启动: ~]# systemctl enable php-fpm.service 开机不启动: ~]# systemctl disable php-fpm.service 2.9:参加 man 文档 CentOS 6: ~]# vim /etc/man.config CentOS 7: ~]# vi /etc/man_db.conf 写入: MANPATH /usr/local/php7/php/man 备注:然后便可以够应用 man 命令查看 三:httpd nginx 与 php 衔接 3.1:httpd 模块 php 要点: 1:httpd开启模块: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 2:php编译指定 httpd apxs 路径(成为 httpd 模块) --with-apxs2=/usr/local/httpd24/bin/apxs 衔接: ~]# vi /etc/httpd/httpd.conf 1:添加:(编译时这个默许已添加) LoadModule php7_module modules/libphp7.so #LoadModule php5_module modules/libphp5.so 2:添加 index.php: <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> 3:文件最后添加: <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> 备注:vhost 也能够运用 3.2:httpd(fastcgi)与 php-fpm 要点: 1:httpd开启模块: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 2:php编译开启模块: --enable-fpm 衔接方法1: ~]# vi /etc/httpd/httpd.conf 最后添加: # On:正向代理(默许) Off:反向代理(此处建议应用) ProxyRequests Off <FilesMatch \.php$> SetHandler proxy:fcgi://127.0.0.1:9000 </FilesMatch> 衔接方法2: ~]# vi /etc/httpd/httpd.conf 最后添加: # On:正向代理(默许) Off:反向代理(此处建议应用) ProxyRequests Off <LocationMatch ^(.*\.php)$> ProxyPass fcgi://127.0.0.1:9000/var/www/html/ </LocationMatch> 衔接方法3:类型2的转变 ~]# vi /etc/httpd/httpd.conf 最后添加: # On:正向代理(默许) Off:反向代理(此处建议应用) ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/
php编译安装与配置
===========================================
官网:https://php.net/
官网下载:https://php.net/downloads.php
===========================================
一:懂得与预备
1.1:Apache(httpd) nginx 与 php 衔接方法:
httpd与php:
1:php 作为 httpd 模块
2:fastcgi(php-fpm)
3:cgi(此处不讲授)
nginx与php:
1:fastcgi(php-fpm)
1.2:PHP安装与依附:
~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
1.3:备注:
1:上面的依附根本解决所须要的依附。
2:编译安装完成后可以增减所支撑的php模块,此地方编译的模块已非常完备。
3:须要编译单个模块,查看php模块编译方法:php模块编译
4:下面编译安装的配置选项:
--prefix=/usr/local/php7 主程叙文件路径
--sysconfdir=/etc/php7 配置文件路径
--with-config-file-path=/etc/php7 php.ini 文件路径
--with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时须要指定 httpd 的 apxs 文件路径。
其他的配置可以按自己需求指定,这几个选项也能够应用默许配置。
5:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql。php5可以应用。
php5编译时参加选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)衔接
6:此处以 CentOs7 编译 php7 为示例,配合讲授php5安装的要点。
7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(制造)
编译完成后选择自己须要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
默以为php目录下的 lib 目录。
8:PHP安装与依附中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止过程。
二:php编译与配置:
2.1: httpd 模块
备注:须要事前存在httpd ,编译指定 apxs 文件地位。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.2:fastcgi php-fpm 模式
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.3:php.ini 配置文件(在源码包目录下)
~]# cp php.ini-production /etc/php7/php.ini
2.4:php 作为 httpd 模块
不须要修正 php 配置,
2.5:fastcgi php-fpm
~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
# 默许便可是本机 127.0.0.1 没必要修正。
~]# vi /etc/php7/php-fpm.d/www.conf
# 监听地址
listen = 127.0.0.1:9000
# 许可的客户端
listen.allowed_clients = 127.0.0.1
备注:php5 须要复制 php-fpm.conf.default 为 php-fpm.conf 便可。查看 php-fpm.conf 监听地址和许可的客户端。
2.6:启动与停滞
httpd模块:
重新加载 httpd 。
fastcgi:
~]# vi /etc/php7/php-fpm.conf
打开注释:(不打开注释仅能应用 killall php-fpm 关闭 php)
pid = run/php-fpm.pid
启动:
/usr/local/php7/sbin/php-fpm
立刻终止
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
killall php-fpm
平滑终止
kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
平滑重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
2.7:参加环境变量
~]# vi /etc/profile.d/web.sh
export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
2.8:CentOS 体系服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释须要打开:2.6 )
CentOS 6:
~]# vi /etc/rc.d/init.d/php-fpm
~]# chmod +x /etc/rc.d/init.d/php-fpm
--------------------------file start---------------------------------
#! /bin/sh
# chkconfig: - 84 16
# description: PHP FastCGI Process Manager
# Source function library.
. /etc/init.d/functions
# Check that networking is up.
. /etc/sysconfig/network
# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
. /etc/sysconfig/php-fpm
fi
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="php-fpm"
# 可依据版本不同修正 phpfpm pidfile lockfile变量。其他地方不用修正。
phpfpm="/usr/local/php7/sbin/php-fpm"
pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
start () {
echo -n $"Starting $prog: "
dir=$(dirname ${pidfile})
[ -d $dir ] || mkdir $dir
daemon --pidfile ${pidfile} ${phpfpm}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} php-fpm
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
reload () {
echo -n $"Reloading $prog: "
if ! ${phpfpm} --test ; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $prog due to configuration syntax error"
else
killproc -p ${pidfile} php-fpm -USR2
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} php-fpm
RETVAL=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
configtest)
${phpfpm} --test
RETVAL=$?
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
RETVAL=2
;;
esac
exit $RETVAL
--------------------------file end---------------------------------
~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
CentOS 7:
~]# vim /usr/lib/systemd/system/php-fpm.service
--------------------------file start---------------------------------
[Unit]
Description=php-fpm
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php7/var/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
--------------------------file end---------------------------------
~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
2.8:体系启动服务
CentOS 6:
参加 chkconfig 管理:
~]# chkconfig --add php-fpm
开机启动:
~]# chkconfig --level 345 php-fpm on
开机不启动:
~]# chkconfig php-fpm off
查看开机是不是启动
~]# chkconfig --list php-fpm
CentOS 7:
开机启动:
~]# systemctl enable php-fpm.service
开机不启动:
~]# systemctl disable php-fpm.service
2.9:参加 man 文档
CentOS 6:
~]# vim /etc/man.config
CentOS 7:
~]# vi /etc/man_db.conf
写入:
MANPATH /usr/local/php7/php/man
备注:然后便可以够应用 man 命令查看
三:httpd nginx 与 php 衔接
3.1:httpd 模块 php
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译指定 httpd apxs 路径(成为 httpd 模块)
--with-apxs2=/usr/local/httpd24/bin/apxs
衔接:
~]# vi /etc/httpd/httpd.conf
1:添加:(编译时这个默许已添加)
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
2:添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
3:文件最后添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
备注:vhost 也能够运用
3.2:httpd(fastcgi)与 php-fpm
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译开启模块:
--enable-fpm
衔接方法1:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
衔接方法2:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<LocationMatch ^(.*\.php)$>
ProxyPass fcgi://127.0.0.1:9000/var/www/html/
</LocationMatch>
衔接方法3:类型2的转变
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
衔接方法设置完后再添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
备注:衔接方法1 更便利在本地应用,2和3一般会应用远程 php 服务器上。
3.3:Nginx与php衔接
要点:
1:Nginx 默许支撑 fastcgi
2:php编译开启模块:
--enable-fpm
衔接:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
.......
# nginx 衔接方法
location ~ \.php$ {
# root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
四:PHP与MariaDB(mysql)衔接:
4.1:应用 MariaDB 编译(相对mysql安装的目录)
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
4.2:应用 PHP 的 mysqlnd 编译(推举应用)
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
4.3:php版本区分要点:
1:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql
2:mysqlnd 请求 php版本 >= 5.3
4:mysqlnd和php内部机制联合更紧密,是优化过的mysql驱动,建议应用。
五:测试
1.1:添加文件与内容
~]# vi /var/www/html/index.php
<?php
phpinfo();
?>
六:php多版本安装注意事项。
6.1:httpd与php
httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个须要注释。
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
httpd fastcgi:
在 vhost 虚拟机中指定不同的监听地址。
例如:
<VirtualHost *:80>
DocumentRoot "/web/a"
ServerName www.a.com
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
# 或
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>
6.2:nginx与php
指定不同的监听地址
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
七:推举博客
6.1:官网安装赞助文档:https://php.net/manual/zh/install.php
6.2:https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/
衔接方法设置完后再添加 index.php: <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> 备注:衔接方法1 更便利在本地应用,2和3一般会应用远程 php 服务器上。 3.3:Nginx与php衔接 要点: 1:Nginx 默许支撑 fastcgi 2:php编译开启模块: --enable-fpm 衔接: server { listen 80; server_name localhost; root /var/www/html; index index.php index.html; ....... # nginx 衔接方法 location ~ \.php$ { # root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。 fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 四:PHP与MariaDB(mysql)衔接: 4.1:应用 MariaDB 编译(相对mysql安装的目录) --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql 4.2:应用 PHP 的 mysqlnd 编译(推举应用) --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 4.3:php版本区分要点: 1:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql 2:mysqlnd 请求 php版本 >= 5.3 4:mysqlnd和php内部机制联合更紧密,是优化过的mysql驱动,建议应用。 五:测试 1.1:添加文件与内容 ~]# vi /var/www/html/index.php <?php phpinfo(); ?> 六:php多版本安装注意事项。 6.1:httpd与php httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个须要注释。 LoadModule php7_module modules/libphp7.so #LoadModule php5_module modules/libphp5.so httpd fastcgi: 在 vhost 虚拟机中指定不同的监听地址。 例如: <VirtualHost *:80> DocumentRoot "/web/a" ServerName www.a.com <FilesMatch \.php$> SetHandler proxy:fcgi://127.0.0.1:9000 </FilesMatch> # 或 ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/
php编译安装与配置
===========================================
官网:https://php.net/
官网下载:https://php.net/downloads.php
===========================================
一:懂得与预备
1.1:Apache(httpd) nginx 与 php 衔接方法:
httpd与php:
1:php 作为 httpd 模块
2:fastcgi(php-fpm)
3:cgi(此处不讲授)
nginx与php:
1:fastcgi(php-fpm)
1.2:PHP安装与依附:
~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
1.3:备注:
1:上面的依附根本解决所须要的依附。
2:编译安装完成后可以增减所支撑的php模块,此地方编译的模块已非常完备。
3:须要编译单个模块,查看php模块编译方法:php模块编译
4:下面编译安装的配置选项:
--prefix=/usr/local/php7 主程叙文件路径
--sysconfdir=/etc/php7 配置文件路径
--with-config-file-path=/etc/php7 php.ini 文件路径
--with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时须要指定 httpd 的 apxs 文件路径。
其他的配置可以按自己需求指定,这几个选项也能够应用默许配置。
5:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql。php5可以应用。
php5编译时参加选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)衔接
6:此处以 CentOs7 编译 php7 为示例,配合讲授php5安装的要点。
7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(制造)
编译完成后选择自己须要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
默以为php目录下的 lib 目录。
8:PHP安装与依附中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止过程。
二:php编译与配置:
2.1: httpd 模块
备注:须要事前存在httpd ,编译指定 apxs 文件地位。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.2:fastcgi php-fpm 模式
php7:
~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
php5.6:(仅增长了选项 --with-mysql=mysqlnd)
~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
2.3:php.ini 配置文件(在源码包目录下)
~]# cp php.ini-production /etc/php7/php.ini
2.4:php 作为 httpd 模块
不须要修正 php 配置,
2.5:fastcgi php-fpm
~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
# 默许便可是本机 127.0.0.1 没必要修正。
~]# vi /etc/php7/php-fpm.d/www.conf
# 监听地址
listen = 127.0.0.1:9000
# 许可的客户端
listen.allowed_clients = 127.0.0.1
备注:php5 须要复制 php-fpm.conf.default 为 php-fpm.conf 便可。查看 php-fpm.conf 监听地址和许可的客户端。
2.6:启动与停滞
httpd模块:
重新加载 httpd 。
fastcgi:
~]# vi /etc/php7/php-fpm.conf
打开注释:(不打开注释仅能应用 killall php-fpm 关闭 php)
pid = run/php-fpm.pid
启动:
/usr/local/php7/sbin/php-fpm
立刻终止
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
killall php-fpm
平滑终止
kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
平滑重启
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
2.7:参加环境变量
~]# vi /etc/profile.d/web.sh
export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
2.8:CentOS 体系服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释须要打开:2.6 )
CentOS 6:
~]# vi /etc/rc.d/init.d/php-fpm
~]# chmod +x /etc/rc.d/init.d/php-fpm
--------------------------file start---------------------------------
#! /bin/sh
# chkconfig: - 84 16
# description: PHP FastCGI Process Manager
# Source function library.
. /etc/init.d/functions
# Check that networking is up.
. /etc/sysconfig/network
# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
. /etc/sysconfig/php-fpm
fi
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="php-fpm"
# 可依据版本不同修正 phpfpm pidfile lockfile变量。其他地方不用修正。
phpfpm="/usr/local/php7/sbin/php-fpm"
pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
start () {
echo -n $"Starting $prog: "
dir=$(dirname ${pidfile})
[ -d $dir ] || mkdir $dir
daemon --pidfile ${pidfile} ${phpfpm}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} php-fpm
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
reload () {
echo -n $"Reloading $prog: "
if ! ${phpfpm} --test ; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $prog due to configuration syntax error"
else
killproc -p ${pidfile} php-fpm -USR2
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} php-fpm
RETVAL=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
configtest)
${phpfpm} --test
RETVAL=$?
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
RETVAL=2
;;
esac
exit $RETVAL
--------------------------file end---------------------------------
~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
CentOS 7:
~]# vim /usr/lib/systemd/system/php-fpm.service
--------------------------file start---------------------------------
[Unit]
Description=php-fpm
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php7/var/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
--------------------------file end---------------------------------
~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
2.8:体系启动服务
CentOS 6:
参加 chkconfig 管理:
~]# chkconfig --add php-fpm
开机启动:
~]# chkconfig --level 345 php-fpm on
开机不启动:
~]# chkconfig php-fpm off
查看开机是不是启动
~]# chkconfig --list php-fpm
CentOS 7:
开机启动:
~]# systemctl enable php-fpm.service
开机不启动:
~]# systemctl disable php-fpm.service
2.9:参加 man 文档
CentOS 6:
~]# vim /etc/man.config
CentOS 7:
~]# vi /etc/man_db.conf
写入:
MANPATH /usr/local/php7/php/man
备注:然后便可以够应用 man 命令查看
三:httpd nginx 与 php 衔接
3.1:httpd 模块 php
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译指定 httpd apxs 路径(成为 httpd 模块)
--with-apxs2=/usr/local/httpd24/bin/apxs
衔接:
~]# vi /etc/httpd/httpd.conf
1:添加:(编译时这个默许已添加)
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
2:添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
3:文件最后添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
备注:vhost 也能够运用
3.2:httpd(fastcgi)与 php-fpm
要点:
1:httpd开启模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2:php编译开启模块:
--enable-fpm
衔接方法1:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
衔接方法2:
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
<LocationMatch ^(.*\.php)$>
ProxyPass fcgi://127.0.0.1:9000/var/www/html/
</LocationMatch>
衔接方法3:类型2的转变
~]# vi /etc/httpd/httpd.conf
最后添加:
# On:正向代理(默许) Off:反向代理(此处建议应用)
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
衔接方法设置完后再添加 index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
备注:衔接方法1 更便利在本地应用,2和3一般会应用远程 php 服务器上。
3.3:Nginx与php衔接
要点:
1:Nginx 默许支撑 fastcgi
2:php编译开启模块:
--enable-fpm
衔接:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
.......
# nginx 衔接方法
location ~ \.php$ {
# root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
四:PHP与MariaDB(mysql)衔接:
4.1:应用 MariaDB 编译(相对mysql安装的目录)
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
4.2:应用 PHP 的 mysqlnd 编译(推举应用)
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
4.3:php版本区分要点:
1:php7移除 mysql 扩大,php7仅能是用 mysqli 和 pdo_mysql
2:mysqlnd 请求 php版本 >= 5.3
4:mysqlnd和php内部机制联合更紧密,是优化过的mysql驱动,建议应用。
五:测试
1.1:添加文件与内容
~]# vi /var/www/html/index.php
<?php
phpinfo();
?>
六:php多版本安装注意事项。
6.1:httpd与php
httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个须要注释。
LoadModule php7_module modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
httpd fastcgi:
在 vhost 虚拟机中指定不同的监听地址。
例如:
<VirtualHost *:80>
DocumentRoot "/web/a"
ServerName www.a.com
<FilesMatch \.php$>
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
# 或
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>
6.2:nginx与php
指定不同的监听地址
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
七:推举博客
6.1:官网安装赞助文档:https://php.net/manual/zh/install.php
6.2:https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/
</VirtualHost> 6.2:nginx与php 指定不同的监听地址 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; } 七:推举博客 6.1:官网安装赞助文档:https://php.net/manual/zh/install.php 6.2:https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/ php编译安装与配置 =======================================