После обновления ALERT – canary mismatch on efree() – heap overflow detected

После очередного обновления ubuntu 8.04 LTS, Апач начал вываливаться с ошибкой
ALERT – canary mismatch on efree() – heap overflow detected
Долгие поиски выявили что баг описан уже и я не первый.
Для меня это первый баг, который повлиял на стабильность работы сервера

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.

Thank you for the report, and for helping us make PHP better.

Собирать свежий пхп из сорцов мне не хотелось(суровое детсво, где я много компилил..), я слил с ubuntu 8.10 sources.list
сделал
apt-get update
apt-get install php5-common
после чего установилась php 5.2.6
После ночи работы пока всё работает

Оптимизация web-сервера: eAccelerator

продолжаю облегчать жизнь серверу.
eAccelerator – все мы знаем что при обращении к файлу пхп вэб сервер компилирует пхп файл в некую программу, которая в дальнейшем, что-то делает и выдаёт нам результат в виде html, ну и кто-то задумался(может отбукился 🙂 ): “а зачем постоянно делать одну и туже работу – компилировать при каждом обращении один и тот же файл”, и вот eAccelerator берёт откомпилированный php файл и складывает во временную папку и когда пользователь обращается к очередному пхп файлу в дело вступает eAccelerator, который проверяет есть ли уже “готовый” запрашиваемый файл, если находит готовый то сразу запускает его, тем самым облегчает жизнь серверу (значительно снижает нагрузку на процессор) например у меня нагрузка в часы пик с 70% упала до 7-25%

ставим php5-dev

apt-get install php5-dev

берём свежий дистрибутив с http://eaccelerator.net/
распаковываем, заходим в извлечённый каталог

phpize

./configure –enable-eaccelerator=shared

make

make install

cd /etc/php5/conf.d

Создаём конфигурационный файл для акселератора

touch eacclerator.ini

вставляем в него содержимое

zend_extension = “/usr/lib/php5/20060613+lfs/eaccelerator.so”
eaccelerator.shm_size = “0”
eaccelerator.cache_dir = “/var/cache/eaccelerator”
eaccelerator.enable = “1”
eaccelerator.optimizer = “1”
eaccelerator.check_mtime = “1”
eaccelerator.debug = “0”
eaccelerator.filter = “”
eaccelerator.shm_max = “0”
eaccelerator.shm_ttl = “0”
eaccelerator.shm_prune_period = “0”
eaccelerator.shm_only = “0”
eaccelerator.compress = “1”
eaccelerator.compress_level = “7”
eaccelerator.allowed_admin_path = “/var/www/”

создаю каталог для кэша

mkdir /var/cache/eaccelerator

chmod 777 /var/cache/eaccelerator

теперь можно перезапустить apache

для контроля над тех процессом есть файл control.php
в нём находим логин пароль и перекидываем в нужную нам папку на территории вэб сервера ну и заходим 🙂

Iptables SNAT

[cc lang=”bash”]iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 1.2.3.4[/cc]

eth1 – внешний интерфейс сервера
1.2.3.4 – внешний ИП сервера

iptables nat + torrent

[cc lang=”bash”]
iptables -A INPUT -p tcp –destination-port 6881:6999 -j ACCEPT
iptables -A OUTPUT -p tcp –source-port 6881:6999 -j ACCEPT
[/cc]

iptables пробросить порт

есть ubuntu шлюз надо чтоб с инета был доступен нейкий сервис на внутренней машине

[cc lang=”bash”]
iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 –dport 7888 -j DNAT –to-destination 192.168.100.251:7888
iptables -t nat -A POSTROUTING -p tcp –dst 192.168.100.251 –dport 7888 -j SNAT –to-source 91.195.101.20
[/cc]

Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.