LNMP架构介绍
LNMP:linux+nginx+mysql+php的架构;php的动态处理交给php-fpm(127.0.0.1:9000),静态处理直接由nginx处理
工作模式:
1、在lamp中php作为独立的服务(php-fpm)存在
2、nginx支持高并发,动态请求转给php-fpm
MySQL安装
请查看:http://jacksoner.blog.51cto.com/5802843/1979858
PHP安装(php-fpm)
1、[root@centos7 package]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
2、[root@centos7 package]# tar zxf php-5.6.30.tar.gz
[root@centos7 package]# useradd -s /sbin/nologin php-fpm
[root@centos7 php-5.6.30]# yum install -y gcc gcc-c++ libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype libmcrypt-devel
[root@centos7 package]# cd php-5.6.30
[root@centos7 php-5.6.30]# make clean
[root@centos7 php-5.6.30]# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl
[root@centos7 php-5.6.30]# make && make install
[root@centos7 php-5.6.30]# echo $?
0
[root@centos7 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
[root@centos7 php-5.6.30]# vi /usr/local/php-fpm/etc/php-fpm.conf
[global] #全局变量
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock #监听方式,也可以写:listen = 127.0.0.1:9000
listen.mode = 666 ##当监听的为socket文件时该部分才生效,用于指定.sock文件的权限
user = php-fpm
group = php-fpm ##定义php-fpm服务的用户
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024 #进程相关
检查语法
[root@centos7 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
启动:
[root@centos7 php-5.6.30]# chmod 755 /etc/init.d/php-fpm
[root@centos7 php-5.6.30]# chkconfig --add php-fpm
[root@centos7 php-5.6.30]# chkconfig php-fpm on
[root@centos7 php-5.6.30]# service php-fpm start
Starting php-fpm done
[root@centos7 php-5.6.30]# ps aux| grep php-fpm
Nginx介绍
Nginx应用场景:web服务、反向代理、负载均衡
Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并
Nginx对比apache的优点:
1、轻量级,同样起web 服务,比apache 占用更少的内存及资源
2、静态处理,Nginx 静态处理性能比 Apache 高 3倍以上
3、抗并发,nginx 处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能。在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数飙升,从而拒绝服务的现象。
4、高度模块化的设计,编写模块相对简单
5、社区活跃,各种高性能模块出品迅速啊
apache对比nginx的优点
1、rewrite,比nginx 的rewrite 强大
2、模块超多,基本想到的都可以找到
3、少bug,nginx的bug相对较多
4、超稳定
5、Apache对PHP支持比较简单,Nginx需要配合其他后端用
选择Nginx的优势所在
作为Web服务器: Nginx处理静态文件、索引文件,自动索引的效率非常高。
作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。
在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型(epoll and kqueue ),可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。
在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。
在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时不间断地运行。
同时使用Nginx和Apache
由于Nginx和Apache各自的优势,现在很多人选择了让两者在服务器中共存。在服务器端让Nginx在前,Apache在后。由Nginx做负载均衡和反向代理,并且处理静态文件,讲动态请求(如PHP应用)交给Apache去处理。