在CentOS上优化PHP设置可以通过多个方面来实现,包括安装最新的PHP版本、启用和配置OPcache、调整PHP配置文件(php.ini)参数、以及系统级优化等。以下是详细的步骤和建议:
安装PHP及常用扩展
- 使用Remi仓库安装PHP:
- 安装EPEL仓库:
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 安装Remi仓库:
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
- 启用PHP 8.3源:
yum-config-manager --enable remi-php83
- 安装PHP 8.3及其常用扩展:
yum install -y php php-cli php-fpm php-devel php-gd php-mcrypt php-mbstring php-mysqlnd php-pdo php-xml php-process php-curl php-bcmath php-json php-opcache php-zip php-pear php-redis
- 安装EPEL仓库:
优化php.ini配置
- 启用和配置OPcache:
- 在php.ini文件中添加或修改以下配置:
zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=64 opcache.max_accelerated_files=10000 opcache.revalidate_freq=2 opcache.fast_shutdown=1
- 在php.ini文件中添加或修改以下配置:
- 调整内存限制和执行时间:
- 根据需要调整以下参数:
memory_limit = 256M max_execution_time = 30
- 根据需要调整以下参数:
- 文件上传设置:
- 根据需要调整以下参数:
file_uploads = On max_file_uploads = 10 upload_max_filesize = 10M
- 根据需要调整以下参数:
- 会话管理:
- 将会话保存方式改为内存中,如使用Memcached或Redis:
session.save_handler = memcached session.save_path = 127.0.0.1:11211
- 将会话保存方式改为内存中,如使用Memcached或Redis:
- 禁用危险函数:
- 禁用一些可能被恶意利用的函数:
disable_functions = system, exec, shell_exec, passthru, popen, php, php_eval, eval, assert
- 禁用一些可能被恶意利用的函数:
- 隐藏PHP版本信息:
- 避免通过HTTP头暴露PHP版本信息:
expose_php = Off
- 避免通过HTTP头暴露PHP版本信息:
系统级优化
- 调整内核参数:
- 优化swap的使用:
echo 'vm.swappiness = 10' >> /etc/sysctl.conf sysctl -p
- 优化文件系统参数:
echo '8192' > /sys/block/sda/queue/read_ahead_kb
- 优化swap的使用:
- 启用HugePages:
- 分配并启用HugePages:
sudo sysctl -w vm.nr_hugepages=128
修改php配置文件:opcache.huge_code_pages=1
重新启动php-fpm:sudo service php-fpm restart
- 分配并启用HugePages:
性能监控与调优
- 使用ab工具测试服务器性能:
ab -n 1000 -c 50 http://yourserver.com/
- 启用Xdebug进行代码分析:
- 安装Xdebug并配置php.ini:
zend_extension=/path/to/xdebug.so xdebug.profiler_enable=1 xdebug.profiler_output_dir="/tmp"
- 使用Xdebug的性能分析功能分析脚本执行时间。
- 安装Xdebug并配置php.ini:
通过这些优化措施,可以显著提高PHP应用程序在CentOS上的性能和安全性。每个应用程序的需求和环境不同,因此建议在开发和测试环境中进行充分测试后再应用到生产环境。