php-ftm 使用及优化笔记

1. php-fpm进程过多会导致系统资源被耗光
ps -ef |grep php-fpm |wc -l
数出来当前总共已生成37个php-fpm进程

2. 通知这个命令找出master进程,以及确认读取的是哪一个配置文件
ps -ef |grep php-fpm
root 23013 1 0 Jan10 ? 00:04:05 php-fpm: master process (/etc/php-fpm.conf)

kill 23013 则会把所有的 php-fpm 进程全杀死

3.启动php-fpm:
查看php-fpm的地址
whereis php-fpm

启动php-fpm
php-fpm                # /usr/local/php5/为php-fpm的安装地址
php-fpm -R           # 如果报错显示不能用root用户启动,则可以考虑使用 -R命令

查看是否启动成功:
netstat -lnt | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

或者使用如下命令,查看是否9000端口被php-fpm占用:
netstat -tunpl | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

php-fpm 关闭:
kill -INT `cat /usr/local/php5/var/run/php-fpm.pid`
或者:pkill php-fpm

4. 完美解释 nginx 与 php-fpm 配合原理的文章
https://blog.csdn.net/u013474436/article/details/52972699

5. 实际端口配置文件在这个目录下
/etc/php-fpm.d

pm.max_children = 50 改为:pm.max_children = 25
pm.start_servers = 5 改为pm.start_servers = 5
pm.min_spare_servers = 5 改为pm.min_spare_servers = 2
pm.max_spare_servers = 35 改为pm.max_spare_servers = 10

LAMP升级apache2.2 到 apache2.4踩过的坑

背景:要在apache中添加部署Django项目,要安装mod_wsgi这个模块,结果因为apache的apxs的版本有冲突无法安装。眼看自己的apache版本还是2.2,于是寻思着对Apache进行升级,于是踩坑之旅就此开始,熬过了2个凌晨2点钟。

Apache升级:原来考虑的最简单的思路莫过于直接yum update apache,结果有冲突,无法卸载也无法升级。最后直接下载了源码编译安装。

Apache安装完之后,原来Wordpress博客的网页无法正常加载,访问博客网址,刚开始是一访问就会直接触发一个下载动作。后面调试后,变成直接会把html文件夹根目录下的index.php文件的内容打印出来。试过执行了info.php,结果也是直接在网页上直接返回这个文件的内容。

看到测试的info.php都不能正常执行,猜测试是PHP有问题,网上一查,说是apache没有加载PHP模块导致。之前我的PHP版本刚升级过,是使用YUM操作的,服务器里没有编译生成过libphp7.so。各种尝试无果之后,果断决定升级PHP。

也是先考虑用yum update php来操作,结果也是各种冲突,升级也不行,卸载也不行。于是决定下载PHP源码自己编译安装。刚开始执行源码 ./configure的时候,参数使用官网默认提供的,装完之后,才想到没把mysql统计进php,于是又网上查找LAMP搭建时,PHP源码编译的参数,安装过程中各种包找不到,./configure失败重新补充安装缺少的组件。

PHP安装完之后,把:libphp7.so加载到apache的模块中。发现访问博客网站还是出现 Index of 的页面,直接把html根目录的文件全部暴露。这个时候,查找apache logs下的error_log,发现提示.htaccess的问题,再网上搜索,说的是apache2.4 跟apache2.2 的httpd.conf有些配置语法是不一样的。连猜带蒙改了httpd.conf, .htaccess。改完之后,error_log里这个报错是没有了,但是博客还是返回Index of,但这时info.php已经能正常返回了,说明我的PHP已经能正常工作。这中间穿插了:”AddType application/x-httpd-php” 的配置问题,没有这一句,apache无法正常处理php后缀的网页文件。

现在基本可以排除PHP的问题。

接下来继续上网查,发现会返回“Index of”是因为apache找不到网站访问初始打开的页面,默认是index.html,于是默认就会把html根目录下的文件列表返回至网页上。

需要修改httpd.conf:

把这一句:“Options Indexes FollowSymLinks”改成“Options FollowSymLinks”

这样就不会返回文件名列表,而是会直接提示 Forbidden。
再把“DirectoryIndex index.html”改成“DirectoryIndex index.html index.php”就可以让apache自动搜索index.php来加载网站了。

现已能正常打开博客网站。

但是,这个时候又发现了新的问题,网站只是主页能打开,博客文章目录里的链接点开会报链接不存在。好在这个问题以前就处理过,并且有写文章记录下解决方案,找到旧的博文,发现是mod_rewrite.so没有加载导致。编辑下httpd.conf,把mod_rewrite前的注释去掉就行了。

至此,整个博客网站的访问就全恢复正常了。

这下,原来要部署的Django网站的活可以重新排上日程了。。。

这篇博文刚写完要保存,发现还有问题,后台报:mmap() failed: [12] Cannot allocate memory, 先重启httpd服务修复。