浅析php环境配置

PHP作为开源的服务器端脚本语言,在web应用方面非常广泛。如果你想下载某些开源应用,github上php开源软件选择往往比Java还多。最近,研究了linux下php的安装,主要有以下体会。

PHP-INI

php.ini文件是php的核心配置文件且只能命名为php.ini,它是对php应用程序全局起作用的设置文件,里面选项非常多,包含php页面使用内存大小限制,上传下载文件大小限制,浮点型的精度等。

FPM-PHP

fpm-php(FastCGI ProcessManager)本来是php的第三方包,在php5.3.3后成为了php的核心成员,不需要单独下载安装。FastCGI诞生之前,web端转发一个php请求后,需要重新加载php.ini,通过fpm-php创建master进程,收到多个php请求,创建子进程来共享master进程加载的php.ini信息。安装fpm-php后,启动php实际上通过启动的fpm-php.service来实现。fpm-php和web之间的通信可以通过两种方式实现,socket和tcp方式,通过/etc/php-fpm.d/www.conf的配置来配置。两种方式的差异主要在listen的配置不一样。一个是php-fpm.sock,一个是服务器的ip:9000。

socket方式是长连接方式,适用于php和其他服务在同一台服务器上

[www]
user = nginx
group = nginx
listen = /run/php-fpm.sock

tcp方式是http请求方式,适用于集群并发量高的多服务器上

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

再谈进程如何分配,以下面配置来说,start_servers=10说明php服务就启动10个worker子进程一直处于等待中,min_spare_servers=5是指最小活动进程。php启动时开启8个进程,如果没有收到web请求,fpm-php就会释放一些,最终达到5个进程。但是最大不能超过max_spare_servers = 35。至于max_children=50,那是静态配置方式,不变的,是一种浪费资源的方式,一直启动50个进程再那里等待,即使网站应用没有一个人访问也是一样。

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35

扩展包

仅安装php往往不能满足应用软件的需求,还需要其他很多扩展包来支持php应用。例如,【odbc,common,ima,mongodb,xml等】,但是需要注意的是安装的时候下面这些包是基于pecl的【apcu,imagick,goeip,mcrypt,redis,zip,memcache】。尤其,zip包特别需要指定pecl,否则扩展包安装不成功,其他pecl包可以从remi源中自动找到响应包。

yum install php-common
yum install php-apcu
yum install php-pecl-zip

web服务器相关配置

php和web服务器nginx,apache还需要做一些关联配置,在他们的配置文件里面加入以下:

nginx:
location ~ .*\.php$
{
    fastcgi_pass  unix:/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
    try_files $uri = 404;
}

apache:
<FilesMatch \.php$>
  SetHandler "proxy:unix:/run/php-fpm.sock|fcgi://localhost"
</FilesMatch>

但是,ubuntu系统下PHP应用使用apache服务器的情况下,需要配置,否则相反apache服务器报错无法启动。以上对php的配置理解,今后随着对它研究的加深,还会写一些关于php新的东西。

本文由Websoft9原创发布,转载请注明出处。

(0)

相关推荐

  • 了解PHP-FPM

    在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢? PHP-FPM简介 PHP-FPM,就是PHP的FastCGI管理器,用 ...

  • yum安装CentOS7+nginx+php7.3+mysql5.7

    yum的安装 yum update yum安装nginx源 yum install yum-utils 安装nginx yum install nginx 启动nginx service nginx ...

  • Ubuntu部署WEB平台(apache+php和Nginx+php)

    一.实验环境说明 1.操作系统:Ubuntu 18.04 64位 jia@test:~$ lsb_release -a //查看系统版本 jia@test:~$ uname -a //查看系统是64位 ...

  • (42条消息) CentOS 7 yum 安装 PHP7.3 教程

    CentOS 7 yum安装 PHP7.3 教程 参考: https://www.mf8.biz/centos-rhel-install-php7-3/ 1.首先安装 EPEL 源: yum inst ...

  • (5条消息) 开发环境配置2:wsl下安装anaconda和tensorflow

    在前一篇文安装了WSL(zsh)之后继续本文的内容. 一.anaconda安装和配置 1.安装 基本安装方法 用wget命令安装超慢(明明已经改了源了,以后慢慢想办法),于是直接手动下载最新版本的安装 ...

  • pytest文档45-allure添加环境配置(environment)

    前言 在 allure 报告首页 ENVIRONMENT 显示 'There are no environment variables' 没有环境变量的配置信息. 环境变量配置可以添加报告相关的配置参 ...

  • Docker环境配置指南!

    好奇心Log 今天 以下文章来源于Datawhale ,作者Tianchi 来源:Tianchi,内容:Docker环境配置 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植 ...

  • ubuntu下conda+pytorch+opencv环境配置 | 大专栏

    在ubuntu系统上利用安装conda,pytorch,opencv,并结合rfb-net在voc2007和voc2012上完成测试.核心内容还是环境的配置,特别是解决环境配置中遇到的各种问题. 安装 ...

  • 第68天:Selenium 环境配置

    如果你做过 Web 测试的工作,那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试.自动化测试,顾名思义就是让浏览器自动运行,而无需手动操作.这和我们爬虫工作原理有些相似,我们爬虫也需要让 ...

  • (9条消息) 嵌入式开发环境配置nfs, tftp,交叉编译工具

    基于ubuntu 安装NFS 安装nfs: sudo apt-get install nfs-kernel-server 配置: sudo vim /etc/exports 在最后一行添加: /hom ...

  • 2021Java大厂高频面试题:mysql环境配置错误

    什么是ACID? 事务的定义和实现一直随着数据管理的发展在演进,当计算机越来越强大,它们就能够被用来管理越来越多数据,最终,多个用户可以在一台计算机上共享数据,这就导致了一个问题,当一个用户修改了数据 ...

  • Python入门02 — Python安装及开发环境配置

    Python 是一款易于学习且功能强大的编程语言. 它具有高效率的数据结构,能够简单又有效地实现面向对象编程.Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使得它成为一种在多种领域 ...

  • Windows server 2012安全加固与web环境配置优化

    这周给团队服务器做升级优化,系统重装为Windows server 2012,以下是一些安全配置和web环境配置优化笔记. 一.查看系统信息 一些基础命令 查看主机名:hostname 查看网络配置: ...