Cách cài đặt máy chủ web với Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [Phần 1: Trình bày]

Cách đây không lâu chúng tôi đã đề cập đến điều đó bây giờ DesdeLinux (tất cả các dịch vụ của nó) đang hoạt động Máy chủ GNUTransfer.com. Blog đã được cải thiện rất nhiều về tốc độ, tính lưu động, ngay cả khi chúng tôi không có (sau khi hợp nhất UsemosLinux) hơn 30.000 lượt truy cập mỗi ngày (gần 200 người dùng được kết nối đồng thời). Làm thế nào để đạt được hiệu suất máy chủ tốt ngay cả với lượng lưu lượng truy cập này?

Hiện tại Justice (VPS đặt blog và một số dịch vụ khác) có 3GB RAM, tuy nhiên mức tiêu thụ ít hơn 500MB, điều này có thể thực hiện được với sự lựa chọn chính xác của phần mềm để sử dụng và cấu hình phù hợp của chúng. Ví dụ, Apache chắc chắn là một ứng dụng tuyệt vời trên thế giới, số 1 về lưu trữ, nhưng chính vì lý do đó mà Apache không phải lúc nào cũng là lựa chọn tốt nhất. Khi lưu lượng truy cập cao và phần cứng máy chủ không thực sự lớn (Ví dụ: 8 hoặc 16GB RAM) Apache có thể tiêu tốn quá nhiều RAM khiến máy chủ tại một số thời điểm nhất định mất quá nhiều thời gian để phản hồi hoặc tệ hơn là trang web của chúng tôi đang ngoại tuyến nguồn lực không đủ. Đây là lý do tại sao nhiều người trong chúng ta chọn Nginx thay vì Apache.

nginx:

Chúng tôi đã nói với bạn về Nginx trước đây trong bài viết Nginx: Một sự thay thế thú vị cho Apache, ở đó chúng tôi đã nói với bạn rằng đó là một máy chủ web như Apache, LightHttpd hoặc Cherokee, nhưng so với Apache, nó nổi bật về hiệu suất và mức tiêu thụ phần cứng thấp, chính xác là lý do tại sao nhiều trang web lớn như Facebook, MyOpera.com, DropBox hay thậm chí WordPress .com sử dụng Nginx thay vì Apache. Trong thế giới Linux DesdeLinux Nó không phải là cái duy nhất sử dụng Nginx, theo như tôi biết, emsLinux và MuyLinux cũng sử dụng nó :)

Kinh nghiệm cá nhân của tôi với Nginx có từ vài năm trước, khi không cần thiết, tôi bắt đầu tìm kiếm các giải pháp thay thế nhẹ cho Apache. Lúc đó Nginx đang ở phiên bản 0.6 và khả năng tương thích với các trang web có nhu cầu cao được tạo bằng PHP không phải là tối ưu nhất, tuy nhiên ngày nay từ phiên bản 0.9 trở đi (v1.2.1 có sẵn trên Debian Stable, v1.4.2 có trên ArchLinux) đã được cải thiện rất nhiều, đến mức với một cấu hình thích hợp và sự kết hợp của Nginx + PHP, mọi thứ sẽ hoạt động như một sự quyến rũ.

Trong loạt bài hướng dẫn này Tôi sẽ sử dụng phiên bản Nginx 1.2.1-2.2, có sẵn trong kho lưu trữ Ổn định Debian (Wheezy).

PHP5:

PHP, ngôn ngữ lập trình mà nhiều trang web (và CMS) làm việc ngày nay, theo quan điểm của tôi, là con cừu đen của gia đình. Đó là, theo kinh nghiệm cá nhân của tôi, các trang web lớn, với lượng truy cập lớn, với nhiều tùy chọn, chức năng, v.v., nếu một trang web như vậy được tạo bằng PHP, nó sẽ tiêu tốn nhiều tài nguyên hơn so với một trang web tương tự được tạo ra, ví dụ: RoR. Kinh nghiệm của tôi là mọi người, PHP là một con rồng tài nguyên khổng lồ, PHP + Apache đủ để nuốt hàng trăm hàng trăm MB RAM mà không cần thực sự cần.

