February 18th, 2010

404

К вопросу о пользе ограничения скорости (практические наблюдения)

Я попробовал на работе полтора месяца не резать скорость. Надо сказать, народ воспринял это с энтузиазмом, так что даже в январе (12 дней пьянства!) у нас было превышение по трафику.

Сейчас поставил резалку обратно - помогает... Вероятнее всего, благодаря лишнему выходному, вы даже в превышение не вылетим в этом месяце.


(да, я знаю, что в XXI не положено считать трафик, но вот такая у нас тут провинциальная глушь).
404

миграция с фри на дебиан (wordpress)

Итак, я нашёл для себя идеальную схему организации многих виртуальных хостов на server managed software.


Поясню:

1) server-managed software - это когда содержимое сайта с активным приложением (медиавики, вордпресс, phpbb и т.д.) находится НЕ в каталоге /var/www/sitename, а в /usr/share/applicationname. Главным же моментом, который обеспечивает такой подход - управление приложениями веб-сайтов с помощью аптитьюда. Т.е. apt-get install wordpress, или там phpbb. А управление, значит и обновление! Т.е. выпустили новую багу для вордпресса, выпустили патч. В ближайшем aptitude upgrade оно починится само. Во всех инсталляциях, сколько бы их не было.

2) Политика debian требует, чтобы файлы конфигурации приложений лежали в /etc/appname/ (ну или /etc, если это один файл). Файлы же приложения, не зависящие от архитектуры (а всякие похапэшные приблуды от архитектуры не зависят) должны лежать в /usr/share/appname.

Это приводит к конфликту между мнением авторов на похапэ и политикой дебиана: авторы на похапэ хотят видеть свой config.php в каталоге с приложением, что строго противоречит идее дебиана о том, что конфиги лежат там, где конфиги, а в /usr/share вменяемые приложения не пишут.

Есть решение в стиле медиавики: мы делаем файл /usr/share/mediawiki/config.php симлинком на /etc/mediawiki/config.php (может файл иначе называется, суть та же).

У этого подхода есть большой недостаток: вы можете иметь ТОЛЬКО ОДИН такой сайт. Это очень плохо, если у вас пара сотен сайтов.

Итак, решение от вордпресса. Оно примитивно и гениально:



$debian_server = preg_replace('/:.*/', "", $_SERVER['HTTP_HOST']);
$debian_server = preg_replace("/[^a-zA-Z0-9.\-]/", "", $debian_server);
$debian_file = '/etc/wordpress/config-'.strtolower($debian_server).'.php';

if (!file_exists($debian_file)) {
header("HTTP/1.0 404 Not Found");
echo "$debian_file could not be found. The file is either not readable by this process or does not exist.

Please check if $debian_file exists and contains the right password/username.";
exit(1);
}

require_once($debian_file);

define('ABSPATH', '/usr/share/wordpress/');
define('WP_CORE_UPDATE', false);

require_once(ABSPATH.'wp-settings.php');
?>


Т.е. в /etc/wordpress лежит "конфиг-скрипт", который по имени хоста (к которому обращаются) определяет, какой их конфигов следует читать. Например, /etc/wordpress/labs.internal, если мы ставим вордпресс на http://labs.internal.

Конгениальное решение. Пожалуй, в существующей инсталляции меня смущает только вот этот файл:

/etc/apache2/conf.d/javascript-common.conf

<Directory "/usr/share/javascript/">
        Options Indexes FollowSymLinks MultiViews
</Directory>
~


ИМХО было бы логичнее его прописывать только для сайтов, которым "это нужно", а не на весь сервер сразу же.

PS Кажется, я понял, как должно выглядеть тру-джанго приложение.


PPS А наличие исполняемых файлов в /etc нормально. В конце-концов у нас есть /etc/ini.d/ просто набитый этими файлами под завязку.

PPPS Ката не будет. It matter!
404

мелочное про юникс

интересно, насколько длиннее будет выглядеть это же на powershell?
find `grep -R DocumentRoot /etc/apache2/sites-enabled|grep "/var/www"|awk '{print $3}'`\
 -group oldgroup -print0|xargs -0 chgrp newgroup


Не, реально интересно. Если кто павершелль до такой степени знает, покажите. Альтернативно принимается на батниках, VBS и т.д.

Условия ТЗ: сменить одну группу на другую у всех файлов, указанных в качестве содержимого веб-узлов веб-сервера (в нашем случае IIS). Поиск ограничить только заданным каталогом.

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