浅析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原创发布,转载请注明出处。
浅析php环境配置的更多相关文章
- uboot环境配置
uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...
- 史上最全Windows版本搭建安装React Native环境配置
史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...
- Electron的环境配置
原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...
- Python开发环境配置
好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...
- PHP_环境配置_python脚本_2017
Apache配置 需要安装:VC2015 httpd-2.4.16-win32-VC14.zip VC14就是2015的环境. 又比如:php-5.6.12-Win32-VC11-x86 VC11就是 ...
- PHP环境配置
PHP环境配置 1.Apache的安装 第一步: 1. 双击httpd-2.2.17-win32-x86-no_ssl.msi.出现 Windows 标准的软件安装欢迎界面,直接点“Next”继 ...
- Visual studio 通用开发环境配置:SDL,FFMPEG为例
引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...
- windows 7下React Native环境配置
React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...
- seL4环境配置
转载声明:希望大家能够从这里收获知识之外,也能够体会到博主撰写博客的辛苦.个人博客势单力薄,对于强转甚至转载博客访问量高于原文的例子不在少数. 希望能够得到大家关注的同时,也能够稍微体谅一下博主的 ...
随机推荐
- js笔记6
1.函数都有返回值,人为return,返回什么就是什么,否则,他的返回值就是undefined 而方法的本质也是函数,所以也有返回值 document.getElementById()返回的是获取的标 ...
- 用python的matplotlib根据文件里面的数字画图像折线图
思路:用open打开文件,再用a=filename.readlines()提取每行的数据作为列表的值,然后传递列表给matplotlib并引入对应库画出图像 代码实现:import matplotli ...
- 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。
前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...
- UVA 11475 Extend to Palindrome hash
题意: 给出一个字符串,让你往后添加最少的字符,使其成为回文串. 分析: 题目就相当于求后缀字符串为回文串的最长长度,判断回文串要O(n)时间,直接判断肯定不行.我们从后往前枚举,每次字符串与上一个字 ...
- AcWing 1277. 维护序列
#include <bits/stdc++.h> #define ll long long #define N 4000010 using namespace std; ll t[N],a ...
- SpringBoot | 1.4 数据库事务处理
前言 前面讲解了Sring的AOP,可以知道它是用来抽取公共代码,增强方法的.而在JDBC操作数据库进行数据处理时,有很多重复的公共代码:事务的提交与回滚跟AOP的约定流程很相似.因此,Spring数 ...
- webpack(8)vue组件化开发的演变过程
前言 真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程 演变过程1.0 一般情况下vue都是单页面开发,所以项目中只会有一个inde ...
- 无需手动输入命令,简单3步即可在K8S集群中启用GPU!
随着全球各大企业开始广泛采用Kubernetes,我们看到Kubernetes正在向新的阶段发展.一方面,Kubernetes被边缘的工作负载所采用并提供超越数据中心的价值.另一方面,Kubernet ...
- XCTF 3rd-GCTF-2017 hackme
一.查壳的老生常谈了..2分的题目就不多bb了. 二..elf文件,拖入ida,直接查找字符串,找到对应的函数 三.直接分析: 这里讲道理我当时很懵逼,因为进去这个函数后,发现伪码非常复杂,这里困了挺 ...
- ESP32高分辨率计时器笔记
尽管FreeRTOS提供了软件计时器,但这些计时器有一些限制: 最大分辨率等于RTOS滴答周期 计时器回调从低优先级任务分派 硬件计时器不受这两个限制,但是通常它们使用起来不太方便.例如,应用组件可能 ...