Nginx + MySQL + PHP5 + APC + Spawn_FastCGI로 웹 서버를 설치하는 방법 [1 부 : 프레젠테이션]

얼마 전에 우리는 지금 그것을 언급했습니다. DesdeLinux (모든 서비스가)에서 작동 중입니다. GNUTransfer.com 서버. 블로그는 속도, 유동성 측면에서 많이 향상되었습니다.UsemosLinux 병합 후) 매일 30.000 회 이상 방문 (동시에 연결된 거의 200 명의 사용자). 이 트래픽 볼륨에서도 좋은 서버 성능을 달성하는 방법은 무엇입니까?

현재 Justice (블로그 및 기타 서비스가있는 VPS)에는 3GB의 RAM이 있지만 500MB 미만이 소비되며 사용할 소프트웨어를 올바르게 선택하고 적절한 구성을하면 가능합니다. 예를 들어, Apache는 의심 할 여지없이 세계에서 가장 훌륭하고 호스팅과 관련하여 1 위이지만 정확히 그렇기 때문에 Apache가 항상 최상의 옵션은 아닙니다. 트래픽이 많고 서버 하드웨어가 실제로 크지 않은 경우 (예 : 8GB 또는 16GB RAM) Apache는 너무 많은 RAM을 사용하여 특정 시간에 서버가 응답하는 데 너무 오래 걸리거나 더 나쁜 경우에는 사이트가 오프라인 상태 일 수 있습니다. 부족한 자원. 이것이 우리 중 많은 사람들이 Apache보다 Nginx를 선택하는 이유입니다.

Nginx에 :

기사의 앞부분에서 이미 Nginx에 대해 이야기했습니다. Nginx : Apache의 흥미로운 대안, 여기서는 Apache, LightHttpd 또는 Cherokee와 같은 웹 서버라고 말했지만 Apache에 비해 성능이 뛰어나고 하드웨어 소비가 적기 때문에 Facebook, MyOpera.com, DropBox 또는 심지어 WordPress와 같은 대규모 사이트가 많은 이유가 바로 여기에 있습니다. .com에서는 Apache 대신 Nginx를 사용합니다. 리눅스의 세계에서는 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 저장소 (Wheezy)에서 사용할 수 있습니다.

PHP5 :

오늘날 많은 사이트 (및 CMS)에서 작동하는 프로그래밍 언어 인 PHP는 가족의 흑양이라고 생각합니다. 즉, 내 개인적인 경험에서, 방문수가 많고 옵션, 기능 등이 많은 대규모 사이트에서 그러한 사이트가 PHP로 만들어지면 유사한 사이트보다 더 많은 리소스를 소비하게됩니다. RoR에서. 내 경험은 여러분, PHP는 거대한 리소스 드래곤이며, PHP + Apache는 실제 필요없이 수백 MB의 RAM을 삼키기에 충분합니다.

RoR, Django 또는 다른 것을 사용하지 않는 이유는 간단합니다. DesdeLinux (블로그, 우리의 주력)은 우리에게 많은 편안함을 제공하는 PHP로 개발된 CMS인 WordPress와 함께 작동하므로 우리는 단기 또는 중기적으로 변경할 계획이 없습니다. 솔직히 WordPress는 완벽하지 않더라도, 우리에게 필요한 것, 어쩌면 그 이상을 제공합니다.

PHP와 관련하여이 튜토리얼에서는 PHP 버전 5.4.4-14 Debian Wheezy (Stable)에서 사용 가능

Spawn_FastCGI :

이것은 Nginx와 PHP를 연결하는 것이라고 할 수 있습니다. 즉, PHP5 패키지가 설치되어 있어도 Spawn_FastCGI가 설치되어 실행되지 않으면 PHP에서 사이트를 열면 브라우저가 파일을 다운로드합니다. 서버가 .php 파일을 처리하는 방법을 모르기 때문에 .php가 프로그래밍 된 것을 보여주지 않기 때문에 Spawn_FastCGI를 설치하고 구성하는 것이 필수적입니다.

