一、服务器架构理解

一个Web项目上线,必须依托于服务器成为互联网之中的一个节点,要使我们的应用得以运转,这个节点内容需要进行一系列的工作环境安装配置,而为了目标项目的安全性、稳定性、灵活性,同时考虑公司运营成本,我们相应会做服务器架构对应的软件选择,也就是对服务器架构进行思考。

服务器架构的第一步则是要考虑选择什么服务器的位置和软件,包括服务器选择云端的还是自己建设、服务器操作系统、进行网络连接的服务器软件、开发语言、数据库等,而这些选择的组合结果,将极大影响项目的后期整体运行以及优化扩展。

在经过前人不断实践后,逐渐总结出来一些模式化的“解决方案”,目前常见的服务器架构模式分别有:Lamp(Linux+Apache+Mysql+PHP)、Lnmp(Linux+Nginx+Mysql+PHP)、Wamp(windows+Apache+Mysql+PHP)、Wimp(windows+IIS+Mysql+PHP)。

由于windows操作系统具备易用、界面友好、软件丰富、操作起来非常方便的优势,中小企业常常选择Wamp和Wimp作为公司项目服务器的架构,而又由于windows性能较差、安全性低、不稳定等缺点,大公司常常选择使用Lamp和Lnmp服务器架构。

以下根据Lamp+Lnmp架构模式具体分析优劣。

二、架构图

图1. lamp/lnmp基本架构

三、Lamp/Lnmp架构理解

1. LINUX系统

Linux操作系统有很多发行版本,常见的有Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统一般选择CentOS是一个理想的方案。

CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL(Red Hat Enterprise Linux)的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。

Linux系统之所以会成为目前最受关注的系统之一,主要原因是它的免费,以及系统的开放性,可以随时取得程序的原代码,这对于程序开发人员是很重要的。

除了这些它还具有以下的优势:------------------------------------------------------------------------------

Linux系统优势一:跨平台的硬件支持

由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。

Linux系统优势二:丰富的软件支持

与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

Linux系统优势三:多用户多任务

和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。

Linux系统优势四:可靠的安全性

Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。

对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。

Linux系统优势五:良好的稳定性

Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。

Linux系统优势六:完善的网络功能

Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。

----------------------------------------------------------------------------------------------------------

linux除了以上的优势,程序员自己还可以利用shell脚本开发系统功能。综上对linux的认识,我们没有理由不选择Linux。

2. Apach服务器

Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。

3. Nginx服务器

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。

Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

4. PHP

PHP是目前web开发使用最多的语言。

优点

开源、免费、快捷性(程序开发快,运行快,技术本身学习快)、插件丰富、网上的解决方案有很多(有庞大的开源社区可以提供帮助)、跨平台性强、效率高、图像处理好、面向对象。

缺点

1) 函数命名不规范:驼峰法和下滑线,传参位置不一;

2) 单线程: PHP本身一直以来就是个单进程的程序,虽然php的pthreads扩展早就有了,但是它不够稳定,运行运行着就会莫名其妙的自己挂掉,php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个系统挂掉;

3) 核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。少了这个,使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的,这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善;

4) 只支持web开发,不方便做 .exe文件,不方便做桌面应用程序,不方便做手机程序;

5) 不适合做爬虫。自动运行脚本,科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。

6) 后期维护困难,后期提速空间局限性较大。

5. MYSQL数据库

开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。

  当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。

四、总结

Linux开源、安全、高性能、稳定;apache服务器开源稳定;Nginx消耗低、速度快、稳定;mysql数据库高性能、稳定、免费;PHP开发速度快。所以综合来说。LAMP/LNMP架构的网站性能高,且成本低,非常适合大部分的商业运作,稳定性、安全性远远优于WIMP/WAMP架构的网站,可以负载的访问量也非常大,在IT领域发展,对于个人或公司,用LAMP/LNMP架构自己项目服务器,肯定会更好。

五、参考网站

1. http://www.williamlong.info/archives/1908.html

2. https://www.cnblogs.com/xiaotaoing/p/6687418.html

3. https://www.cnblogs.com/soundcode/p/6576637.html

