Monthly Archive for October 2006 года

eAccelerator. Сборка. Установка. Настройка

eAccelerator — модуль для ускорения, оптимизации и кеширования ваших PHP-скриптов. Самый простой способ его установки — это установка из RPM-пакета, но это не всегда получается так как версия PHP на вашем сервере может отличаться (быть старше), чем версия PHP для которой был собран RPM-пакет. Так что я расскажу как собрать eAccelerator из исходных текстов.

Все описываемые далее действия относятся (в основном) к операционным системам Fedora Core и RedHat Enterprise Linux

Итак, для начала установим пакет php-devel. Он нам нужен для сборки eAccelerator’а:

sudo yum install php-devel

Скачаем исходные тексты последней версии eAccelerator’a (на момент написания это была версия 0.9.5):

wget http://bart.eaccelerator.net/source/0.9.5/eaccelerator-0.9.5.tar.bz2

Перед распаковкой архива убедитесь, что тот раздел, из которго вы его будете запускать имеет права на запуск:

cat /etc/mtab

Один раз я долго не мог понять, почему у меня не запускался скрипт из директории /tmp, оказалось, что для этого раздела были установлены права noexec.

Распакуйте архив

tar xjf eaccelerator-0.9.5.tar.bz2

и перейдите в распакованную директорию

cd eaccelerator-0.9.5

Выполните команды

phpize

./configure

make

make install

После этого появится надпись
Installing shared extensions: /путь/до/модулей
этот путь и надо будет указать в настройках.

Допишите в файл php.ini настройки для eAccelerator’а:

zend_extension="/путь/до/модулей/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/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="9"

Перезапускаем Apache:

/etc/init.d/httpd restart

Готово!

Самые дорогие российские бренды

Место
2006 год
2005 год Брэнд Цена
брэнда
2006 год
(млрд руб.)
2005 год
Годовой
прирост
(%)
1 1 “Билайн” 156,204 143,6 +9
2 2 МТС 136,458 133,077 +3
3 3 “Балтика” 51,618 48,549 +6
4 5 ЛУКОЙЛ 21,075 19,628 +7
5 “Славнефть” 18,206
6 “Роснефть” 18,028
7 “Татнефть” 17,655
8 7 “Северсталь” 12,118 11,398 +6
9 10 “Домик в
деревне”
10,886 9,722 +12
10 6 “МегаФон” 10,571 11,785 -10

Источник: Interbrand Zyntzmeyer & Lux AG.

Оптимизируй и настрой!

Итак, мальчики и девочки, сегодня мы с вами поговорим о переходном возрасте… Наверное, вы уже заметили, что в последнее время с вами происходят какие-то непонятные изменения. На вашем сервере запущено уже несколько сайтов, но скорость, с которой они работают вас не очень-то устраивает. Да, вот такие они плоды популярности… И что же делать? Экономить деньги на школьных завтраках, чтобы оплатить более качественный хостинг? Нет, нет и ещё раз нет! Я, как отец подрастающего ребёнка, просто не могу допустить того, чтобы подрастающий организм недополучал питания в период роста и развития. Поэтому, вот вам мои советы по настройке и оптимизации сервера и того, что на нём установлено.

Все приведённые ниже значения — ориентировочные и не являются истиной в последней инстанции. Истину вам предстоит отыскать самим.

Apache

  1. Поиграйтесь со значением MaxClients, чтобы найти баланс между производительностью и мощностью сервера. Можно начать со значения 32.
  2. Не позволяйте серверу писать много в логи: LogLevel warn
  3. Отключите DNS lookups: HostNameLookups off
  4. Отдельно стоит сказать о директиве AllowOverride — она отвечает за то, можно ли переопределять настройки сервера. Грубо говоря, будут или нет работать файлы .htaccess. Если эта директива включена глобально:
    <Directory />
        AllowOverride All
    </Directory>

    то в каждой директории сервер будет пытаться искать файл .htaccess, поэтому следует либо отключить эту директиву, либо включить её только для тех директорий, где это необходимо.

  5. И последнее по настройке Apache. Директива KeepAliveTimeout. Рекомендую уменьшить её значение до 1–2 секунд.

MySQL

Добавьте или измените следующие опции в my.cnf:

  1. Отключите bin log
    log-bin
  2. Включите и увеличте размер query_cache
    query_cache_limit = 2M   # по умолчанию было 1M
    query_cache_size  = 64M  # по умолчанию было 0
    query_cache_type  = 1
  3. Увеличте table_cache
    table_cache = 256 # по умолчанию было 64
  4. Увеличте key_buffer
    key_buffer_size = 64M # по умолчанию было 8M
  5. Установите параметр max_connections так, чтобы он равнялся параметру MaxClients в настройках Apache

PHP

  1. Установите eAccelerator и примените к нему следующие настройки:
    eaccelerator.shm_size="32"
    eaccelerator.enable=1
    eaccelerator.shm_ttl="1800"

Тестируем конфигурацию