Apache를 사용했다면 libapache2-mod-php5 패키지를 설치하는 것만 큼 간단하지만 Nginx를 사용하기 때문에 대신 spawn-fcgi 패키지를 설치해야합니다. 또한 튜토리얼에서는보다 편안하게 제어 할 수 있도록 /etc/init.d/에 초기 스크립트를 만드는 방법을 설명합니다.

MySQL :

이것은 큰 물음표 일 수도 있고, 일부의 경우 불일치 한 메모 일 수도 있습니다. 내가 아는 많은 사람들이 내게 질문 할 것입니다. MariaDB가 아닌 MySQL을 사용하는 이유는 무엇입니까?

문제는 단순히 지금 이 순간 MySQL에서 MariaDB로 마이그레이션을 수행하는 데 전념할 시간이 충분하지 않다는 것입니다. 마이그레이션은 이론적으로 모든 사람에게 투명하고 모든 것과 100% 호환되어야 하지만... 나는 이론적으로 말했다. 당시 이사 서비스를 시작하면서 DesdeLinux 하나의 VPS에서 다른 VPS로 Apache를 남겨두고 Nginx를 사용해야 했습니다. 여기에는 다양한 구성 파일, VHost를 선언하는 다양한 방법, 서버와 해당 서비스의 처음부터 설치 및 구성이 포함되었습니다. 당시에는 다른 작업을 VPS에 추가할 수 없었습니다. 그리고 솔직히 말해서 Apache가 내 요구 사항을 충족시키지 못했기 때문에 Apache를 Nginx로 변경했습니다. 하지만 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 저장소에서도 사용할 수 있습니다.

요약하면 :

웹 서버 구성을 설치하는이 방법은 가장 최적도 아니고 그다지 적지도 않습니다. 사이트의 100 %가 항상 캐시되어야합니다. 그러나 위에서 말했듯이 "내가 읽은 한", 개인적으로 오늘까지 Varnish를 사용하지 않았기 때문에 100 % 객관적인 의견을 드릴 수 없습니다.

이것은 이 분에서 호스팅하는 것과 같은 웹 서버를 설치하는 방법을 보여주는 일련의 튜토리얼이 될 것입니다. DesdeLinux (블로그, 포럼, 붙여넣기 등). 블로그에는 매일 30.000명의 방문자가 방문하고 거의 200명의 사용자가 동시에 블로그에 액세스하지만 RAM 소비량은 500MB를 초과하지 않습니다. 어떤 사람들에게는 이것이 과도한 소비일 수 있지만... 우리는 3GB RAM, 500MB 미만(포함)을 가지고 있습니다. FTP 서비스, SSH 등) 정말 좋죠? 🙂

모든 '마법'은 Nginx + Spawn_FastCGI + APC에 의해 수행 될뿐만 아니라 블로그 캐시 시스템이 정말 잘 구성되어 있고 Nginx의 규칙이 정확합니다. 따라서 블로그가 일반적인 트래픽 프로세스보다 훨씬 적은 PHP를 수신 할 때도 블로그를 만듭니다. 이미 많은 양이 캐시되어 있기 때문입니다. 사이트 수요가 많고 리소스 문제가있는 경우 어떤 캐시 시스템이 가장 잘 작동하는지, 어떤 캐시 시스템이 자신의 요구에 가장 적합한 지 알아 보는 것이 좋습니다.

이 튜토리얼이 흥미 로웠 으면 좋겠습니다. 각 튜토리얼에서 가능한 한 포괄적이고 상세하며 간단한 방법으로 모든 것을 설명하려고 노력할 것입니다.

