Установка Alternative PHP Cache (APC) на сервер Ubuntu 12.04
APC – это система кэширования кодов PHP, которая позволяет ускорить сайт. PHP – это динамический серверный язык сценариев, который нужно анализировать, компилировать и запускать на сервере при каждом запросе страницы. Однако во многих случаях запросы повторяются, а потому облачному серверу приходится повторно обрабатывать каждый из них.
В этом случае на помощь приходит APC, или Alternative PHP Cache. Этот инструмент сохраняет код PHP в операционной памяти и при необходимости извлекает его. В сущности, он обходит обработку и компиляцию кода, что позволяет свести к минимуму нагрузку на сервер.
Данное руководство продемонстрирует установку и настройку APC.
Примечание: Для выполнения руководства нужен предварительно настроенный сервер Ubuntu 12.04 с привилегиями root, а также стек LAMP.
Установка APC
Прежде чем устанавливать кэшер APC, нужно установить некоторые его зависимости. Для этого используйте следующую команду:
sudo apt-get install php-pear php5-dev make libpcre3-dev
Затем можно установить APC при помощи команды pecl:
При этом появится ряд вопросов; рекомендуется просто нажать Enter, чтобы установить стандартные настройки.
В завершение установки нужно отредактировать файл php.ini:
sudo nano /etc/php5/apache2/php.ini
добавив в конец следующую строку:
Сохраните и закройте файл, а затем перезапустите Apache:
sudo service apache2 restart
Чтобы узнать, включён ли APC, откройте info-страницу PHP. Если таковой нет, создайте пустой php-файл в папке /var/www:
И внесите в него такой код:
Сохраните и закройте файл, а затем откройте браузер. На экране появится вся информация о текущей установке PHP. Если APC включён, страница сообщит об этом. В целом, оставлять этот файл не рекомендуется, так как он может предоставить доступ к конфиденциальным данным посторонним пользователям. Удалите его после выполнения проверки.
Настройка APC
После установки кэшер APC запускается с настройками по умолчанию. В его конфигурациях есть две очень важные настройки. Итак, откройте файл php.ini:
sudo nano /etc/php5/apache2/php.ini
Под ранее добавленной строкой, которая включает APC, внесите следующую строку:
Это выделит 64MB оперативной памяти для кэширования APC. В зависимости от требований или ограничений виртуального выделенного сервера это значение может изменяться.
Ниже нужно добавить ещё одну строку:
Настройка apc.stat проверяет скрипт при каждом запросе, чтобы проверить его на изменения. Если он был изменён, она повторно скомпилирует его и кэширует новую версию. Это стандартное поведение APC. Значение 0 в этой строке скажет APC не проверять скрипт на наличие изменений. Это улучшает производительность, но есть и обратная сторона: если в скрипте PHP появились изменения, они не будут внесены до перезапуска облачного сервера. Поэтому устанавливать значение 0 рекомендуется только на сайтах, которые находятся на стадии производства.
Теперь, когда кэшер APC установлен и запущен, можно проверить его состояние и производительность. Найдите файл apc.php в папке /usr/share/php/ и переместите его в папку, доступную для браузера – к примеру, в www:
cp /usr/share/php/apc.php /var/www
Откройте этот файл в браузере:
На экране появится статистика APC. Обратите внимание: APC располагает достаточным объёмом памяти для хранения своих данных.
Кроме того, хорошим показателем работы APC является то, что Hits rate значительно выше, чем Misses rate; в противном случае нужно выполнить дополнительную настройку кэшера.
Заключение
Акселератор APC очень прост в установке и использовании. Чтобы повысить производительность сайта, установите Memcache или Varnish.
ускорение сайта с помощью php-apc
Еще один способ ускорить ваш сайт, работающий на PHP — использовать расширение php-apc.
Это раширение PHP для кэширования и оптимизации промежуточного кода. Кроме того оно кэширует уже откомпилированный код. Таким образом, при повторном обращении к php-скрипту он не будет тратить время на чтение с диска, а также на компиляцию. Наш сервер работает на Debian, используя стандартный PHP и Apache, установленные из репозиториев, поэтому будем рассматривать установку расширения php-apc в этом дистрибутиве.
aptitude install php53-apc aptitude install php-apc
echo " [APC] extension=apc.so apc.enabled=1 apc.shm_segments=1 apc.shm_size=32 // -- количество памяти под кэш, в МБ. apc.ttl=7200 apc.user_ttl=7200 apc.num_files_hint=1024 apc.mmap_file_mask=/tmp/apc.XXXXXX apc.max_file_size = 200M apc.post_max_size = 200M apc.upload_max_filesize = 200M apc.enable_cli=1 apc.rfc1867=1" >> /etc/php5/apache2/php.ini
- apc.enabled – использовать apc или нет.
- apc.shm_segments – количество сегментов shared memory, которые будет использовать apc. Некоторые системы имеют ограничение на максимальный размер сегмента, поэтому можно настроить apc на использование нескольких сегментов.
- apc.shm_size – размер одного сегмента shared memory, используемого apc.
- apc.ttl – сколько секунд должны отсутствовать обращения к записи кэша прежде, чем apc перезапишет ее.
- apc.user_ttl – по описанию тоже самое, что и apc.ttl. Обычно устанавливается равным apc.ttl.
- apc.stat – указывает, нужно ли apc проверять время модифицирования php-скрипта. Если установить в 0, то apc не будет проверять изменения на диске и будет выдавать кэшированную копию.
---------------------------------------------------------------------- date uptime dns connect request ttfb ttlb 2012-02-21 97.94 0.090 0.208 0.208 0.689 0.799 2012-02-20 100.00 0.042 0.159 0.159 0.612 0.719 2012-02-19 97.94 0.037 0.395 0.395 0.897 1.187 2012-02-18 97.94 0.072 0.274 0.274 1.106 1.479
---------------------------------------------------------------------- date uptime dns connect request ttfb ttlb 2012-03-22 100.00 0.013 0.113 0.114 0.320 0.516 2012-03-21 100.00 0.015 0.115 0.115 0.318 0.514 2012-03-20 100.00 0.012 0.112 0.112 0.315 0.511 2012-03-19 100.00 0.012 0.111 0.112 0.315 0.511