LNMP架构:
用Nginx 代替 apache, 用php-fpm代替apache的mod_php模块
优点是静态网页处理性能超高,能做到10万并发,资源占用较低。 nginx使用epoll机制,apache使用select机制,后者比较落后。
安装nginx:
先卸载apache,下载nginx,解压,cd,./configure,make && make install
默认安装在 /usr/local/nginx
运行命令在sbin/下,配置文件在conf/下,主配置文件是nginx.conf
nginx默认的运行用户是nobody(apache的叫apache)
server{} 就是配置一个web服务器
查看进程
ps aux|grep nginx
查看端口
root@iZ23totlue9Z:~# netstat -tupln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 828/httpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 735/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 31714/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 23486/master
tcp6 0 0 :::22 :::* LISTEN 31714/sshd
tcp6 0 0 :::25 :::* LISTEN 23486/master
udp 0 0 115.29.249.189:123 0.0.0.0:* 26753/ntpd
udp 0 0 10.162.67.250:123 0.0.0.0:* 26753/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 26753/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 26753/ntpd
udp6 0 0 :::123 :::* 26753/ntpd
安装php-fpm
到php官网下载php源码, ./configure的时候就加上--enable-fpm(?)。 在php安装目录的sbin/下有一个php-fpm文件,在etc/下有一个php-fpm.conf.default文件。
把源码包里的php.ini-devlelopment 或 php.ini.production复制到这个etc/目录下,并且把php-fpm.conf.default重命名为php-fpm.conf
php-fpm默认以服务形式监听127.0.0.1:9000端口,所以只要把nginx的请求打到9000端口即可, 执行 php-fpm 即可。
查看php-fpm进程
ps aux|grep php
查看php-fpm端口
netstat -tupln
配置nginx以支持php
编辑 nginx.conf, 里面有被注释掉的 location ~ \.php$ {} 代码, 修改一下即可,比如默认目录、端口号(fastcgi_pass 就是指向php-fpm的端口号)、 fastcgi_param 改成网站根目录路径
killall nginx
执行 nginx, 启动
然后就弄个phpinfo()看下
同样可以使用ab来做压力测试,然后继续安装eAccelerator等等。
优化php-fpm
请求突然增加时,php-fpm进程数会自动增加以处理请求(就像apache的httpd进程一样,只不过这里是php-fpm来管理php进程,而不是apache自己的mod_php模块)。
编辑php-fpm.conf, 修改 pm.max_children , pm_max_spare_servers , pm_start_servers 等等