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