CentOS6 最高可安装的版本是 PHP 7.3.23

 

安装依赖
yum install -y openssl-devel libxml2-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel recode-devel libicu-devel libzip-devel sqlite-devel oniguruma-devel gcc autoconf automake libtool freetype* libjpeg*

如果oniguruma和oniguruma-devel无法安装,则手动安装
CentOS 7/8 安装 oniguruma和oniguruma-devel 。可解决 configure: error: Package requirements (oniguruma) were not met: Package 'oniguruma', required by 'virtual:world', not found 问题。
 
CentOS 7 安装
yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
 
备用下载:
 
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
 
CentOS 8 安装
yum config-manager --set-enabled PowerTools
yum -y install oniguruma oniguruma-devel

 

安装libiconv

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz

tar -zxvf libiconv-1.16.tar.gz

cd libiconv-1.16

./configure --prefix=/usr/local/libiconv

make

make install


下载源码包并编译安装
wget https://www.php.net/distributions/php-7.4.33.tar.gz

解压
tar -zxvf php-7.4.33.tar.gz

进入目录
cd php-7.4.33

配置
./configure --prefix=/usr/local/php --enable-opcache --enable-pcntl --enable-fileinfo --enable-posix --enable-bcmath --with-pdo_mysql --with-config-file-path=/usr/local/php/etc --with-curl --enable-fpm  --enable-gd --with-iconv=/usr/local/libiconv --enable-mbstring --enable-exif --with-mysqli=mysqlnd --with-openssl --enable-static --enable-sockets --enable-inline-optimization --with-zlib --with-zip --disable-ipv6 --disable-fileinfo --disable-debug --with-freetype=/usr/include/freetype2/ --with-jpeg=/usr/include

--enable是启用PHP内核自带的扩展

--with是启用非内核自带的扩展,需要使用=号指定扩展所在的目录,如果没有指定则默认在ext目录


编译安装
make && make install

拷贝配置文件
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

拷贝执行文件
cp sapi/fpm/php-fpm /usr/local/bin
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

添加权限
chmod +x /etc/init.d/php-fpm

添加执行文件到环境变量
vi /etc/profile 在最后加上,如果有其他目录,就用:号分割

PATH=$PATH:/usr/local/php/bin
export PATH

执行命令
export PATH=$PATH:/usr/local/php/bin

执行命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

链接php到可执行目录
ln -s /usr/local/php/bin/php /usr/bin/php


安装PECL(php扩展库管理工具),以便后面后可以使用pecl安装php扩展(redis、MongoDB、apcu等)

wget http://pear.php.net/go-pear.phar
php go-pear.phar

安装apcu扩展

pecl install apcu

/usr/local/php/etc/php.ini 配置文件,添加

extension=apcu.so
[apcu]
apc.enabled=1
apc.enable_cli=1
apc.shm_size=32M

 

安装redis扩展

pecl install redis

/usr/local/php/etc/php.ini 配置文件,添加

extension=redis.so

 

如果报错PHP Warning:  PHP Startup: Unable to load dynamic library 'redis.so' ...  undefined symbol: php_json_decode_ex,这是和json扩展加载顺序冲突导致报错

将php.ini里加入extension=redis.so删除,进入PHP配置附加扫描路径,正常是 /usr/local/php/conf.d文件夹(具体可以通过 php --ini 命令查询),创建redis.ini,写入配置

;redis
extension=redis.so

 

安装event扩展

pecl install event

/usr/local/php/etc/php.ini 配置文件,添加

extension=event.so

 

修改PHP-FPM的运行用户,统一为www

添加用户和用户组

useradd www -s /sbin/nologin -M

修改/usr/local/php/etc/php-fpm.d/www.conf,假设本机网卡IP是192.169.0.10,另外一台Nginx主机的网卡IP是192.159.0.11:

user = www
group = www
listen = 127.0.0.1:9000,192.169.0.10:9000 # fpm 监听端口(本机网卡IP),多个IP逗号分隔。可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’
listen.allowed_clients = 127.0.0.1,192.169.0.10,192.159.0.11 # 允许访问 FastCGI 进程的 IP(本机IP或其他主机IP),多个IP逗号分隔。如果需要其他主机也能访问,除这里需要写入其他主机IP外,上面的 listen 配置里面也必须有本机网卡IP,不能只有127.0.0.1的回环网卡地址,因为其他主机是无法访问本机的回环地址的。


开启服务


systemctl start php-fpm

 

如果之前安装了其他版本的php,可能系统中注册的php-fpm服务是其他版本的,可以先 systemctl disable php-fpm,再 systemctl enable php-fpm 重新注册

设置开机自启动


systemctl enable php-fpm #自动启动

systemctl daemon-reload #保存系统启动配置文件

systemctl is-enabled php-fpm #查看配置是否生效

 

安装PHP源码包自带扩展

比如安装gmp扩展,转到扩展目录

cd php-7.4.33/ext/gmp

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

然后到php.ini文件中启用扩展

extension = gmp

php -m 查看扩展是否安装成功

systemctl restart php-fpm 重启服务

 

如果 phpize 时报错,configure.ac:3: error: Autoconf version 2.68 or higher is required,则需要安装新版本的 autoconf

wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr/
make && make install

 

Nginx + PHP-FPM 参数优化、性能监视和问题排查

posted on 2021-04-09 22:48  lbnnbs  阅读(611)  评论(0编辑  收藏  举报