PHP作为一种开源的服务器端脚本语言,广泛应用于web应用中。如果要下载一些开源应用,github上php开源软件的选择往往比Java多。最近在研究linux下php的安装,主要有以下几点体会。PHP-INIphp.ini文件是php的核心配置文件,只能命名为php.ini。它是一个全局适用于php应用程序的设置文件。里面有很多选项,包括php页面使用内存大小的限制,上传下载文件的Size限制,浮点类型的精度等等。PHP。php5.3.3之后成为php的核心成员,不需要单独下载安装。在FastCGI诞生之前,web端转发一个php请求后,需要重新加载php.ini,通过fpm-php创建一个master进程,接收多个php请求,创建子进程共享其加载的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=nginxgroup=nginxlisten=/run/php-fpm.socktcp方式是http请求方式,适合对于高并发的多服务器集群,去[www]user=nginxgroup=nginxlisten=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=50pm.start_servers=10pm.min_spare_servers=5pm.max_spare_servers=35扩展包仅仅安装php往往不能满足应用软件的需要,还需要很多其他的扩展包来支持php应用。比如[odbc,common,ima,mongodb,xml等],但是需要注意的是安装时下面的包都是基于pecl的[apcu,imagick,goeip,mcrypt,redis,zip,memcache]。特别是zip包需要指定pecl,否则扩展包安装不成功,其他pecl包可以自动从remi源中找到响应包。yuminstallphp-commonyuminstallphp-apcuyuminstallphp-pecl-zipwebserver相关配置php和webservernginx,apache也需要做一些相关配置,在他们的配置文件中添加如下内容:nginx:location~.*\.php${fastcgi_passunix:/run/php-fpm.sock;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;try_files$uri=404;}apache:
