eAccelerator е един прекрасен механизъм да по забързаме бавното php. Общо взето идеята е елементарна  😆 при изпълнение на php скриптове тая щуротия ги пази до opcode ниво и при следващо извикване ако няма промени пo скрипта се ползва opcode копието. Резултата е по бързо изпълнение по ниско натоварване на сървъра, по малко разхищение на ресурси. Общо взето това е.

Сега да споделя простотията която успях да сътворя. Преди малко по малко от седмица на един сървър обновявах php версията която ползва заради фаталният CVE-2010-4645 бъг. Поднових версията до 5.2.17 където видях, че е поправен. Не ми се рискуваше с 5.3.5 версията, че има разлики и не знам кое как ще сработи , а и най важното беше късно вечерта. Речено сторено. Ъпдейта мина повече от гладко, но след като приключих ми направи впечатление че пъргавостта на сайта падна доста. Но единия от разработчиците ме беше предупредил, че ще тестват нови скриптове и не му обърнах много внимание. Вчера ми се наложи да настройвам едни cron-ове на php и когато ги пуснах видях един доста неприятен надпис, че компилацията ми на eAccelerator-a е за старта версия на php-то ми и с новата не работи ;). Ясно вече всичко е ясно. Набързо прекомпилирах eAccelerator-a и всичко си дойде на мястото по груби наблюдения зареждането на страниците падна двойно като се освободиха ценни мегабайти рам. Като цяло вече поне си направих теста и със сигурност има полза особено при над 200 потребителя online нещата стават доста красноречиви а при 400 😉 Има и други механизми но според тестовете eAccelerator-a е най грамотния избор. Нямам особено време за тестване затова се доверявам на хората 😀

http://www.youtube.com/watch?v=eJarZiMQaKA

malmon е един изключително интересен нов проект – като цяло е замислен за защита на хостинги сървъри от зловреден софтуер на него, създаден от моя приятел и linux guru ShadowX. Да поясня какво точно се има на предвид – нищо не пречи да си метнете на кои хостинг едно приятно c99 шелче да речем и ако е не достъчно добре настроена файловата система нищо не пречи на злия хахор да докопа шел достъп. Като цяло идеята на malmon е точно така да следи качването на такива приятни мизерии и да ги премества в карантинна директория различна от document root-a. Принципа на които работи е доста приятен – следи за създадени нови фаилове в папка която е настроен да гледа софтуера и при наличие на някои фаил кото съвпада с определени сигнатури го препраща към вечните ловни полета. Нещо като антивирусен софтуер 😉 Скрипта е написан на python което го прави лек, бърз и гъвкав. За да следи за създадени нови файлове използва относително новия механизъм на ядрото inotify. Въпреки че все още скрипта не е официално стабилна версия от 3 дни не съм имал проблеми на един порядъчно натоварен сървър – единия от сайтовете там е в топ 100 на tyxo 😉

Мога да продължа да наливам сухи статистики и обяснения на дълбоко как работи кода, но няма да го направя. По скоро ще ви призова да го сваляте тествате и ако имате предложения да пишете на автора 😉 Ако видите бъгове пак му пишете хора сме грешим и е добре да се подкрепяме. Наздраве!

Понеже съм уникален кретен и пиша ужасно не мърлив и недообмислен код, успях да оставя без достъп до хостинг машината ми за цяла вечер. Проблема се оказа малоумно тривиален ама кой да мисли на време.