안부


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   브루노 카시오

    아주 좋고 명확합니다! 축하합니다!

    1.    KZKG ^ 가아라

      고마워.

  2.   크리스토퍼 카스트로

    아주 좋은 튜토리얼.

    저를 의심스럽게 만드는 것은 그들이 이메일 서버를 어떻게 구성했는지입니다.

    1.    KZKG ^ 가아라

      MailServer는 별개입니다. 즉, 아시다시피 웹 서버와 관련이 없습니다.

      그러나 오래 전에 MailServer로 복잡하지 않기로 결정했고 iRedMail (MySQL, LDAP 및 Postgre 지원)을 사용하기로 선택했으며 구성 파일에 추가 한 적절한 설정과 세부 정보를 사용하면 모든 것이 잘 작동합니다.

  3.   썩은 87

    나는 기사를 좋아한다, 나는 일련의 기사를 기다리고있다

    1.    KZKG ^ 가아라

      감사합니다. 다음 제품을 월요일이나 화요일에 가져오고 싶습니다. Nginx 설치 및 구성을 처리합니다.

  4.   에이커

    매우 훌륭하고 올바른 구성, 찾기가 어렵고, 요소 간의 타협이 거의 해결되지 않는 경우도 있습니다. 또한 얼마 전에 nginx에 갔다가 나중에 mariadb에갔습니다 (최근 XNUMX 년 전에 생각합니다).

    // 언급했듯이 chroot의 가능성을 높이고 유용한 proxy_cache_path를 사용하면 좋을 것입니다. 또한 포트에 대한 소켓 (가능한 경우) 비교. 자녀 / 숫양의 수를 잘 정의하십시오.

    안부

    1.    KZKG ^ 가아라

      귀하의 의견에 감사드립니다 🙂
      예, 물론 Nginx를 시스템의 나머지 부분과 분리하여 유지하는 것이 매우 좋을 것입니다.이 튜토리얼에서는 그 가능성을 고려하지 않았기 때문에 무엇을 할 수 있는지 살펴 보겠습니다. proxy_cache_path에 대해서는 한번도 사용 해본 적이 없습니다. 어떻게 진행되는지 알아보기 위해 조금 읽어 보겠습니다.

      스레드 수 (최소 및 최대)와 관련하여 Nginx 구성에서 분명히 정의되어 있습니다 .Nginx 게시물에서 .conf 파일에 대해 많이 이야기하겠습니다 😉

      다시 한 번 귀하의 의견에 감사드립니다.

  5.   MSX

    이러한 유형의 HowTos는 우리가 마침내 적절한 옵션을 결정할 때까지 수 많은 시간의 연구와 테스트를 절약 할 수 있기 때문에 컴퓨터 과학자들에게 웹을 진정으로 강력하게 만듭니다. 감사합니다!

    한 가지 질문은 데비안에서 실행됩니까? OS 및 패키지의 버전은 무엇입니까?

    안녕하십니까!

    1.    KZKG ^ 가아라

      그라시아.
      실제로 뉴스를보고하고 반복하고 반복하는 사이트는 이미 너무 많습니다. 필요한 것은 튜토리얼을 넣는 사이트입니다. 웹에 필요한 것입니다!

      예, Debian Wheezy (현재 Stable), 패키지 버전이 게시물에 있습니다 😉

  6.   엘리오타임3000

    훌륭한 댓글입니다. ZPanel X에서 일종의 정오표를 작성하고 우연히 Debian Wheezy에서 수동으로 설치를 수행하는지 살펴 보겠습니다.

  7.   페데리코 안토니오 발데스 투자 그

    KZKG ^ Gaara !!!, The Best Criterion of Truth is Practice, 그리고 당신은 당신이 쓴 것에 대한 경험이 있습니다. 전문적이고 작동하는 웹 사이트. 메이저 리그 야구, 야.

    1.    엘리오타임3000

      사실입니다. 또한 Windows에 설치 한 웹 서버로 플레이하기 시작했을 때 WordPress를 사용하면 Apache가 리소스 소비 측면에서 증가한다는 것입니다 (Drupal에서는 리소스의 절반을 소비했습니다).

  8.   마차

    Nginx 부분에서는이 튜토리얼이 유용 할 것이라고 생각합니다. 이제 Nginx, php, Varnish 및 MariaDB로 서버를 설치하고 싶습니다. 하지만 당연히 시작해야하고 게으름은 서버와 싸울 때 많은 일을 할 수 있으며 지금은 xDD가있는 전형적인 램프와 Memcache에 만족합니다.

    인사말.

  9.   오로스Zx

    좋아요,이 중 하나만 유용 할 것입니다 🙂 다른 사람이 그것을 기대하고 있습니다.

  10.   이반 가브리엘 소사

    우리는 당신을 따릅니다. 우리는 현재 웹 서버의 세계에서 시작하고 있습니다. Hostinger에서 두 개를 구입했으며 친구가 처음부터 구성하도록 도와주었습니다 (PHP, MySQL, Apache). 내가 XNUMX 월부터 사용했던 플랫폼 인 Linux에서 사용할 유일한 조합입니다.
    하지만 저는이 주제에 매우 관심이있었습니다. 건배!

  11.   호세 마누엘

    웹 서버를 설치 한 적이 없지만 설치하고 싶다면 질문, 튜토리얼을 이해하고 설치하는 데 필요한 수준이 높을까요, 아니면 기본 지식으로 사용해 볼 수 있습니까? 미리 감사드립니다.

    1.    엘리오타임3000

      진실은 데이터베이스 서버를 처리하기 위해 많은 지식이 필요하지 않다는 것입니다. 이미 그 경험을 시도한 사람이 당신에게 말합니다.

  12.   마우

    안녕하세요,이 게시물 시리즈로 할 일이 매우 좋습니다.

    최근에 Nginx + Php Fastcgi + Mariadb를 설치했습니다. Nginx.

    이 모든 것을 Archlinux에서했습니다. 그 배포판은 내 관점에서 볼 때 다른 배포판만큼 좋은 것을 가져 오지 않는 유일한 배포판이기 때문입니다. 갇힌 환경에 두었고 완벽하게 작동하는 데 많은 불편을 겪었습니다.

    이제 완벽하게 작동합니다. 나는 당신의 의견을 아는 데 관심이 있지만, 자녀와 아버지 과정에 대한 의견을 더 많이 줄수록 더 좋습니다.

    이 모든 것은 연습을위한 것입니다.
    이 장비에는 4GB의 DDR2 램과 2Ghz Core 2.4duo 프로세서가 있습니다.

    이 시리즈의 다음 포스트를 기대합니다.

  13.  

    200 명의 사용자가 동시에 연결 되었습니까?
    하루 중 특정 시간에만 그렇죠? 그렇지 않으면 일일 방문 30.000 회를 초과 할 것이기 때문입니다.

    1.    KZKG ^ 가아라

      예, 물론 온라인에 항상 200 명이있는 것은 아닙니다. 현재로서는 거의 40 명이 있습니다. 아직 초기이기 때문에 몇 시간 내에 100 명이 넘습니다.

  14.   사냥꾼

    재미를 위해 방금 내 워크 스테이션에서 lighty에서 nginx로 전환했습니다 (지금은 Symfony2). 여기서 [1] 매우 간단하게 conf를 가져 왔습니다.

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

  15.   Apr4xas

    이것의 계속을 기다리고 있습니다 😀

    1.    KZKG ^ 가아라

      이번 주에 게시해야합니다. 읽어 주셔서 감사합니다.

      1.    건배

        과? 많이 빠졌나요?

  16.   학장

    좋은 소식…

  17.   노엘 이반

    안녕하세요.
    학교 프로젝트의 사양으로 인해 ORACLE MV VIRTUALBOX의 OPENBSD 5.4에 NGINX를 설치하여 PHP, MYSQL을 사용할 수있게했습니다. 위의 문제입니다.