如何使用Nginx + MySQL + PHP5 + APC + Spawn_FastCGI安装Web服务器[第一部分:演示]

不久前我们提到现在 DesdeLinux (其所有服务)正在工作 GNUTransfer.com服务器。 即使我们不再拥有(UsemosLinux合并后),每天的访问量超过30.000(同时连接了近200个用户)。 即使有如此大的流量,如何在服务器上获得良好的性能?

目前,Justice(博客和其他服务所在的VPS)具有3GB的RAM,但是消耗的内存不足500MB,这是可以通过正确选择要使用的软件并进行适当配置来实现的。 例如,Apache无疑是世界上最出色的主机,它在托管方面排名第一,但是正因如此,Apache并不总是最好的选择。 当流量很高并且服务器硬件不是真的很大(例如:1 GB或8GB的RAM)时,Apache可能会消耗过多的RAM,从而使服务器在某些时间响应时间太长,或者更糟的是,我们的站点处于脱机状态资源不足。 这就是为什么我们许多人选择Nginx而不是Apache的原因。

Nginx:

我们已经在文章前面介绍了Nginx Nginx:Apache的有趣替代品,我们告诉过你,它是一个类似于 Apache、LightHttpd 或 Cherokee 的 Web 服务器,但与 Apache 相比,它因其性能和低硬件消耗而脱颖而出,这正是许多大型网站(例如 Facebook、MyOpera.com、DropBox 甚至 WordPress)的原因.com 使用 Nginx 而不是 Apache。在Linux的世界里 DesdeLinux 它不是唯一使用 Nginx 的,据我所知,emsLinux 和 MuyLinux 也使用它:)

我在Nginx上的亲身经历可以追溯到几年前,当时我出于必要而开始寻找Apache的轻量级替代品。 当时Nginx打算使用0.6版,并且它与用PHP制作的高需求站点的兼容性不是最佳的,但是从现在的0.9版开始(Debian Stable提供v1.2.1,ArchLinux提供v1.4.2)有了很大的改进,以至于通过适当的配置和Nginx + PHP的结合,一切都将像魅力一样。

在本教程系列中 我将使用Nginx版本1.2.1-2.2,可在Debian Stable repos(Wheezy)中找到。

PHP5:

在我看来,PHP是当今许多站点(和CMS)都可以使用的编程语言,在我看来,这是家族的败笔。 也就是说,以我个人的经验,大型网站,访问量大,具有许多选项,功能等,如果使用PHP创建这样的网站,它将比使用类似的网站消耗更多的资源。 RoR。 我的经验是,PHP是一个巨大的资源巨龙,PHP + Apache足以吞没数百MB的RAM,而无需真正的需要。

不使用 RoR、Django 或其他东西的原因很简单 DesdeLinux (博客,我们的旗舰)使用 WordPress,这是一个用 PHP 开发的 CMS,为我们提供了很多便利,以至于我们根本不打算在短期或中期改变它,老实说,WordPress,即使它并不完美,为我们提供我们所需要的甚至更多的服务。

关于PHP,在这些教程中,我将使用 PHP版本5.4.4-14 可在Debian Wheezy(稳定)上使用

Spawn_FastCGI:

这可以说是Nginx与PHP的结合,也就是说,即使他们安装了PHP5软件包(如果他们没有安装Spawn_FastCGI并在使用PHP打开网站时执行),浏览器也会下载该文件,但不会显示任何内容。已对.php进行了编程,因为服务器不知道如何处理.php文件,这就是为什么必须安装和配置Spawn_FastCGI的原因。

如果我们使用Apache,则就像安装libapache2-mod-php5软件包一样简单,但是由于我们使用Nginx,因此必须安装spawn-fcgi软件包。 另外,在教程中,我将解释如何在/etc/init.d/中为其创建初始脚本,以便您可以更舒适地对其进行控制。

MySQL的:

这可能是一个很大的问号,或者对于某些人来说可能是不和谐的音符。 我认识的许多人都会问我一个问题:为什么要使用MySQL而不是MariaDB?

