在Ubuntu上用编译方式安装php7.2,配置fpm,并添加OPCache、yac、fileinfo、redis、pthreads、swoole、swoole_async扩展

分类:笔记 日期:2020-08-18 作者:caocaofff 浏览:991

请不要一股脑的复制粘贴,理解过程和方法才是最重要的

编译php7.2

安装编译环境、依赖,解决php7 安装扩展报错

apt-get install -y gcc make curl libbz2-dev libfreetype6-dev libzip-dev build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libssl-dev libxml2-dev rcs zlib1g-dev libmcrypt-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libwebp-dev pkg-config automake

建立php文件夹

mkdir php
cd php

下载源码包

wget https://www.php.net/distributions/php-7.2.33.tar.bz2
tar -jxf php-7.2.33.tar.bz2
cd php-7.2.33/

在编译前,需要对PHP进行配置,以供其生成对应的makefile文件

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-fileinfo --enable-maintainer-zts --enable-opcache

编译和安装

make
make install

执行完成后,PHP将会被安装到/usr/local/php/
可以使用如下指令来输出PHP的版本,来验证是否正确安装

/usr/local/php/bin/php -v

编译安装后的目录并不会有现成的php.ini,需要手动复制过去。
在解压出来的源代码目录中,有供开发环境使用的php.ini-development和供生产环境使用的php.ini-production。
输入命令来复制(以生产环境为例)

cp php.ini-production /usr/local/php/etc/php.ini

配置环境变量

如果要在命令行里面直接通过 php 之类的命令直接运行 php ,我们需要将 bin 目录加入到系统的环境变量中,方法是:

vim /etc/profile

在文件最末尾加上:

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

保存以后,执行 source /etc/profile 使环境变量生效。测试一下:

php -v

配置 PHP-FPM

增加 php-fpm 命令:

cp sapi/fpm/init.d.php-fpm /usr/local/bin/php-fpm
chmod +x /usr/local/bin/php-fpm

添加组、用户

groupadd www
useradd -s /sbin/nologin -g www www

站点目录的权限

chown -R www:www /data/www/
chmod -R 0755 /data/www/

复制配置文件

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

编辑www.conf内容

vim /usr/local/php/etc/php-fpm.d/www.conf

[www]
user = www
group = www
listen = 127.0.0.1:9000

CLI模式下,php会优先读取php-cli.ini,如果没找到会使用php.ini

cp /usr/local/php/etc/php.ini /usr/local/php/etc/php-cli.ini

删除extension=pthreads.so

vim /usr/local/php/etc/php.ini

这样CLI模式下php-cli.ini生效,而php-fpm不会读php-cli.ini
启动服务

php-fpm start

做成服务:(systemd 管理服务)

vim /etc/systemd/system/php-fpm.service

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/php-fpm start
ExecReload=/usr/local/bin/php-fpm reload
ExecStop=/usr/local/bin/php-fpm stop
[Install]
WantedBy=multi-user.target

systemctl enable php-fpm.service

开启OPCache

vim /usr/local/php/etc/php.ini

将下面注释的内容都开放,并修改合适的参数
zend_extension=opcache.so
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.file_cache=/tmp

安装yac扩展

git clone https://github.com/laruence/yac
cd yac
phpize
./configure
make && make install
#修改php.ini 
vim /usr/local/php/etc/php.ini 

加一句
extension=yac.so

安装fileinfo

cd php-7.2.33/ext/fileinfo
phpize
./configure
make && make install
vim /usr/local/php/etc/php.ini 

extension=fileinfo.so

安装php redis驱动

wget https://github.com/phpredis/phpredis/archive/5.2.1.tar.gz
tar -zxf 5.2.1.tar.gz
cd phpredis-5.2.1
phpize
./configure
make && make install

vim /usr/local/php/etc/php.ini

extension=redis.so

需要重启php-fpm服务

安装pthreads

git clone https://github.com/krakjoe/pthreads
cd pthreads
phpize
./configure
make && make install

修改php.ini加载扩展
用命令php --ini 找到对应版本的 cli/php.ini 位置,追加配置
extension=pthreads.so

安装swoole(版本号必须跟async一致)

安装依赖

apt-get install m4 autoconf

到这里找版本:https://github.com/swoole/swoole-src/releases

wget https://github.com/swoole/swoole-src/archive/v4.4.16.tar.gz
tar -zxf v4.4.16.tar.gz
cd swoole-src-4.4.16
phpize
./configure --prefix=/usr/local/swoole/  --enable-openssl
make && make install

1.8.7或更高版本不再需要设置--enable-async-mysql和--enable-async-httpclient,async_mysql和async_httpclient改为内置 4.0.1或更高版本后不再需要设置--enable-coroutine

安装swoole_async(版本号必须跟swoole一致)

到这里下载源码:https://github.com/swoole/ext-async/releases

wget https://github.com/swoole/ext-async/archive/v4.4.16.tar.gz
tar -zxf v4.4.16.tar.gz
cd ext-async-4.4.16
phpize
./configure
make && make install

编译将生成swoole_async.so新扩展
此扩展依赖swoole.so扩展,必须先加载swoole.so再加载swoole_async.so
修改php.ini加载扩展
用命令php --ini 找到对应版本的 cli/php.ini 位置,追加配置
extension=swoole.so
extension=swoole_async.so
可以通过php -m看到swoole和swoole_async两个扩展
查看swoole详情

php --ri swoole




CC版权: 本篇博文采用《CC 协议》,转载必须注明作者和本文链接

评论 (暂无评论)

发表评论

昵称:  
邮箱:  
网址: