Всем привет и всего такого прочего.
Еще одна заметка непосредственно из блога, а не основного цикла статей, т.к периодически, после статеек про всякие htop и opcache просят написать чего-нибудь еще этакого с меткой серверное.
В рамках этой текстовки кратенько напишу о PHP-FPM 5.6 и его установке с нуля или апгрейде со старых версий.
Традиционно, всё банально и не претендует на новшество, но зато я упомяну о двух часто возникающих проблемах, с которыми сталкиваются новички при сим процессе.
Давайте приступим.
PHP-FPM 5.6 под CentOS - установка или обновление
Традиционно, вваливаемся в консоль (можно сразу под рутом, если не страшно) и вводим набор команд для загрузки, добавления репозитория и установки:
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
cd /etc/yum.repos.d
curl -O https://rpms.famillecollet.com/enterprise/remi.repo
yum install php-fpm php php-devel -y --enablerepo=remi-php56
Возможно потребуется установка дополнительных пакетов. Делается так:
yum install php-mbstring php-mcrypt php-soap php-apc -y --enablerepo=remi-php56
yum install gd-last --enablerepo=remi
yum groupinstall "PHP Support" --enablerepo=remi-php56 –y
При обновлении обычно не требуется, при установке с нуля иногда бывает.
На этом обычно всё. Проверить версию можно, традиционно, через команду:
PHP -v
Ответ будет примерно таким:
PHP 5.6.20 (cli) (built: Mar 31 2016 07:24:47)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Но может быть и не таким, а с ошибками. Тогда можно будет бегать недельку по интернетам с воплями всё пропало, а можно..
Типичные ошибки после обновления PHP-FPM
При установке с нуля обычно ужасов не бывает, а вот при обновлении со старых версий (5.3, 5.4 и тп) и/или при миграции на FPM бывает, как правило, следующее:
PHP Fatal error: [ionCube Loader]
The Loader must appear as the first entry in the php.ini file in Unknown on line 0
..или, скажем..
PHP Warning: PHP Startup: memcached: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
Вместо memcahced и кубика (ionCube) могут быть упомянуты другие модули, а ошибки быть веселее, подробнее, больше и иметь другие цифорки-буковки. Одно из первых простых решений заключается в переименовании ini подключаемых модулей, т.к оно бывает не делается автоматически. На примере CentOS после обновления они выглядят так:
Т.е в новой версии получают префикс 10-, 20-, 30- и тп, в то время как в старой конфиги могли называться как есть т.е ioncube.ini, memcache.ini и тп. В связи с этим, первое, что надо сделать, - это просто переименовать их добавив префикс. Обычно это уберет большую часть ошибок.
Для каких-то из модулей может потребоваться поправить пути. Это делается в самом ini для расширения или в php.ini (смотря как был настроен сервер изначально и CentOS это или нет). Особенно это касается случаев, когда пути были прописаны абсолютные, но поменялись после апдейта (такое бывает). Иногда можно поправить zend'-вые на не абсолютные, либо поправить на правильные новые абсолютные (можно быстро глянуть через WinSCP).
После всего этого надо бы перезагрузить fpm и иногда apache+nginx. Делается традиционно:
service restart php-fpm
service restart httpd
service restart nginx
Обычно вышенаписанного хватает, чтобы всё заработало в прежнем режиме. Если нет и Вы по-прежнему видите некоторые из ошибок (они бывают в основном при обновлении со старых версий на новые), вроде:
Module compiled with module API=20090626
PHP compiled with module API=20100525
То надо просто перекомпилить модуль с текущей версией php.
Послесловие
На сим, пожалуй всё, если уж говорить в двух словах. Надеюсь кому-то когда-то пригодится.
Оставайтесь с нами ;)
На помнило анекдот, в котором раздается звонок в конторе секс-по-телефону..
-А правда вы можете поговорить на любые темы?
-Правда, милый..
-Давайте тогда обсудим проблемы маршрутизации в пиринговых сетях.. =))
Так и по теме - ну очень узкая тема, за всю жизнь не встречал сервера под линухами, всё как- то веники.. )) Но, возможно, кому-то будет полезно..
Ну те же VPS-ы все почти под линухами сейчас :)
"Т.е в новой версии получают префикс 10-, 20-, 30- и тп, в то время как в старой конфиги могли называться как есть т.е ioncube.ini, memcache.ini и тп. В связи с этим, первое, что надо сделать, - это просто переименовать их добавив префикс. Обычно это уберет большую часть ошибок."
а поподробней как это сделать? через консоль или тот же WSP?
Через WSP можно, не обязательно консолью