#!/bin/bash -x
wget http://checkip.dyndns.org/ -O /tmp/ipaddr
IPADDR=$(cat /tmp/ipaddr | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
IPADDROLD=$(cat /tmp/ipaddr_old | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]
then
 sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$IPADDR/" /etc/bind/neo2shyalien.eu
 /etc/init.d/bind9 restart
 echo "server localhost" > /tmp/nsupdate
 echo "zone neo2shyalien.eu" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. A" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. CNAME" >> /tmp/nsupdate
 echo "update add ns.neo2shyalien.eu. 38400 A $IPADDR" >> /tmp/nsupdate
 echo "update add *.neo2shyalien.eu. 38400 CNAME ns.neo2shyalien.eu." >> /tmp/nsupdate
 echo "show" >> /tmp/nsupdate
 echo "send" >> /tmp/nsupdate
 echo "" >> /tmp/nsupdate
 /usr/bin/nsupdate -k /etc/Kns.neo2shyalien.eu.+157+59417.private -d /tmp/nsupdate
 mv /tmp/ipaddr /tmp/ipaddr_old
fi

Това вече е поправения скрипт които няма да допуска грешка. След малко ще обясня къде е била проблемата част сега да обясня какво прави скрипта. Поне нали съм на динамично публично ip. Съм пуснал горния скрипт да проверява за промяна в адреса ми ако се смени да променя настройките на машината и да праща информация за домейна ми, че има промяна. Общо взето тривиален скрипт но в него бях допуснал ужасно малоумен пропуск. В частта където се проверява за смяна на адреса

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]

Преди беше


if [ "$IPADDR" != "$IPADDROLD"]

Така самия ред прави следното взима 2-та IP адреса и ги сверява ако са еднакви пропуска ако са различни ъпдейтва. В предния вариант бях пропуснал много важна грешка поради някаква причина скрипта ми беше решил че имам IP = „“ (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉

Крайно време беше се запася с по грамотен domain. Преди около седмица попаднах на уникално добрата оферта за .eu и нямаше как да не се възползвам. Няколко дни си играх да настроя машината понеже публичния ми адрес е динамичен и се искат някои хватки да се приложат, но почти всички проблеми са изчистени. Публичния ми адрес се подновява в ddns стил. Но винаги ще имам проблеми с доставчиците които кешират заявките, а винаги ще има такива, за съжаление това няма как да се избегне, ще видя ако реша, че ми е проблем ще сменя динамичния адрес с статичен. Това като цяло са разни бъдещи полемики които ще решавам някои друг път.

Засега стария домейн съм го направил да прехвърля към новия такъв и не мисля че ще имам проблеми. Необходимо е да подновите RSS адресите си за да сте сигурни, че получавате вярната информация, за което искам да се извиня за неудобството. Е стига толкова глупости мога само да се поздравя за добрата работа, която не беше малко особено като се има на предвид че почти не съм си имал вземане даване с DNS услугите и първоначално действах като на магия. Накрая обаче му хванах цаката и дори си разписах скриптче което върши черната работа на обновяването на записите, но това ще е тема за в бъдещи разговори след като по изуча из дълбини нещата.

p.s Забравих да пиша нещо важно промених кардинално домейна, защото предишния домейн беше избран с една определена идеална цел, която след толкова години се оказа, че няма да бъде осъществена поради множество причини. Иначе нямаше да е проблем mud-land.eu. Дори е по кратко но блога си е мои и си го водя с една единствена идеална цел – пиша за всичко онова което ме вълнува, и си струва да се сподели. Аз не пиша за всичко и не искам да пиша за всичко искам да оставя една част от себе си скрита. Моето лично пространство претърпя множество от промени. Надявам се тази да не е последната.

Време е за подскачане и релакс малко стига толкова коване 😉 😛

Преди няколко дни имах ужасен проблем с инсталиран ModSecurity и phpMyAdmin. Общо взето проблема се коренеше в това че, защитния модул възприемаше рекуестовете на phpMyadmin-a като sql injection атаки. Решението отново е тривиално просто за файловете на phpmyadmin-a изключвам мачването на правилата. Правилата ги записах в modsecurity.d/modsecurity_localrules.conf които се намира в папката на apache сървъра ви. Ето ги и самите правила.

<LocationMatch „/phpmyadmin/tbl_change.php“>
SecRuleEngine Off
</LocationMatch>

<LocationMatch „/phpmyadmin/sql.php“>
SecRuleEngine Off
</LocationMatch>

<LocationMatch „/phpmyadmin/managecontent.php“>
SecRuleEngine Off
</LocationMatch>

<LocationMatch „/phpmyadmin/import.php“>
SecRuleEngine Off
</LocationMatch>

<LocationMatch „/phpmyadmin/tbl_select.php“>
SecRuleEngine Off
</LocationMatch>

<LocationMatch „/phpmyadmin/tbl_replace.php“>
SecRuleEngine Off
</LocationMatch>