问题很简单,我现在没有足够的时间专门进行从 MySQL 到 MariaDB 的迁移,理论上这种迁移应该对每个人都是透明的,与所有东西 100% 兼容,但那是......我说的是理论上。当我开始移动服务时 DesdeLinux 从一个 VPS 到另一个 VPS,我不得不放弃 Apache 并使用 Nginx,这涉及到不同的配置文件、声明 VHost 的不同方式、从头开始安装和配置服务器及其服务,当时我无法向列表,而且说实话,我将 Apache 更改为 Nginx,因为 Apache 不能满足我的需求,但是,MySQL 到目前为止 100% 满足我的需求,我认为我没有理由通过更改它已经在工作的东西来增加我的工作量技术上对我来说很好。

在解释了为什么我没有安装MariaDB的原因之后,还解释了由于绝大多数网站都需要数据库来进行操作,因为该数据库将存储很多信息(或几乎所有信息)。 有些人喜欢Postgre或其他人,在本系列教程中,我将解释如何 安装MySQL并为每个站点配置单独的用户.

La 我将使用的MySQL版本是v5.5.31

APC:

APC是PHP的优化器(非常简单地说明)。 正确配置后,它使我们能够更好地处理PHP,并且服务器的响应速度更快。

有类似memcache的替代方法,但是,我一直使用APC并取得了非常令人满意的效果。 我建议阅读英文文章: 比较APC和Memcache作为本地内容缓存

我将在本教程中使用的版本 php-apc v3.1.13-1 也可以在Debian Stable仓库中找到。

总之:

这种安装配置Web服务器的方法并非最佳,也不是很多,例如,许多人会推荐Varnish,根据我的阅读,这确实是奇迹,因为所有或几乎所有内容都已缓存,但是在我们的情况下,我们没有需要始终将网站的100%缓存,因为我们不希望或需要进入极端状态。 但是,如上所述,我要澄清一下:“据我所读”,直到今天我个人还没有使用Varnish,所以我不能给您100%的客观意见。

这将是一系列教程,我将在其中向您展示如何安装像本分钟托管的 Web 服务器。 DesdeLinux (博客、论坛、粘贴等)。该博客每天有 30.000 次访问,几乎有 200 个用户同时访问,但 RAM 消耗不超过 500MB,对于某些人来说这可能是过度消耗,但是......嘿,我们有 3GB RAM,不到 500MB(其中包括FTP 服务、SSH 等)真的很好吧? 🙂

所有的“魔术”不仅是由Nginx + Spawn_FastCGI + APC完成的,我们的博客缓存系统配置得非常好,并且Nginx的规则也很精确,这使得博客即使在收到大量流量的情况下也比PHP少得多通常,因为它已经缓存了很多内容。 如果您有一个高需求的站点并且遇到资源问题,那么毫无疑问,我建议您研究一下哪种缓存系统最适合您,哪个缓存系统最适合您的需求。

我希望您发现这些教程很有趣,在每一篇教程中,我都将尝试以全面,详细和简单的方式来解释所有内容。