常用web服务器架构理解相关推荐

  1. 基于linuxunix高性能web服务器架构思路分析

    随着21世纪互联网的快速发展以及web2.0的诞生,最初web服务器已经不能满足我们的需求.而现在我们要考虑的不再仅仅是web服务器以及数据库服务器这么简单,我们所需要考虑的就是设计出一套高性能web ...

  2. Java中常用WEB服务器和应用服务器

    一.web服务器和应用服务器的区别 Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods).确切一点,你可以说:Web服务器专门处理 ...

  3. Web服务器架构简单介绍

    服务器开发的流程图 服务器架构的设计思路 服务器设计思路

  4. 光速网络 分布式Web服务器架构(转载)

    最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网 ...

  5. Web服务器处理连接请求的四种架构方式

    1.单线程web服务器       此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求.在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的必能 ...

  6. 轻量级WEB服务器Nginx介绍

    轻量级WEB服务器Nginx介绍 本文目录 第1 章 Nginx 简介 ................................................................ ...

  7. Linux - nginx 搭建 Web服务器

    前言 在之前,已经对 nginx 有过基本的介绍. 现在尝试利用 nginx 来 搭建一个 web服务器. 正文 1.什么是 Web 服务器? Web服务器也称为WWW (WORLD WIDE WEB ...

  8. 如何设计大型游戏服务器架构?

    一.游戏服务器特征 游戏服务器,是一个会长期运行程序,并且它还要服务于多个不定时,不定点的网络请求.所以这类服务的特点是要特别关注稳定性和性能.这类程序如果需要多个协作来提高承载能力,则还要关注部署和 ...

  9. 《王者荣耀游戏服务器架构演进(完整版)》读后感

    原文地址:https://mp.weixin.qq.com/s/l1pnVc_E-Nz6Z27iC0G6GA 1.游戏服务器特征 游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定 ...

  10. 常见Web服务器简介

    Web服务器也称为WWW (WORLD WIDE WEB)服务器.HTTP服务器,其主要功能是提供网上信息浏览服务. Unix和Linux平台下的常用Web服务器有Apache,Nginx,Light ...

最新文章

  1. 使用tcpwrapper实现访问控制功能
  2. Node.js获取本机IP
  3. js作用域及作用域链概念理解及使用
  4. 基于keepalived对redis做高可用配置---转载
  5. 计算机科学 在职双证,计算机专业在职研究生如何获得双证?
  6. matlab内置函数fitgeotrans与transformPointsForward解析
  7. Java网页开发中model实现Serializable接口的原因
  8. google earth pro 64位_七彩虹秀精准刀工!iGame RTX 3060 Ti Advanced OC评测:烤机3小时64度...
  9. 前端学习(2553):内容概述
  10. android手势感应预研
  11. Android开发笔记(三十八)列表类视图
  12. 反序列化时出现“base-64 字符数组的无效长度”错误提示的解决
  13. Android -- 自定义跑马灯
  14. 算法学习(十九)——A3C
  15. word_大纲视图/导航视图/设置标题时需要注意(不成功的原因)
  16. X线、CT、B超、核磁共振区别
  17. FastDFS安装步骤
  18. Web指纹识别技术研究与优化实现(CMS)
  19. ERP咨询顾问必备的七种公关能力
  20. 编译原理-词法分析器

热门文章

  1. python登录qq邮箱爬邮件_如何使用Python登录邮箱发送邮件
  2. DeepMind 联合创始人加盟 Google AI【智能快讯】
  3. 共享打印机没有权利访问计算机,共享打印机拒绝访问,教您共享打印机拒绝访问怎么办...
  4. 打印机共享无法访问该计算机,共享打印机拒绝访问怎么办详细解决方案
  5. Arrayfire E0992 命令行错误: 宏定义无效: AF_<CPU/CUDA/OPENCL>
  6. 永不消逝的电波(三):低功耗蓝牙(BLE)入门之如何调戏别人的小米手环
  7. 中高级Android面试中你不得不会的知识点,3面直接拿到offer
  8. R包survival,survminer生存分析代码
  9. Java--->奥运五环
  10. 纵观 ActiveX 平台的兴衰史,看开发控件的技术演变