Для тестов мы воспользуемся утилитой ab (Apache Benchmark).

ab -n 1000 -c 100 http://yourserver/

Тем самым сы выполним 1000 запросов к серверу, при том 100 запросов будут выполняться одновременно. В полученных результатах смотрите на строчку Requests per second. Я так же рекомендую запустить тест до начала оптимизации и после, чтобы сравнить результаты.

Успехов и удачи!

Ищут пожарные, ищет милиция…

А на самом деле это я ищу web-сервис, свеобразный YouTube, но только для музыки. То есть чтобы у меня была возможность залить свою музыку для всеобщего скачивания, а сервис бы уже сам посчитал сколько раз её скачали, создал “облегчённую” версию для предварительного прослушивания через какой нибудь flash-плеер ну и всё такое… Наличие API обязательно!

И пусть тот, кто знает о существовании такого сервиса, первым бросит в меня ссылкой!

Премия Рунета

Премия Рунета

Один из моих проектов — политический блог “Мера: Форум сторонников Концепции Общественной Безопасности” участвует в Премии Рунета и борется за звание одного из лучших сайтов в российском сегменте Сети.

По сему предлагаю очередной meme:

  1. Все дружно идём на Народное голосование
  2. ставим крыжик напротив mera.com.ru
  3. Сабмитим форму
  4. Повторяем все перечисленный шаги сутки спустя

Спасибо!

Shell scripting. Получаем переменные из конфигурационного файла

Итак, представим, что нам необходимо написать простенький shell-скрипт, который, например, копирует директорию с одного удалённого сервера на другой при помощи команды rsync.

Для rsync‘а необходимы следующие параметры:

  • имя пользователя удалённого сервера, с которго мы собираемся копировать
  • адрес сервера, с которго мы собираемся копировать
  • путь до директории, которую мы будем копировать
  • имя пользователя другого удалёного сервера, на который мы собираемся копировать
  • адрес сервера, на который мы собираемся копировать
  • путь, куда мы будем копировать

Следовательно, наш конфигурационный файл, назовём его .myrsync, будет выглядеть следующим образом:

# Configure options for myrsync
SRC_USER = jsmith
SRC_HOST = example.com
SRC_PATH = /home/jsmith/data
DEST_USER = admin
DEST_HOST = dummy.org
DEST_PATH = /tmp

Теперь приступим непосредствено к написанию самого скрипта, который будет брать параметры из конфигурационного файла и выполнять команду rsync. Итак, получаем параметры:

if [ -f "/etc/myrsync" ]; then
        for var in `awk 'BEGIN {FS="[= ]"} /^[^#]+/ \
        { print $1 "=" $(NF) }' /etc/myrsync`; do
                eval $var
        done
elif [ -f "$HOME/.myrsync" ]; then
        for var in `awk 'BEGIN {FS="[= ]"} /^[^#]+/ \
        { print $1 "=" $(NF) }' $HOME/.myrsync`; do
                eval $var
        done
fi

Как видно из куска кода, скрипт сначала пытается прочитать настройки из файла /etc/myrsync, а после этого пытается читать настройки из файла .myrsync, хранящегося в домашней директории пользователя, который запускает скрипт. Таким образом, параметры определённые в общем настроечном файле переопределяются пользовательским файлом настроек.

И теперь непосредственно копирование:

rsync -avzh --stats --progress \
$SRC_USER@$SRC_HOST:$SRC_PATH \
$DEST_USER@$DEST_HOST:$DEST_PATH

После этого нам остаётся лишь сохранить файл как myrsync.sh, установить у него права на запуск:

chmod +x myrsync.sh

Темнокожая Эдит Пиаф

Сегодня в музыкальных рекомендациях Cesaria Evora и её альбом Rogamar.

Цезария Эвора появилась в поле зрения европейской публики в 1988 году, когда французские продюсеры обнаружили певицу в одном из затерянных уголков Африки — Островах Зеленого Мыса (Кабо-Верде).

Ее первый альбом назывался “La Diva Aux Pieds Nus” (”Босоногая дива”) и имел огромный успех, который не оставляет Цезарию до сих пор. За 18 лет своей “западной” карьеры Эвора записала 9 альбомов, разошедшихся во всем мире мультиплатиновыми тиражами, шесть раз была номинирована на “Грэмми”, и получила эту премию в 2004-м.

Название ее десятого альбома “Rogamar” переводится с португальского как “Ода морю”, соответственно, теме моря посвящены все песни пластинки. Обладающий неизъяснимой привлекательностью голос певицы, сочные аранжировки (с Эворой работают известные этно-музыканты из Мозамбика, Португалии и Франции), звучные мелодии, экзотическая атмосфера — это та самая Цезария Эвора, которую ждут ее слушатели, всегда разная, всегда одна и та же.

День учителя

Напал хулиган на учительницу:
— Отдавай мне свои часы!
— Ну, тогда и классное руководство забирай!

С праздником, дорогие педагоги!