问候


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   布鲁诺·卡西欧(Bruno Cascio)

    很好,很清楚! 我祝贺你!

    1.    KZKG ^ Gaara

      谢谢

  2.   克里斯托弗·卡斯特罗

    很好的教程。

    让我感到疑惑的是他们如何配置电子邮件服务器。

    1.    KZKG ^ Gaara

      MailServer与众不同,也就是说,它与Web服务器无关,正如您所知🙂

      但是,很久以前,我决定不让MailServer复杂化,我选择使用iRedMail(对MySQL,LDAP和Postgre的支持)以及在配置文件中添加的正确设置和详细信息,一切正常。

  3.   腐烂87

    我喜欢这篇文章,我正在等待系列文章

    1.    KZKG ^ Gaara

      谢谢,我希望在星期一或星期二带来下一个,它将处理Nginx的安装和配置。

  4.   ACA

    很好,正确的配置,很难找到,因素之间的折衷有时几乎无法解决,我前一阵子也去了nginx,后来去了mariadb(最近,我想是一年前)。

    //正如我提到的,如果您提高了chroot的可能性,并使用proxy_cache_path也很有用,那就很好了。 还要比较套接字(在可能的情况下)与端口的比较。 并明确定义孩子/公羊的数量

    问候

    1.    KZKG ^ Gaara

      谢谢你的评论🙂
      是的,当然,将Nginx与系统的其余部分保持隔离非常好,我在这些教程中没有考虑过这种可能性,我将拭目以待。 关于proxy_cache_path,我从没使用过,我会读一些有关它的进展。

      关于线程数(最小和最大),在Nginx配置中显然已定义,在Nginx帖子中,我将谈论很多有关.conf文件的内容😉

      再次感谢您的评论。

  5.   MSX

    这种类型的HowTos使网络真正为计算机科学家所用,因为它为我们节省了大量的研究和测试时间,直到我们最终决定合适的选项为止,非常感谢!

    一个问题,这可以在Debian上运行吗? 什么版本的操作系统和软件包?

    的问候!

    1.    KZKG ^ Gaara

      谢谢。
      确实,报告,重复和重复新闻的网站已经太多了……需要的是放有教程的网站,这正是网络所需要的!

      是的,Debian Wheezy(当前稳定版),软件包的版本就在帖子中there

  6.   埃利奥时间3000

    极好的评论。 让我们看看我是否使用ZPanel X做一种勘误,顺便说一句,在Debian Wheezy中手动进行安装。

  7.   费德里科·安东尼奥·瓦尔德斯·图亚格

    继续前进KZKG ^ Gaara !!!,“真理的最佳判据是实践”,并且您对自己的写作有经验。 一个专业且有效的网站。 美国职棒大联盟(Dude)。

    1.    埃利奥时间3000

      确实如此。 另外,当我开始使用Windows中安装的Web服务器时,事实是,如果使用WordPress,Apache的资源消耗会激增(在Drupal中,它消耗了一半的资源)。

  8.   运输

    我认为对于Nginx部分,本教程将派上用场。 现在,我想使用Nginx,php,Varnish和MariaDB安装服务器。 但是,当然,我们必须开始,在与服务器打架时,懒惰可以为我做很多事情,现在我对拥有xDD的典型指示灯和内存缓存感到满意。

    问候。

  9.   奥罗斯

    太好了,其中只有一个会派上用场🙂另一个很期待。

  10.   伊凡·加布里埃尔·索萨(Ivan Gabriel Sosa)

    我们关注您。 我们目前正开始在Web服务器领域。 我们从Hostinger购买了两个,一个朋友帮助我们从头开始配置它(PHP,MySQL,Apache)。 这是Linux的唯一组合,Linux是我自XNUMX月以来一直使用的平台。
    但是我对这个话题非常感兴趣。 问候!

  11.   若泽·曼努埃尔·

    我从来没有安装过Web服务器,但是如果我想安装Web服务器,那是一个问题,请问理解教程和安装的水平是否很高,或者我是否可以尝试基本知识? 提前致谢。

    1.    埃利奥时间3000

      事实是,它不需要很多知识就能处理数据库服务器。 一位已经尝试过这种经验的人会告诉您。

  12.   毛里求斯

    您好,这一系列的帖子将非常有用。

    我最近安装了Nginx + Php Fastcgi + Mariadb。 Nginx。

    所有这一切,我都是在Archlinux上完成的,因为从我的角度来看,该发行版是唯一的发行版,它带来的好处并不多。 我将其放在笼中的环境中,使它无法正常工作给我带来很多麻烦。

    现在它运行良好。 尽管我有兴趣了解您的意见,但对于孩子和父亲的工作过程,他们给我的提示越多越好。

    所有这些只是为了练习。
    该设备具有4GB DDR2内存和2Ghz Core 2.4duo处理器。

    问候,我期待本系列的后续帖子。

  13.   肌肉

    200个用户同时连接?
    只在一天的某些时间吧? 因为否则它将超过每天30.000次访问。

    1.    KZKG ^ Gaara

      是的,当然,网络上并不总是有200个人,这时几乎有40个人,因为还很早,在几个小时内,他们将超过100个人。

  14.   猎人

    只是为了好玩,我只是从工作站上的lighty切换到nginx(现在是Symfony2),我从这里[1]拿了conf,非常简单。

    [1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas

    等待这个😀的继续

    1.    KZKG ^ Gaara

      这周我必须发表它,感谢您阅读我们🙂

      1.    健康

        是啊缺少很多吗?

  16.   院长

    好帖子…

  17.   诺埃尔·伊凡

    晚上好。
    由于学校项目的规范,他们让我在ORACLE MV VIRTUALBOX中的OPENBSD 5.4中安装NGINX,使其能够使用PHP,MYSQL,NADAMAS等,但我无法找到上述信息,但我认为上面有问题。