myWeb Site Monitor, PHP, Zend, ionCube

PHP, Софт Комментариев нет

Поддался на акцию и решил установить себе скрипт myWeb Site Monitor. Писать что-то свое было лень, а тут готовое решение с блекджеком и шлюхами =)

Ставить решил на своей домашней машине, всё равно почти без дела простаивает. Рекомендация для новичков в linux (типа меня) - лучше ставить на хостинг и тормошить тех. поддержку, чем ставить всё у себя и потерять на настройку php пол дня :)

Установка

Если уж ставить хитрые скрипты, то делать это основательно! Посему решил обновить PHP с 5.1.6 (на ней phpMyAdmin последней версии выкобенивалась и отказывалась работать)  на 5.2.9

Сам скрипт закодирован и для запуска требует ionCube Loader. PHP у меня был без Zend Extension Manager'a (это та самая штука которая нужна для ionCube), посему:

wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
tar zxf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install.sh
service httpd restart

Скачал  ZendOptimizer, распаковал, запустил инсталлер, прошел по шагам установки, перезагрузил апач.

Для работы myWeb Site Monitor этого должно быть достаточно, т.к. он может цеплять ionCube библиотеки динамически, но мы же договорились что делаем всё основательно? :)

Качаем ionCube с сайта производителя под нашу ось

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar zxf ioncube_loaders_lin_x86.tar.gz
mv ioncube /usr/local

Дальше идем в /usr/local/Zend/etc, теперь после установки ZendOptimizer именно там лежит файл php.ini и ищем что-то типа:

[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

Добавлеям в начало секции [Zend] строки:

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so

Расширения нужно писать именно в самом начале секции, иначе PHP ругается:

PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0

С установкой самого скрипта сложностей возникнуть не должно:

Редактируем файл paths.php как сказано в документации к myWeb Site Monitor и радуемся жизни :)

Использование

Ах да, я же собственно о скрипте писать хотел...

Скрипт сидит, пингует, ведет статистику, что еще для счастья нужно?

А для счастья нужно PR чекалку, измеритель ТИЦек, проверку количества проиндексированных страниц (для Яндекса желательно через xml.yandex.ru) и всё это с красивыми графиками на Google Chart API ;)

UPD: Вышла новая версия скрипта, теперь не нужно мучать хостинги ионкубом, добавились полезные плюшки =)

CentOS и старый PHP (или как поставить PHP 5.2.x на Центу)

Linux среди нас 2 комментария

Исходная конфигурация - CentOS 5.2, PHP 5.1.6, Apache 2.2.3.
Обновляемся до PHP 5.2.9
Так уж повелось что PHP в стандартной репе CentOS только версии 5.1.6, а что-либо посвежее нужно тягать  свой я обновлял из CentOS-5 Testing (не помню уже зачем, помоему ради спортивного интереса)

Как подключить дополнительные репозитории в ручную

Лезем в /etc/yum.repos.d/ создаем там файл CentOS-Testing.repo и пишем туда

[c5-testing]
name=CentOS-5 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing

Как теперь его пользовать?

yum --enablerepo=c5-testing update php*

Получаем обновленный PHP 5.2.6 и проблему с mcrypt и mhash. Они дают нам такую ошибку:

[07-Jun-2009 13:46:55] PHP Warning: PHP Startup: mcrypt: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
[07-Jun-2009 13:46:55] PHP Warning: PHP Startup: mhash: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match

Это значит что PHP обновился, протоколы обновились, а вот эти 2 библиотеки так и остались лузерами. Как починить эту проблему я так и не понял (в CentOS-Devel рассылках что-то невнятное происходит), но решил проблему в комплексе - обновил PHP до 2.6.9 =)

Установка реп из rpm'ок

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Что происходит? качаем rpm от remi и инсталлим их =)
Дальше пользуем как и в предыдущем примере:

yum --enablerepo=repo update php*

Только в этом случае yum начал ругаться матом на mysql, мол файлики там какие-то не те. Ну так за чем дело встало? Обновим и мускуль ;) (перед обновлением строго-настрого сделайте бекап!!! mysql_dump вам в помощь)

yum --enablerepo=repo update mysql*
yum --enablerepo=repo update php*

Теперь имеем обновленный MySQL (бекап восстанавливать не пришлось - все данные были сохранены) и PHP 5.2.9.