lnmp最常见的架构
L linux --系统平台
N nginx --网站的前端程序,发布静态页面和调用外部程序解析动态页面

M mysql --网站的后台数据库
P PHP --网页的变成措辞(也可以用python)
事情事理
客户真个所有的页面要求先到达lnmp构造中的nginx
nginx根据自己的判断哪些是静态页面,哪些是动态页面
如果是静态页面直接由nginx自己处理就可以返回结果给客户端了
如果.php动态页面nginx须要调用php中间件做事器来处理
在处理PHP页面的过程中可能须要调用mysql数据库中的数据完成页面编译
编译完成后的页面返回给nginx,nginx再返回给客户端
nginx
ngin是http做事器软件,nginx的特点是处理速率非常快,占用的资源很少。功能上nginx模块全部是静态编译的,也便是说如果须要处理动态的编译须要安装其他软件来完成动态的编译
nginx的的上风
作为web做事器处理静态文件,索引文件,自动索引的效率非常高
作为代理做事器,可以实现无缓存的反向代理,提高网站运行速率
作为负载均衡做事器,可以在内部直接支持rails和php等
性能方面,采取epoll模型,可以支持多并发并且占用低内存
稳定方面,采纳分段资源分配技能,CPU和内存占用率非常低,少量的dos攻击对nginx基本无浸染,
高可用方面,支持热支配,启动迅速,可以在不间断做事的情形下,直接升级7x24小时不间容灾
nginx的模块和事情事理
nginx由内核和模块组成,模块构造分为核心模块,根本模块,第三方模块
核心模块: http模块,event模块,mail模块
根本模块: http fastCGI模块,http proxy模块,http rewrite模块
第三方模块: http upstream request hash 模块,notice模块,htttp access key 模块
模块从功能上分为如下三类:
Handlers(处理器模块):直接处理要求,并进行输出内容和修正headers信息操作只有一个
Filters(过滤模块):紧张对其他处理器模块输出的内容进行修正操作,末了由nginx输出案例故障汇总
Proxies(代理类模块):紧张与后端一些做事比如FastCGI进行交互,实现代理和负载均衡
在事情办法上:
单事情进程(默认):除主进程外,还有一个事情进程
多事情进程:每个进程包含多个线程
nginx模块之间被编译金nginx,因此属于静态编译办法,然后将模块编译为一个so文件,在配置文件中指定是否加载
nginx模块的HTTP要乞降相应过程图如下:
nginx进程理解 分发
nginx进程
nginx启动后。在linux系统中以Daemon的办法在后台运行,后台进程包含一个master进程和多个work进程,默认以多进程办法
master管理work 外界的旗子暗记都是发给master,再由master分配给work进程
master进程
管理work进程
外界的旗子暗记都是发给master,再由它分配给work进程
监控work的运行状态,如发生非常,重新启动新的进程
work进程
work之间是对等的
基本的网络要求都是在work中进行
一个要求只能在一个work进程中进行
一个work进程也不能处理其他进程的要求
work进程的个数是可设置的,一样平常跟CPU核数相同
master进程紧张用来管理worker进程,详细包括如下4个紧张功能
吸收来自外界的旗子暗记
向各worker进程发送旗子暗记
监控woker进程的运行状态
当woker进程退出后(非常情形下),会自动重启新的woker进程
woker进程紧张用来处理网络韶光,各个woker进场之间是对等且相互独立的,他们同等竞争来自客户真个要求,一个要求只可能在一个worker进程中处理,woker进程个数一样平常设置为机器CPU核数
nginx安装 一种是源码安装 一种是rpm包安装
首先看看源码安装 http://nginx.org
yum -y install pcre-devel zlib-devel <pcre可以使nginx支持http-rewrite模块> tar xvf nginx-1.11.0.tar.gz cd nginx-1.11.0 ./configure --with-http_stub_status_module --prefix=/usr/local/service/nginx --with-http_gzip_static_module make && make install --with-http_stub_status_module 可以启动nginxstatus功能,以监控nginx当前状态
利用TCMalloc优化nginx的性能 扩展知识
TCMalloc是谷歌的开源工具google-perftools的成员,它可以在内存分配效率和速率上高很多,可以很大程度提高做事器在高并发情形下的性能,从而降落系统的负载
1.安装libunwind库,libunwind-0.99-alpha.tar.gz
`tar xvf cd ./configure maek make install
2.安装google-perftools
tar xvf gperftools-2.1.tar.gz
cd ./config make && make install
echo \"大众/usr/local/lib\"大众 > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig
至此,google-perftools安装完成
nginx启动与关闭
#检讨语法
/usr/loacal/service/nginx/sbin/nginx -t
#平滑重启
/usr/local/service/sbin/nginx -s reload
#不间断做事看重启,将pid行程重跑(restart)
kill -HUP
cat /opt/nginx/logs/nginx.pid
关闭
kill 进程号
nginx定时切割日志脚本
1.创建脚本 /usr/local/service/nginx/sbin/cut_nginx_log.sh
cd /usr/local/service/nginx/logs /bin/mv access.log access_$(date+%F -d -1day).log /usr/local/service/nginx -s reload
添加到定时任务
crontab -e #添加以下代码
0 0 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨定时实行脚本
crontab -e
30 19 /bin/sh cut.nginx.log > /dev/null 2>&1 每天19点30分实行一次