目前的中小网站,在 Linux 系统上跑 PHP+MySQL 应该是首选的方式了,比如 WordPress、Z-Blog、Discuz、PHPwind 等。当然这些程序你也可以在 Windows 服务器上跑,不过性能嘛,肯定没有在 Linux 下强 Linux+Nginx+MySQL+PHP(LNMP)和 Linux+Apache+MySQL+PHP(LNMP)已经是绝配了,而且现在操作难度也不大,各种一键安装包网上都有,甚至你买一台 VPS,提供商都已经为你准备好了相关的运行环境,非常方便!
那么问题来了,建站初期,我是该选 LNMP 还是 LAMP 呢?
一、Nginx 与 Apache 的区别
1、二者最核心的区别在于 Apache 是同步多进程模型,一个连接对应一个进程;Nginx 是异步的,多个连接(万级别)可以对应一个进程 。Nginx 处理静态文件好, 耗费内存少. 但无疑 Apache 仍然是目前的主流, 有很多丰富的特性. 所以还需要搭配着来. 当然如果能确定 Nginx 就适合需求, 那么使用 Nginx 会是更经济的方式。
2、Nginx 的负载能力比 Apache 高很多。最新的服务器也改用 Nginx 了。而且 Nginx 改完配置能 -t 测试一下配置有没有问题。
3、Apache 重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多集群站,前端 Nginx 抗并发,后端 Apache 集群, 配合得也不错。
4、Nginx 处理动态请求是鸡肋,一般动态请求要 Apache 去做,Nginx 只适合静态和反向。
5、从经验来看,Nginx 是很不错的前端服务器,负载性能很好,Nginx 用 webbench 模拟 10000 个静态文件请求毫不吃力。 Apache 对 php 等语言的支持很好,此外 Apache 有强大的支持网络,发展时间相对 Nginx 更久,bug 少但是 Apache 有先天不支持多核心处理负载鸡肋的缺点,建议使用 Nginx 做前端,后端用 Apache。大型网站建议用 Nginx 自代的集群功能。
6、大部分情况下 Nginx 都优于 Apache,比如说静态文件处理、PHP-CGI 的支持、反向代理功能、前端 Cache、维持连接等。在 Apache+PHP(prefork)模式下,如果 PHP 处理慢或者前端压力很大的情况下,很容易出现 Apache 进程数飙升,从而拒绝服务的现象。
7、Apache 在处理动态有优势,Nginx 并发性比较好,CPU 内存占用低,如果 rewrite 频繁,那还是 Apache 吧!
8、一般来说,需要性能的 web 服务,用 Nginx 。如果不需要性能只求稳定,那就 Apache 吧。
二、Apache 与 Nginx 优缺点比较
1、Nginx 相对于 Apache 的优点
轻量级,同样 web 服务,比 Apache 占用更少的内存及资源;抗并发,Nginx 处理请求是异步非阻塞的,而 Apache 则是阻塞型的,在高并发下 Nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;社区活跃,各种高性能模块出品迅速啊;Nginx 本身就是一个反向代理服务器,Nginx 支持7层负载均衡;Nginx 可能会比 Apache 支持更高的并发,Nginx 配置文件写得很简洁,正则配置让很多事情变得简单运行效率高,占用资源少,代理功能强大,很适合做前端响应服务器!
2、Apache 相对于 Nginx 的优点
Rewrite功能 比 Nginx 的强大;模块超多,基本想到的都可以找到;Bug 少,Nginx 的 Bug 相对较多;超稳定,Aapche 依然是大部分公司的首先,因为其成熟的技术和开发社区,以及非常不错的性能。
三、为什么现在 Nginx 才是 Web 服务器首选
作为 Web 服务器,相比 Apache,Nginx 使用更少的系统资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。
在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品。 Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。Nginx 作为负载均衡服务器,既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP 代理服务器对外进行服务.
Nginx 采用 C 进行编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好很多。Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验:Nginx 是一个安装非常简单、配置文件非常简洁(还能够支持 perl 语法)、Bugs 非常少的服务器;启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,你还能够不间断服务的情况下进行软件版本的升级。
Nginx 配置简洁, Apache 复杂,Nginx 静态处理性能比 Apache 高 3 倍以上,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用,Apache 的组件比 Nginx 多。