Lý do không sử dụng RoR, Django hay thứ gì khác chỉ đơn giản là vậy DesdeLinux (blog, lá cờ đầu của chúng tôi) hoạt động với WordPress, một CMS được phát triển bằng PHP mang đến cho chúng tôi rất nhiều tiện ích đến nỗi chúng tôi không có kế hoạch thay đổi nó trong ngắn hạn hoặc trung hạn, thành thật mà nói, WordPress, ngay cả khi nó không hoàn hảo, phục vụ chúng ta những gì chúng ta cần và có thể hơn thế nữa.

Về PHP, trong các hướng dẫn này, tôi sẽ sử dụng Phiên bản PHP 5.4.4-14 có sẵn trên Debian Wheezy (Ổn định)

Spawn_FastCGI:

Điều này có thể nói rằng nó là thứ kết nối Nginx với PHP, tức là, ngay cả khi họ đã cài đặt gói PHP5 nếu họ không cài đặt và thực thi Spawn_FastCGI khi họ mở một trang web bằng PHP thì trình duyệt sẽ tải xuống tệp, nó sẽ không cho họ thấy bất cứ điều gì mà .php đã được lập trình vì máy chủ không biết cách xử lý tệp .php, đó là lý do tại sao cài đặt và cấu hình Spawn_FastCGI là điều cần thiết.

Nếu chúng tôi sử dụng Apache, nó sẽ đơn giản như cài đặt gói libapache2-mod-php5, nhưng vì chúng tôi sử dụng Nginx, chúng tôi sẽ phải cài đặt gói spawn-fcgi. Ngoài ra, trong hướng dẫn này, tôi sẽ giải thích cách tạo tập lệnh ban đầu cho nó trong /etc/init.d/ để bạn có thể điều khiển nó thoải mái hơn.

MySQL:

Đây có thể là một dấu hỏi lớn hoặc có lẽ, đối với một số người, là lưu ý bất hòa. Nhiều người tôi biết sẽ hỏi tôi câu hỏi: tại sao lại sử dụng MySQL mà không phải MariaDB?

Vấn đề đơn giản là tôi không có đủ thời gian để thực hiện việc di chuyển từ MySQL sang MariaDB vào lúc này, một quá trình di chuyển mà về lý thuyết phải minh bạch cho mọi người, tương thích 100% với mọi thứ, nhưng đó là... như Tôi đã nói, về mặt lý thuyết. Lúc đó tôi bắt đầu chuyển dịch vụ DesdeLinux từ VPS này sang VPS khác, tôi phải bỏ lại Apache và sử dụng Nginx, việc này liên quan đến các tệp cấu hình khác nhau, các cách khai báo VHost khác nhau, cài đặt và cấu hình từ đầu máy chủ và các dịch vụ của nó, lúc đó tôi không thể thêm tác vụ nào khác vào list, và thành thật mà nói, tôi đã đổi Apache lấy Nginx vì Apache không đáp ứng được nhu cầu của tôi, tuy nhiên, MySQL cho đến nay đã đáp ứng 100% nhu cầu của tôi, tôi thấy không có lý do gì để tôi tăng khối lượng công việc của mình bằng cách thay đổi thứ mà nó đã hoạt động về mặt kỹ thuật tốt đối với tôi.

Một khi đã giải thích lý do tại sao tôi không cài đặt MariaDB, cũng giải thích rằng vì đại đa số các trang web cần một cơ sở dữ liệu cho hoạt động của chúng, vì nó là nơi lưu trữ rất nhiều thông tin (hoặc gần như tất cả). Có một số người thích Postgre hoặc một số người khác, trong loạt bài hướng dẫn này, tôi sẽ giải thích cách cài đặt MySQL và định cấu hình người dùng riêng biệt cho từng trang web.

La Phiên bản MySQL mà tôi sẽ sử dụng là v5.5.31

APC:

APC là một trình tối ưu hóa cho PHP (giải thích rất đơn giản). Sau khi được cấu hình đúng, nó cho phép chúng tôi xử lý PHP hoạt động tốt hơn, phản hồi từ máy chủ nhanh hơn.

