一、web服务器的选择
- Apache
- nginx
- iis
Apache简介(百度百科)
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
Nginx简介(百度百科)
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
iis简介(百度百科)
iis是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在Windows XP Home版本上并没有IIS。IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
严格来说不是Nginx在跑PHP,Nginx只做转发给php-fpm,是php-fpm在维持PHP跑…
php-fpm现在稳定性算可以了,但还是无法释放内存,所以一般的配置是500次后子进程不接收任务,本身任务完成自己结束掉,另开个新的继续跑,这个任务就是php-fpm在管理…
IIS:
图型管理界面,管理方便
IIS和Apache就是作为模块跑,释放内存什么的自动的,但IIS那货跑PHP这种东西还是不太靠谱,这是相对Nginx和Apache来说,所以别考虑IIS了…
Apache:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
超稳定
Apache性能挺好,以前一直用。但现在Nginx的发展很NB了,促进了php-fpm的发展也很完善稳定了,php-fpm是大家都力捧的东西,不用考虑作为模块跑的兼容之类(很多PHP扩展偶尔会出问题),未来是主流PHP的运行方式,占用内存也小。Apache的太庞大,不解决一些痛点导致Nginx的崛起。比如我关心的Apache下的限速只有cband还比较好用,但是第三方做的,虽然也不错,但经常这个版本不支持,那个版本支持。而Nginx此类功能已经作为基本功能自带了,而且非常强大…
Win下:
如果Win平台下就别用Nginx了,因为Win下没php-fpm管理PHP进程,所以只能用php-cgi,而php-cgi没有进程管理,所以偶尔出现错误进程死掉你的PHP就挂了,就要手工启动进程。你也可以自己写个监测程序来管理,这一般维护服务器的人也没法做到的。而Linux/BSD下php-fpm可以设定好参数自动启动几个进程,请求多少次淘汰并重启新进程,另外还有好多种其他方式管理PHP进程,一切都是php-fpm自动进行管理的。至于Win下Nginx使用原生Win32 API,用select实现,而Win下比较先进的技术I/O Completion Ports据我所知有第三方做过,但官方Nginx貌似还没有用IOCP,所以性能肯定没有Linux的epoll和BSD的kqueue好。其实感觉Win搭服务器大部分就是个企业站,没多少访问量,如果海量访问大部分都用Linux/BSD来做集群了。关键点是Win下没有php-fpm,所以Win下就不要用Nginx了…
其实关于不推荐用Win服务器还有一点:你的Win服务器是正版吗?可能大部分服务器都不是,但万一遇到得罪别人被举报,还有大公司上市之类的,被查的可能性还是有的…
Win下我本机开发测试一直用Apache,因为Apache用了10多年,熟悉Apache,也稳定,作为服务来跑基本不用管,开发机用Apache更加省事,你对IIS熟悉或者有情怀可用IIS,否则推荐用Apache,基本不会出啥问题。运行起来也非常稳定。但我现在Win开发机测试用Nginx+php-cgi,哈哈,保持统一,我测试又没事,偶尔一个月出现一两次调试PHP代码的时候PHP进程死掉,进服务启动下就好。Win下生产环境你别用Nginx,用Apache吧…
结论:
服务器如果用asp/.net就用Win,否则尽量要用Linux或BSD,如果需要性能最大化一定要用Linux或BSD…
Win下首推Apache+PHP,其次IIS+PHP…
Linux或BSD下首推用Nginx+PHP,其次用Apache+PHP…
PHP推荐用PHP7,爽就一个字,理由就不说了,到处都有介绍升级到PHP7的爽…- mysql
- Oracle
- SQL Server
mysql简介(百度百科)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
Oracle简介(百度百科)
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
SQL Server(百度百科)
SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNⅨ操作系统上的应用。
关系型数据库对比
MySql数据库 :
优点: 1.支持5000万条记录的数据仓库
2.适应于所有的平台
3.是开源软件,版本更新较快
4.性能很出色。纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM数据库 与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows 系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。
5.价格便宜
缺点: 缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能
MsSqlserver数据库:
优点: 1.真正的客户机/服务器体系结构
2.图形化的用户界面,使系统管理和数据库管理更加直观、简单
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地
4.与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft BackOffice产品集成。
5.有很好的伸缩性,可以跨平台使用。
6.提供数据仓库功能,这个功能只在Oracle和其他 昂贵的DBMS中才有。
7.处理速度方面比Oracle快一些,和两者的协议有关.
Oracle数据库:
优点: 1.Oracle的稳定性要比Sql server好。
2.Oracle在导数据工具sqlload.exe功能比Sqlserver的Bcp功能强大,Oracle可以按照条件把文本文件数据导入.
3.Oracle的安全机制比Sql server好。
4.Sql server的易用性和友好性方面要比Oracle好。
5.在处理大数据方面Oracle会更稳定一些。
6.Sql Server在数据导出方面功能更强一些。
缺点: 价格昂贵
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;
3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;
4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;
5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;
6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
8、Redis支持数据的备份,即master-slave模式的数据备份;
9、应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。
个人总结一下,有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。