凌峰创科服务平台

Linux服务器如何配置PHP环境?

在Linux服务器上配置PHP环境是搭建动态网站或应用程序的基础步骤,通常涉及安装PHP、配置PHP模块、优化性能以及与Web服务器(如Apache或Nginx)的集成,以下将详细讲解整个配置流程,包括环境准备、安装步骤、核心配置及常见问题处理。

环境准备与依赖安装

在开始配置PHP前,需确保服务器系统已更新,并安装必要的编译工具和依赖库,以CentOS 7和Ubuntu 22.04为例,不同系统的包管理器不同,但核心依赖类似。

CentOS 7系统依赖安装

sudo yum update -y
sudo yum groupinstall "Development Tools" -y
sudo yum install epel-release -y
sudo yum install gcc make cmake autoconf libtool libxml2-devel openssl-devel curl-devel libjpeg-turbo-devel libpng-devel freetype-devel libmcrypt-devel libzip-devel -y

Ubuntu 22.04系统依赖安装

sudo apt update && sudo apt upgrade -y
sudo apt install build-essential autoconf libtool libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libzip-dev -y

依赖安装完成后,需确保Web服务器已就绪(如Apache或Nginx),此处以Nginx为例,简要说明其安装:

  • CentOS 7sudo yum install nginx -y
  • Ubuntu 22.04sudo apt install nginx -y
    安装后启动Nginx并设置开机自启:sudo systemctl start nginx && sudo systemctl enable nginx

安装PHP

PHP可通过源码编译安装或使用包管理器安装,编译安装灵活性高,适合自定义模块;包管理器安装简单快捷,适合快速部署,此处以编译安装PHP 8.2为例,展示完整流程。

下载PHP源码

cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.2.12.tar.gz
sudo tar -zxvf php-8.2.12.tar.gz
cd php-8.2.12

配置编译选项

使用./configure脚本配置PHP功能,需根据实际需求启用模块(如MySQL、Redis、GD库等),以下为常用配置示例:

sudo ./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-curl \
--with-gd \
--with-jpeg \
--with-freetype \
--enable-mbstring \
--enable-exif \
--enable-zip \
--enable-bcmath \
--enable-opcache \
--with-fpm-user=nginx \
--with-fpm-group=nginx

参数说明:

  • --prefix:PHP安装路径
  • --enable-fpm:启用PHP-FPM(FastCGI进程管理器)
  • --with-mysqlnd:使用MySQL原生驱动
  • --enable-opcache:启用OPcache加速PHP执行

编译与安装

sudo make -j$(nproc)  # 使用多核编译加速
sudo make install

配置PHP-FPM

安装完成后,复制PHP配置文件并修改:

sudo cp php.ini-production /usr/local/php/etc/php.ini
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

编辑/usr/local/php/etc/php-fpm.conf,确保以下配置正确:

pid = run/php-fpm.pid
error_log = log/php-fpm.log

编辑/usr/local/php/etc/php-fpm.d/www.conf,调整进程池配置(如内存、进程数):

[www]
listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

启动PHP-FPM

sudo /usr/local/php/sbin/php-fpm  # 启动PHP-FPM
sudo cp /usr/local/src/php-8.2.12/sapi/fpm/php-fpm.service /etc/systemd/system/  # 复制服务文件
sudo systemctl daemon-reload
sudo systemctl enable php-fpm  # 设置开机自启
sudo systemctl start php-fpm

配置Nginx与PHP集成

PHP-FPM作为独立服务运行,需通过Nginx的FastCGI配置将PHP请求转发给PHP-FPM处理。

修改Nginx配置文件

编辑Nginx站点配置(如/etc/nginx/conf.d/default.conf),添加PHP处理规则:

server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm.sock;  # 若TCP监听,则改为fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.ht {
        deny all;
    }
}

测试PHP配置

创建PHP测试文件/var/www/html/info.php如下:

<?php
phpinfo();
?>

重启Nginx:sudo systemctl restart nginx,访问http://服务器IP/info.php,若显示PHP配置信息,则说明集成成功。

PHP核心配置优化

编辑/usr/local/php/etc/php.ini,根据服务器资源调整关键参数:

参数 默认值 推荐值 说明
memory_limit 128M 256M 单个PHP脚本最大内存使用
upload_max_filesize 2M 32M 上传文件最大尺寸
post_max_size 8M 32M POST数据最大尺寸
max_execution_time 30 300 脚本最大执行时间(秒)
opcache.enable 0 1 启用OPcache加速
opcache.memory_consumption 64 128 OPcache内存占用(MB)
opcache.max_accelerated_files 2000 10000 最大缓存文件数

修改后重启PHP-FPM:sudo systemctl restart php-fpm

常见问题处理

  1. PHP-FPM启动失败:检查php-fpm.confwww.conf配置是否正确,查看错误日志(/usr/local/php/log/php-fpm.log)。
  2. Nginx 502 Bad Gateway:确认PHP-FPM服务是否运行,检查listen路径或端口是否与Nginx配置一致。

相关问答FAQs

问题1:如何查看PHP已安装的模块?
解答:通过命令/usr/local/php/bin/php -m可列出所有已安装的PHP模块,若需动态添加模块(如Redis),需重新编译PHP或使用pecl安装:/usr/local/php/bin/pecl install redis,并在php.ini中添加extension=redis.so后重启PHP-FPM。

问题2:如何优化PHP-FPM性能?
解答:可通过调整pm模式(如static模式减少进程创建开销)、设置合理的pm.max_children(根据服务器内存计算,单个进程约占用20-30MB)、启用opcache并调整其参数(如opcache.validate_timestamps=0生产环境关闭时间戳验证)来提升性能,监控PHP-FPM进程状态(/usr/local/php/sbin/php-fpm --status),避免内存溢出或进程僵死。

分享:
扫描分享到社交APP
上一篇
下一篇