Web-server = Nginx + PHP

Материал из ИНФОвики
Перейти к: навигация, поиск

Эта заметка открывает серию статей, посвящённых настройке высокопроизводительного Web-сервера, поддерживающего PHP-приложения, на базе известного экономичного и эффективного httpd-сервера, Nginx (Engine-X) Игоря Сысоева.

Статьи посвящены всем предварительным этапам настройки операционной системы и предполагают, что вы настраиваете среду в выделенном или виртуальном выделенном сервере. Я лично при настройке подобной среды предпочитаю использовать CentOS, инструкции будут даваться для этой системы, для всех прочих будут незначительные расхождения, относящиеся к конкретным командам установки тех или иных компонент из стандартных хранилищ (репозиториев).

Очень грубая оценка: установленные компоненты позволяют на VDS с 512 Mb памяти и процессором эффективной частоты 1.5GHz обслуживать в сутки до 500 тысяч запросов, возвращающих в среднем 30кб страницы, создаваемых CMS Drupal 6.x. Подобный VPS можно приобрести по расценкам от 5.95$ в месяц.

Комплект, о котором идет речь, включает в себя:

  • Web-сервер nginx
  • SQL-сервер MySQL
  • PHP 5.2.*/5.3.* (работающий через FastCGI)
  • xcache, оптимизатор и кэш PHP
  • сервер memcached

Другие компоненты будут описаны в дополнительных статьях.

Содержание

Предварительная установка компонент и дистрибутивов

Предполагается, что, помимо штатных репозиториев CentOS, вы также подключили EPEL (пройдите по указанной ссылке, чтобы получить сведения об установке).

Следующая команда установит всё то, что необходимо иметь, и что доступно из стандартных дистрибутивов:

yum install \
  gcc-c++ bison autoconf autoconf213 \
  make mysql  mysql-devel  mysql-server \
  libxml2 libxml2-devel \
  curl curl-devel \
  libjpeg libjpeg-devel \
  libpng libpng-devel \
  freetype freetype-devel \
  libc-client-devel \
  krb5-libs krb5-devel \
  openldap openldap-devel \
  libidn libidn-devel libtool-ltdl \
  libmcrypt libmcrypt-devel \
  libevent libevent-devel \
  gmp gmp-devel \
  pcre pcre-devel \
  libxslt libxslt-devel \
  gd gd-devel \
  GeoIP GeoIP-data GeoIP-devel

Не всё перечисленное необходимо для всех целей, я указал то, что нужно для моих сайтов и проектов.

Вам также потребуется компилировать часть ПО из дистрибутивов (для наибольшей эффективности), вот список того, что потребовалось мне:

  • lemon v1.0: lemon-1.0.20090718.tar.gz - парсер, необходим для эффективной сборки SQLite
  • libmemcached: libmemcached-1.0.5.tar.gz - API к серверу memcached
  • memcached: memcached-1.4.13.tar.gz - сервер memcached
  • nginx: nginx-1.0.14.tar.gz - сервер nginx
  • php 5.2: php-5.2.17.tar.bz2 - интерпретатор языка PHP версии 5.2
  • php 5.3: php-5.3.10.tar.bz2 - интерпретатор языка PHP версии 5.3
  • re2c: re2c-0.13.5.tar.gz - быстрый лексический анализатор (для оптимизации лексического анализатора PHP)
  • (*) spawn-fcgi: spawn-fcgi-1.6.3.tar.bz2 - FastCGI-сервер для вызова PHP (сейчас я перешёл на php-fpm), входит в состав lighttpd.
  • xcache: xcache-1.3.2.tar.bz2 - кэш и оптимизатор байт-кода PHP (позволяет экономить на компиляции часто вызываемых PHP-скриптов)

Внимание: вы ни в коем случае не обязаны брать файлы именно с указанных выше ссылок. Я их там храню для использования в собственных задачах, чтобы можно было создавать готовую Web-среду исполнением одного-единственного скрипта. Надёжнее брать указанные файлы из их источников, и, возможно, вам больше подойдут другие версии.

bison, lemon и re2c не являются необходимыми, я их использую в целях повышения эффективности.

Установка отдельных компонент

PHP

Подробное описание установки PHP вынесено в отдельную статью: Web-server = Nginx + PHP, установка PHP.

xcache

Подробное описание установки акседератора Xcache вынесено в отдельную статью: Web-server = Nginx + PHP, установка xcache.

memcached

Подробное описание установки memcached вынесено в отдельную статью: Web-server = Nginx + PHP, установка memcached.

fcgi-сервер

Подробное описание установки fcgi-сервера вынесено в отдельную статью: Web-server = Nginx + PHP, установка FactCGI сервера.

nginx

Подробное описание установки nginx вынесено в отдельную статью: Web-server = Nginx + PHP, установка nginx.

Прочие вопросы конфигурации

Оставшиеся замечания и советы по завершению установки сервера вынесены в отдельную статью.

комментарии поддерживаются Disqus