Có những lựa chọn thay thế như memcache, tuy nhiên, tôi đã luôn sử dụng APC và đã có kết quả rất khả quan. Tôi khuyên bạn nên đọc bài viết này bằng tiếng Anh: So sánh APC và Memcache làm bộ nhớ đệm nội dung cục bộ

Tôi sẽ sử dụng phiên bản của php-apc v3.1.13-1 cũng có sẵn trong kho lưu trữ Ổn định Debian.

Tổng kết:

Cách cài đặt cấu hình máy chủ web này không phải là tối ưu nhất và cũng không ít hơn, ví dụ như nhiều người sẽ giới thiệu Varnish, từ những gì tôi đã đọc được thực sự kỳ diệu vì mọi thứ hoặc hầu hết mọi thứ đều được lưu vào bộ nhớ cache, nhưng, trong trường hợp của chúng tôi, chúng tôi không cần điều đó 100% trang web luôn được lưu vào bộ nhớ cache khi chúng tôi không muốn hoặc không cần phải đi đến mức đó. Tuy nhiên, tôi nói rõ, như tôi đã nói ở trên: «theo như tôi đã đọc», cá nhân tôi vẫn chưa sử dụng Varnish cho đến ngày hôm nay, vì vậy tôi không thể đưa ra ý kiến ​​khách quan 100% cho bạn.

Đây sẽ là một loạt hướng dẫn trong đó tôi sẽ chỉ cho bạn cách cài đặt một máy chủ web giống như máy chủ được lưu trữ vào phút này. DesdeLinux (blog, diễn đàn, dán, v.v.). Blog có 30.000 lượt truy cập mỗi ngày, gần 200 người dùng truy cập đồng thời và RAM không tiêu thụ quá 500 MB, đối với một số người, điều này có thể là mức tiêu thụ quá mức nhưng… này, chúng tôi có 3 GB RAM, dưới 500 MB (bao gồm dịch vụ FTP , SSH, v.v.) thực sự tốt phải không? 🙂

Tất cả 'điều kỳ diệu' không chỉ được thực hiện bởi Nginx + Spawn_FastCGI + APC, hệ thống bộ nhớ cache blog của chúng tôi thực sự được cấu hình tốt và các quy tắc cho Nginx chính xác, điều này làm cho blog ngay cả khi nhận được nhiều lưu lượng truy cập, quy trình PHP ít hơn nhiều so với bình thường vì nó đã được lưu trữ rất nhiều. Nếu bạn có một trang web có nhu cầu cao và bạn gặp vấn đề về tài nguyên, tôi khuyên bạn nên nghiên cứu xem hệ thống bộ nhớ đệm nào sẽ hoạt động tốt nhất cho bạn, cái nào sẽ phù hợp nhất với nhu cầu của bạn.

Tôi hy vọng bạn thấy những hướng dẫn này thú vị, trong mỗi hướng dẫn, tôi sẽ cố gắng giải thích mọi thứ một cách toàn diện, chi tiết và đơn giản nhất có thể.

