php5.6中php-fpm如何编译安装

发布时间:2021-12-17 11:34:20 作者:小新
来源:亿速云 阅读:273
# PHP5.6中php-fpm如何编译安装

## 前言

PHP-FPM(FastCGI Process Manager)是PHP的FastCGI实现,它提供了更好的进程管理功能,尤其适合高负载环境下的PHP应用。虽然PHP5.6已经停止官方支持,但在某些特定场景下(如遗留系统维护),仍可能需要手动编译安装。本文将详细介绍从源码编译PHP5.6及php-fpm的全过程。

---

## 一、环境准备

### 1.1 系统要求
- Linux操作系统(本文以CentOS 7为例)
- root或sudo权限
- 基础开发工具链
- 至少1GB可用磁盘空间
- 推荐内存2GB以上

### 1.2 安装依赖包
```bash
yum groupinstall "Development Tools"
yum install epel-release
yum install -y \
    libxml2-devel \
    openssl-devel \
    curl-devel \
    libjpeg-devel \
    libpng-devel \
    freetype-devel \
    libmcrypt-devel \
    libtool-ltdl-devel \
    bison \
    re2c \
    libicu-devel \
    libxslt-devel \
    gcc-c++ \
    autoconf

1.3 创建专用用户

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

二、下载源码包

2.1 获取PHP5.6源码

官方已归档的下载地址:

wget https://www.php.net/distributions/php-5.6.40.tar.gz

2.2 验证文件完整性

echo "1369a51eace1e15a227dc9f9cc9e1475d7f5803e  php-5.6.40.tar.gz" | sha1sum -c -

2.3 解压源码包

tar zxvf php-5.6.40.tar.gz
cd php-5.6.40

三、编译配置

3.1 基础配置选项

./configure \
    --prefix=/usr/local/php56 \
    --with-config-file-path=/usr/local/php56/etc \
    --enable-fpm \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-shmop \
    --enable-sysvsem \
    --enable-sockets \
    --with-curl \
    --with-openssl \
    --with-mcrypt \
    --with-mhash \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --enable-opcache \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd

3.2 重要参数说明

参数 作用
--enable-fpm 启用php-fpm支持
--with-fpm-* 设置php-fpm运行用户
--enable-opcache 启用Zend Opcache加速
mysqlnd 使用PHP内置MySQL驱动

3.3 处理常见错误

若出现依赖缺失错误:

# 示例:解决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

四、编译安装

4.1 执行编译

make -j $(nproc)

4.2 安装到系统

make install

4.3 验证安装

/usr/local/php56/bin/php -v
# 应输出类似:PHP 5.6.40 (cli)...

五、配置php-fpm

5.1 初始化配置文件

cp php.ini-production /usr/local/php56/etc/php.ini
cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf

5.2 修改php-fpm配置

; /usr/local/php56/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log

[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = www
group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

5.3 创建日志目录

mkdir -p /usr/local/php56/var/log
chown -R www:www /usr/local/php56/var

六、系统集成

6.1 创建systemd服务

cat > /etc/systemd/system/php-fpm56.service <<EOF
[Unit]
Description=PHP 5.6 FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/usr/local/php56/var/run/php-fpm.pid
ExecStart=/usr/local/php56/sbin/php-fpm
ExecReload=/bin/kill -USR2 \$MNPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

6.2 管理服务

systemctl daemon-reload
systemctl start php-fpm56
systemctl enable php-fpm56

6.3 环境变量设置

echo 'export PATH=/usr/local/php56/bin:$PATH' > /etc/profile.d/php56.sh
source /etc/profile.d/php56.sh

七、测试验证

7.1 创建测试脚本

cat > /var/www/html/test.php <<EOF
<?php
phpinfo();
EOF

7.2 配置Nginx集成

server {
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index index.php;
        include        fastcgi_params;
    }
}

7.3 常见问题排查

# 查看错误日志
tail -f /usr/local/php56/var/log/php-fpm.log

# 检查端口监听
netstat -tulnp | grep 9000

八、安全加固建议

  1. 权限控制

    chown -R root:www /usr/local/php56
    find /usr/local/php56 -type d -exec chmod 755 {} \;
    find /usr/local/php56 -type f -exec chmod 644 {} \;
    
  2. php.ini安全设置

    expose_php = Off
    disable_functions = exec,passthru,shell_exec,system
    cgi.fix_pathinfo=0
    
  3. 进程隔离

    ; php-fpm.conf
    listen.mode = 0660
    security.limit_extensions = .php
    

九、性能优化建议

  1. Opcache配置

    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    
  2. 进程管理优化

    pm = dynamic
    pm.max_children = $(free -m | awk '/Mem:/ {print int($2*0.8/100)}')
    pm.process_idle_timeout = 10s
    
  3. TCP优化

    echo 'net.core.somaxconn = 65535' >> /etc/sysctl.conf
    sysctl -p
    

十、版本维护说明

  1. 手动升级流程

    systemctl stop php-fpm56
    make clean
    git pull origin PHP-5.6
    ./buildconf --force
    
  2. 备份策略

    # 配置文件备份
    tar czvf php56-backup-$(date +%Y%m%d).tar.gz \
       /usr/local/php56/etc \
       /etc/systemd/system/php-fpm56.service
    

结语

通过本文详细的步骤,您已经成功在系统中编译安装了PHP5.6与php-fpm。虽然PHP5.6已不再接收安全更新,但在特定环境下仍可通过合理的配置和安全加固继续使用。建议在条件允许时尽快升级到受支持的PHP版本。

注意:生产环境使用EOL软件存在安全风险,建议仅用于测试或隔离环境。 “`

推荐阅读:
  1. 编译安装LAMP(php-fpm)步骤详解
  2. CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:KVM虚拟机扁平化网络架构设计的示例分析

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》