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.

XSS linkator v. 0.01 pre-alfa :)

PHP Один комментарий

Итак, как и обещал - межсайтовый скрипт для облегчения ручной продажи морд. Но для начала картинка:

Собственно принцып этой штуки прост как 3 копейки:

Есть список проектов-сайтов, для каждого пишем список продажных ссылок (по одной на строчку). Скрипт рассылает по подконтрольным вам ftp серверам файлы с этим списком. На сайтах клиентский скрипт подгружает этот файл, разбивает ссылки на блоки и выводит в соответствующих местах. Все.

XSS linkator (651) - 6.42 KB

Разбираем состав архива:

index.php - собственно админ-панель. Одна на все сайты.
xss.php - клиентский скрипт. Его нужно установить на каждом сайте.
Остальные файлы нас не интересуют.

Установка

Сервер

Содержимое архива распаковать, положить себе на локальный сервер. При создании проекта: имя проекта - название сайта, ftp - адрес ftp сервера (как правило совпадает с первым пунктом), логин и пароль от ftp, путь - полный путь и имя файла ссылок, т.е. что-то вроде /public_html/links.txt

Таким образом база ссылок для этого сайта будет сохранена именно по этому адресу.

Чтобы каждый раз не перезаливать все ссылки со всех проектов, имеется флаг "изменить". Помечаем им все обновившиеся проекты, жмем на любую кнопку Ok и ждем =)

Клиент

Скрипт xss.php нужно залить на каждый из подконтрольных веб-серверов, где будем продавать ссылки. Для WordPress поместить файл в каталог wp-content\plugins, для других движков - думайте сами (или пишите комментарии, разберемся :))

Далее в шаблонах где-нибудь в header.php вставляем <?MYXSS_init('имя файла');?> в нашем случае это links.txt (если поле оставить пустым по дефолту будет файл xss.txt) и в нужных местах шаблона проставляем

if (is_home()){ echo MYXSS_links_UTF8(NNN,'XXX'); } //Для вывода ссылки на главной

echo MYXSS_links_UTF8(NNN,'XXX'); //Для создания сквозной ссылки

NNN - количество ссылок, XXX - разделитель.

Если что-то не так, скрипт вместо ссылок выведет надпись <!-- <<Some error>> -->

Внимание! Админский скрипт хранит в открытом виде все логины и пароли, устанавливать его на левый хостинг очень и очень не рекомендуется. Админка должна лежать у вас на локальном сервере, чтобы ни одна чукча о ней не знала :) Читать полностью »

WordPress плагин SAPE

PHP, Sape 19 комментариев

Прикручивая сапу к первому сайту на WordPress нашел хитрый плагин от maxsite.org. Все мне в нем понравилось, но лень было расставлять ссылочный код сапы обычными методами:

<?php
     if (!defined('_SAPE_USER')){
        define('_SAPE_USER''wordpress, sape, ключевики, плагин');
     }
     require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
     $sape = new SAPE_client();
?>

Поэтому была сделана маленькая модификация и в результате появилась дополнительная функция "для ленивых" (вроде меня):  maxsite_sape_links();

Модификация инициализирует ссылочный код сапы за вас, для разнесения блоков ссылок по разным местам не нужно заморачиваться с global'ами и прочим...

Использовать вместо $sape->return_links($n);

UseСases (примеры):

<? echo maxsite_sape_links(1); ?>  //вывод одной сапо-ссылки

<? echo maxsite_sape_links(); ?> //вывод всех оставшихся сапо-ссылок (в footer.php его)

Итоги

Имеем плагин для автоматической расстановки контекстного кода и облегчающий установку ссылочного кода.

Плагин рекламы SAPE.ru (мод MAXSITE) (1403) - 1008 bytes

А что дальше? А дальше будет кросс-сайтовый скрипт для ручной продажи морд.

Проба пера

Блог Комментариев нет

Итак. О чем сайт?

Сайт о скриптах, программах и прочем, что способно облегчить тяжкий труд оптимизатора-СЕОниста.