分类:笔记 日期:2020-08-18 作者:caocaofff 浏览:1016
请不要一股脑的复制粘贴,理解过程和方法才是最重要的
安装编译环境、依赖,解决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 命令:
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
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
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
cd php-7.2.33/ext/fileinfo
phpize
./configure
make && make install
vim /usr/local/php/etc/php.ini
extension=fileinfo.so
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服务
git clone https://github.com/krakjoe/pthreads
cd pthreads
phpize
./configure
make && make install
修改php.ini加载扩展
用命令php --ini
找到对应版本的 cli/php.ini 位置,追加配置
extension=pthreads.so
安装依赖
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
到这里下载源码: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 协议》,转载必须注明作者和本文链接