Liên quan


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Bruno cascio dijo

    Rất tốt và rõ ràng! Tôi chúc mừng bạn!

    1.    KZKG ^ Gaara dijo

      thanks

  2.   Christopher castro dijo

    Hướng dẫn rất tốt.

    Điều khiến tôi nghi ngờ là cách họ định cấu hình máy chủ email.

    1.    KZKG ^ Gaara dijo

      MailServer là một thứ gì đó khác biệt, tức là nó không liên quan gì đến máy chủ web như bạn đã biết 🙂

      Tuy nhiên, cách đây khá lâu, tôi đã quyết định không làm phức tạp thêm với MailServer, tôi đã chọn sử dụng iRedMail (hỗ trợ cho MySQL, LDAP và Postgre) và với các cài đặt và chi tiết thích hợp mà tôi thêm vào tệp cấu hình, mọi thứ đều hoạt động tốt.

  3.   thối87 dijo

    Tôi thích bài viết, tôi chờ đợi loạt bài

    1.    KZKG ^ Gaara dijo

      Cảm ơn, tôi hy vọng sẽ mang đến phần tiếp theo vào thứ Hai hoặc thứ Ba, nó sẽ giải quyết vấn đề cài đặt và cấu hình Nginx.

  4.   aca dijo

    Tốt lắm, cấu hình phù hợp, khó kiếm lắm, dung hòa giữa các yếu tố nhiều khi gần như không giải quyết được, mình cũng đã vào nginx cách đây một thời gian rồi sau đó mới lên mariadb (gần đây thì mình nghĩ cách đây XNUMX năm).

    // như tôi đã đề cập sẽ rất tuyệt nếu bạn nêu ra khả năng chroot và sử dụng proxy_cache_path cũng rất hữu ích. Ngoài ra, so sánh giữa ổ cắm (trong trường hợp có thể) so với cổng. và xác định rõ số lượng con / ram.

    Liên quan

    1.    KZKG ^ Gaara dijo

      Cảm ơn bạn đã bình luận 🙂
      Vâng, tất nhiên, sẽ rất tuyệt nếu lồng Nginx để nó tách biệt với phần còn lại của hệ thống, tôi đã không xem xét khả năng đó trong các hướng dẫn này, tôi sẽ xem tôi có thể làm gì. Về proxy_cache_path, tôi chưa bao giờ sử dụng nó, tôi sẽ đọc một chút về nó để xem nó diễn ra như thế nào.

      Về số lượng luồng (min & max) thì trong cấu hình Nginx rõ ràng là đã định nghĩa rồi, trong bài Nginx mình sẽ nói nhiều về file .conf 😉

      Một lần nữa, cảm ơn bạn đã bình luận.

  5.   msx dijo

    Loại HowTos này là thứ làm cho web thực sự mạnh mẽ đối với các nhà khoa học máy tính vì nó giúp chúng tôi tiết kiệm rất nhiều giờ nghiên cứu và thử nghiệm cho đến khi cuối cùng chúng tôi quyết định lựa chọn phù hợp, cảm ơn rất nhiều!

    Một câu hỏi, điều này có chạy trên Debian không? Phiên bản hệ điều hành và gói nào?

    Chúc mừng!

    1.    KZKG ^ Gaara dijo

      Cảm ơn bạn.
      Thật vậy, các trang báo cáo, lặp đi lặp lại tin tức đã có quá nhiều ... điều cần thiết là các trang web đưa các bài hướng dẫn, đó là những gì web cần!

      Có, Debian Wheezy (Ổn định hiện tại), phiên bản của các gói có ngay trong bài đăng 😉

  6.   eliotime3000 dijo

    Nhận xét xuất sắc. Hãy xem liệu tôi có thực hiện một loại Errata với ZPanel X hay không, và tình cờ, thực hiện cài đặt thủ công trong Debian Wheezy.

  7.   Federico Antonio Valdes Toujague dijo

    Hãy tiếp tục KZKG ^ Gaara !!!, Tiêu chí Tốt nhất của Sự thật là Thực hành, và bạn có kinh nghiệm về những gì bạn viết. Một trang web chuyên nghiệp và hoạt động. Major League Baseball, Dude.

    1.    eliotime3000 dijo

      Đúng. Ngoài ra, khi tôi bắt đầu chơi với các máy chủ web mà tôi đã cài đặt trong Windows, sự thật là Apache sẽ tiêu tốn nhiều tài nguyên hơn nếu bạn sử dụng WordPress (trong Drupal, nó tiêu thụ một nửa tài nguyên).

  8.   xe dijo

    Tôi nghĩ rằng đối với phần Nginx, hướng dẫn này sẽ hữu ích. Bây giờ tôi muốn cài đặt một máy chủ với Nginx, php, Varnish và MariaDB. Nhưng tất nhiên, chúng ta phải bắt đầu, và sự lười biếng có thể ảnh hưởng rất nhiều đến tôi khi phải chiến đấu với các máy chủ và hiện tại, tôi hài lòng với đèn và memcache điển hình mà tôi có xDD.

    Một lời chào.

  9.   auroszx dijo

    Tuyệt vời, chỉ một trong số này sẽ có ích 🙂 Một người khác mong chờ nó.

  10.   Ivan Gabriel Sosa dijo

    Chúng tôi theo dõi bạn. Chúng tôi hiện đang bắt đầu trong thế giới máy chủ web. Chúng tôi đã mua hai cái từ Hostinger và một người bạn đã giúp chúng tôi cấu hình nó từ đầu (PHP, MySQL, Apache). Nó là sự kết hợp duy nhất được sử dụng trong Linux, một nền tảng mà tôi đã sử dụng từ tháng Giêng.
    Nhưng tôi rất quan tâm đến chủ đề này. Chúc mừng!

  11.   Jose Manuel dijo

    Tôi chưa bao giờ cài đặt máy chủ web nhưng nếu tôi muốn làm điều đó, một câu hỏi, mức độ cần thiết để hiểu các hướng dẫn và cài đặt có cao không hay với kiến ​​thức cơ bản tôi có thể thử không? Cảm ơn trước.

    1.    eliotime3000 dijo

      Sự thật là nó không đòi hỏi nhiều kiến ​​thức để có thể xử lý một máy chủ cơ sở dữ liệu. Một người đã thử trải nghiệm đó cho bạn biết.

  12.   Mauritius dijo

    Xin chào, đây là điều rất tốt những gì bạn sẽ làm với loạt bài viết này.

    Gần đây tôi đã cài đặt Nginx + Php Fastcgi + Mariadb. Nginx.

    Tất cả những điều này, tôi đã làm trong Archlinux, bởi vì bản phân phối đó là bản duy nhất theo quan điểm của tôi, không mang lại nhiều tiện ích như những bản khác. Tôi đặt nó trong một môi trường lồng và điều đó gây cho tôi rất nhiều bất tiện khi nó hoạt động hoàn hảo.

    Bây giờ nó đang hoạt động hoàn hảo. Mặc dù tôi muốn biết ý kiến ​​của bạn, nhưng về quy trình của cha và con, bạn càng cho tôi nhiều mẹo thì càng tốt.

    Tất cả điều này chỉ là để thực hành.
    Máy có 4GB ram DDR2 và bộ vi xử lý Core 2duo 2.4Ghz.

    Xin chào và tôi rất mong chờ những bài viết sắp tới của loạt bài này.

  13.   bắp thịt dijo

    200 người dùng được kết nối đồng thời?
    Chỉ vào những thời điểm nhất định trong ngày, phải không? Bởi vì nếu không nó sẽ vượt quá 30.000 lượt truy cập hàng ngày.

    1.    KZKG ^ Gaara dijo

      Tất nhiên, không phải lúc nào cũng có 200 người trực tuyến, tại thời điểm này có gần 40 người vì còn sớm, trong vài giờ nữa họ sẽ vượt quá 100 người.

  14.   thợ săn dijo

    Để cho vui, tôi vừa chuyển từ lighty sang nginx trên máy trạm của mình (Symfony2 ngay bây giờ), tôi lấy conf từ đây [1], rất đơn giản.

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

  15.   Tháng tư4xas dijo

    Chờ đợi sự tiếp tục của điều này 😀

    1.    KZKG ^ Gaara dijo

      Tuần này tôi phải xuất bản nó, cảm ơn vì đã đọc chúng tôi 🙂

      1.    Salud dijo

        và? còn thiếu rất nhiều?

  16.   Dean dijo

    Bài viết hay…

  17.   NOEL IVAN dijo

    CHÀO BUỔI TỐI.
    DO CÁC THÔNG SỐ KỸ THUẬT CỦA DỰ ÁN TRƯỜNG HỌC, HỌ CHO TÔI CÀI ĐẶT NGINX TRONG OPENBSD 5.4 TRONG ORACLE MV VIRTUALBOX ĐỂ CÓ THỂ SỬ DỤNG PHP, MYSQL, AMONG KHÁC, NADAMAS MÀ TÔI KHÔNG THỂ TÌM HIỂU THÔNG TIN LIÊN QUAN ĐẾN NHỮNG ĐIỀU TRÊN ĐÃ NÓI, TIN RẰNG LÀ VẤN ĐỀ ĐỂ TÔI TRÊN.