如何使用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也比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)。 這是我自XNUMX月以來一直使用的平台,是Linux中使用的唯一組合。
    但是我對這個話題非常感興趣。 乾杯!

  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.    Salud的 他說:

        和? 缺少很多嗎?

  16.   院長 他說:

    好帖子…

  17.   諾埃爾·伊凡 他說:

    晚上好。
    由於學校項目的規範,他們讓我在ORACLE MV VIRTUALBOX中的OPENBSD 5.4中安裝NGINX,使其能夠使用PHP,MYSQL,NADAMAS等,但我無法找到上述信息,但我認為上面有問題。