PHP做为开源的服务器端脚本语言,在web应用方面很是普遍。若是你想下载某些开源应用,github上php开源软件选择每每比Java还多。最近,研究了linux下php的安装,主要有如下体会。php
php.ini文件是php的核心配置文件且只能命名为php.ini,它是对php应用程序全局起做用的设置文件,里面选项很是多,包含php页面使用内存大小限制,上传下载文件大小限制,浮点型的精度等。linux
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。nginx
socket方式是长链接方式,适用于php和其余服务在同一台服务器上git
[www] user = nginx group = nginx listen = /run/php-fpm.sock
tcp方式是http请求方式,适用于集群并发量高的多服务器上github
[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个进程再那里等待,即便网站应用没有一我的访问也是同样。web
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源中自动找到响应包。redis
yum install php-common yum install php-apcu yum install php-pecl-zip
php和web服务器nginx,apache还须要作一些关联配置,在他们的配置文件里面加入如下:mongodb
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新的东西。apache
本文由Websoft9原创发布,转载请注明出处。ubuntu