Оптимизация apache - переход с модуля mpm peruser на worker

Опубликовано 15 февраля 2010
и помечено как: , , , .

С увеличением количества виртуальных хостов на VPS постоянно стали вылетать ошибки апача вида

[warn] (9)Bad file descriptor: apr_socket_opt_set: (TCP_NODELAY)

Поиск по инету конкретного решения не дал. Но в ходе поисков была выявлена гипотеза возникновения проблемы.

Модуль mpm peruser, который использовался в моей сборке apache, для каждого нового виртуального хоста выделяет отдельный процесс (обычно несколько, в зависимости от настроек), даже если все virtual hosts принадлежат одному и тому же юзеру. Таким образом, с ростом числа сайтов банально перестает хватать ресурсов VPS. Возможно, файловых дескрипторов. По крайней мере их число на одном из форумов рекомендовали увеличить с 1024 до 4096 при перекомпиляции.

В итоге, я решил отказать от использования peruser, ибо у меня не shared хостинг и все сайты крутятся от имени одного юзера. И вместо peruser установил апач с модулем worker. Пришлось повозиться и заодно перекомпилить php и обновить ioncube loader и zend optimizer, т.к. новый апач отказался работать с not threadsafe модулями.

У меня установлен Gentoo, поэтому все команды актуальны для него.

1. Обновляем базу пакетов

emerge --sync

2. Обновляем portage

emerge portage

3. Обновляем apache

APACHE2_MPMS="worker" USE="threads" emerge apache

4. Обновляем php

USE="threads -sharedmem -postgres" emerge php

5. Zend через имердж ставиться не захотел, пришлось вручную скачивать отсюда и ложить в нужную папку /usr/lib/php5/lib/php/extensions/no-debug-zts-20060613

6. Ioncube скачивал отсюда и ложил туда же.

Поскольку я кофиги люблю править ручками, пришлось делать etc-update и вносить корректировки.

Главное, это пришлось сменить в php.ini путь для подгружаемых php модулей. Теперь они стали threadsafe

extension_dir=/usr/lib/php5/lib/php/extensions/no-debug-zts-20060613/

И прописать новые пути для zend и ioncube модулей

zend_extension_ts=/usr/lib/php5/lib/php/extensions/no-debug-zts-20060613/ZendOptimizer.so

zend_extension_ts=/usr/lib/php5/lib/php/extensions/no-debug-zts-20060613/ioncube_loader_lin_5.2_ts.so

Также не забыть сменить в httpd.conf юзера и группу, от имени которых будет работать апач

User megauser

Group megauser

Вроде бы всё. Наслаждаемся повысившейся производительностью)

Установка и настройка apache, php и mysql на freebsd

Опубликовано 20 ноября 2009
и помечено как: , , , , .

Недавно установил на старый комп, который уже который год пылится в углу, FreeBSD 7.1. Почему именно ее? Потому что была на диске. Есть более свежая версия, но тянуть ее с нета проблематично. На vds в основном используется версия 6.3, видимо, проверенная временем. Конфа компа, кста, примерно соответствует дохленькому vds, какой я держу у мажордомо - CPU Celeron 1GHz, RAM 128Mb, HDD 80Gb.

В сети много доков на тему установки и настройки LAMP (linux, apache, mysql, php/perl), но всё равно установка заняла целую ночь. А всё потому, что я ставил готовые пакеты с диска, пропуская некоторые важные моменты из доков, наивно полагая, что в пакетах уже всё есть. Ха-ха! А надо было всё собирать из портов. Потому что в пакете apache22 не было модуля mod_suexec, а в пакете php5 не было модуля libphp5 для апача.

Хотя доки тоже пришлось поискать, потому что первые места выдачи по установке apache и php занимают старые

трастовые сайты, точнее, их страницы, где описывается установка apache1

и php4. При инсталляции из портов разницы, в принципе, нет, но для новичка путаницу вносит.

Итак, правильный вариант на заметку:

Ставим Apache. Не забыть выбрать чекбокс напротив mod_suexec.

# cd /usr/ports/www/apache22
# make config
# make install

Ставим php. Не забыть выбрать "Apache Module" чекбокс и поддержку mysql включить.

# cd /usr/ports/lang/php5
# make config
# make install

В /etc/rc.conf прописать apache_enable="YES"

SMS перехватчик атакует Google Adsense

Опубликовано 16 ноября 2009
и помечено как: , .

Сегодня на одном из своих сайтов увидел вот такую портянку рекламы

SMS перехватчик атакует Google Adsense

Киборги, заполонили всё

Hello, World!

Опубликовано 8 апреля 2009

Привет, мир!