Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>php server service fpm php lnmp}} ====== Установка и настройка PHP FPM ====== Редактируем список репозиториев: nano /etc/apt/sources.list Добавляем в него следующие адреса серверов: deb http://packages.dotdeb.org squeeze all deb http://ftp.debian.org.ua/debian-dou/ squeeze main Теперь нам необходимо добавить GPG ключи репозиториев в систему: wget -q http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add - wget -q http://ftp.debian.org.ua/debian-dou/archive.key -O- | apt-key add - Обновляем список пакетов и всю систему: <code> aptitude update && aptitude upgrade </code> ===== Устанавливаем из репозитрия PHP-FPM ===== <code> apt-get install -u -t stable php5-cli php5-common php5-mysql php5-gd php5-fpm php5-cgi php5-fpm php-pear php5-mcrypt php5-curl php5-memcache php5-memcached php5-intl php5-sqlite php5-xsl -y </code> Закрываем уязвимости в PHP В данный момент существует уязвимость, что любой пользователь может загрузить на сервер файл и выполнить его с правами под которыми работает PHP, чтобы это исправить, необходимо отредактировать php.ini nano /etc/php5/fpm/php.ini Находим строку: ;cgi.fix_pathinfo = 1 Снимаем с нее комментарий, чтобы выглядело: cgi.fix_pathinfo = 0 Если этого не сделать, то любой желающий, залив на сервере файл, под видом картинки, может выполнять его как скрипт, со всеми вытекающими последствиями. Остальные настройки работы PHP-FPM находятся по пути /etc/php5/fpm/pool.d/www.comf которые необходимо изменить в соответствии с наличием системных ресурсов. Описать все варианты довольно сложно и зачастую, необходимо подбирать эксперементальным путем. (хотя рекомендаций в сети хватает, даже на сайтах хостеров) ===== PHP Downgrade / Понижение версии PHP ===== <code bash> PHP=$(dpkg -l|grep php|grep 5.5.5|awk '{print $2}') && apt-get install -t stable --reinstall $PHP </code> ==== Удаление пакетов PHP указанной версии ==== <code bash> apt-get remove --purge `dpkg -l | grep php | grep -w 5.4 | awk '{print $2}' | xargs` </code> ==== 5.4.4 + Apache 2.2 ==== === Apache 2.2 === <code> apt-get install apache2.2-bin=2.2.22-13+deb7u1 apache2.2-common=2.2.22-13+deb7u1 2.2.22-13+deb7u1 apache2-mpm-prefork=2.2.22-13+deb7u1 </code> === PHP 5.4.4 === == deb7u11 == <code> apt-get install php-pear=5.4.4-14+deb7u11 php5=5.4.4-14+deb7u11 php5-cgi=5.4.4-14+deb7u11 php5-cli=5.4.4-14+deb7u11 php5-common=5.4.4-14+deb7u11 php5-curl=5.4.4-14+deb7u11 php5-dev=5.4.4-14+deb7u11 php5-fpm=5.4.4-14+deb7u11 php5-gd=5.4.4-14+deb7u11 php5-imap=5.4.4-14+deb7u11 php5-mcrypt=5.4.4-14+deb7u11 php5-mysql=5.4.4-14+deb7u11 php5-pgsql=5.4.4-14+deb7u11 php5-sqlite=5.4.4-14+deb7u11 php5-xsl=5.4.4-14+deb7u11 php5-mongo=1.4.5-1~bpo70+1 php5-memcache=3.0.6-6 php5-memcached=2.0.1-6 php5-xcache=2.0.0-4 php5-sasl=0.1.0-1.2+b1 php5-mongo=1.4.5-1~bpo70+1 php5-memcache=3.0.6-6 php5-memcached=2.0.1-6 php5-xcache=2.0.0-4 php5-sasl=0.1.0-1.2+b1 </code> == deb7u14 == <code> apt-get install php-pear=5.4.4-14+deb7u14 php5=5.4.4-14+deb7u14 php5-cgi=5.4.4-14+deb7u14 php5-cli=5.4.4-14+deb7u14 php5-common=5.4.4-14+deb7u14 php5-curl=5.4.4-14+deb7u14 php5-dev=5.4.4-14+deb7u14 php5-fpm=5.4.4-14+deb7u14 php5-gd=5.4.4-14+deb7u14 php5-imap=5.4.4-14+deb7u14 php5-mcrypt=5.4.4-14+deb7u14 php5-mysql=5.4.4-14+deb7u14 php5-pgsql=5.4.4-14+deb7u14 php5-sqlite=5.4.4-14+deb7u14 php5-xsl=5.4.4-14+deb7u14 php5-mongo=1.4.5-1~bpo70+1 php5-memcache=3.0.6-6 php5-memcached=2.0.1-6 php5-xcache=2.0.0-4 php5-sasl=0.1.0-1.2+b1 php5-mongo=1.4.5-1~bpo70+1 php5-memcache=3.0.6-6 php5-memcached=2.0.1-6 php5-xcache=2.0.0-4 php5-sasl=0.1.0-1.2+b1 </code> <note important>libapache2-mod-php5=5.4.4-14+deb7u11</note> ==== Замораживаем версию пакета php ==== * PHP=$(dpkg -l|grep php|grep 5.3|awk '{print $2}') * aptitude hold $PHP - для aptitude и команд: safe-upgrade * apt-mark hold $PHP - для apt ==== Размораживаем версию пакета php ==== * PHP=$(dpkg -l|grep php|grep 5.3|awk '{print $2}') * aptitude unhold $PHP - для aptitude и команд: safe-upgrade * apt-mark unhold $PHP - для apt ==== Установка из исходников ==== <code> code </code> ==== Debug install===== Установка отладчиков кода * [[php:xdebug|Xdebug]] * [[php:dbg|DBG]] * [[php:jit|JIT]] ==== Кешировние ==== * [[system:php-fpm:opcache|]] * [[system:php:xcache|]] ==== fpm/pool.d/ Конфигурационные файлы PHP-FPM ==== * pm.max_children = необходимо вычислить сколько памяти занимает один процесс, потом разделить тот объем памяти который вы хотите выделить для php5-fpm, на объем одного процессора, получите количество pm.max_children (наример 10000мб/50мб=200) * pm.min_spare_servers = этот параметр начать с количество ядер процессора умножить на 2 (пример 4 ядра * 2 = 8) * pm.max_spare_servers = этот параметр количество ядер процессора * 4 (пример 4 *4 = 16) * pm.start_servers = этот параметр вычисляется по формуле (pm.min_spare_servers+pm.max_spare_servers)/2 (пример (8+16)/2=12) Итого на выходе получаем примерно конфигурацию для 4 ядерного процессора 10гб памяти (выделенные только под PHP5-FPM, возможно у вас 16Гб общей) * pm.max_children = 200 * pm.start_servers = 12 * pm.min_spare_servers = 8 * pm.max_spare_servers = 16 ==== Статьи ==== * http://www.if-not-true-then-false.com/2011/nginx-and-php-fpm-configuration-and-optimizing-tips-and-tricks/СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal