28.05.2011

Устранение RHEL-вского бардака с виртхостами в одном конфиге

Debian сделали намного умнее, у них каждый виртхост - это отдельный файл. Никто не срет в общий апачий конфиг. У RHEL/CentOS до сих пор этого нет по какой-то неведомой причине.

Поэтому чтобы не убивать свою систему и не ловить косяки по подобию ISPmanager, сделаем простые действия:

Создадим папку, где у нас будут только виртхосты:
mkdir /etc/httpd/vhosts.d

Откроем основной конфиг:
vi /etc/httpd/conf/httpd.conf

Находим строчку в конфиге:
Include conf.d/*.conf

И рядышком, под ней, подключим новую директорию:
#
# Load virtual hosts files from the vhosts directory "/etc/httpd/vhosts.d".
#
Include vhosts.d/*.conf
Вот! Пара движений, а как теперь аккуратненько получается!
Кроме того, теперь можно написать простейшую утилиту типа a2ensite/a2dissite, которая будет включать и выключать виртхосты. Только не симлинками, как в Debian, а просто переименовывать .conf на конце во что-то другое, тем самым не давая приинклудиться.


Установка Apache Traffic Server (ATS)

Интересная сравнительная статья между основными конкурентами: Nginx, Varnish, Squid, HAProxy и ATS. К сожалению, Oops, DeleGate, Crossroads, Perlbal и Pound в ней не участвуют.

Устанавливаем репозиторий:
wget http://mirrors.netdna.com/NetDNA/netdna/x86_64/netdna-release-0.2.0-1netdna.x86_64.rpm && rpm -ivh netdna-release-0.2.0-1netdna.x86_64.rpm

Ставим сервер:
yum install trafficserver


Закрываем репозиторий:
vi /etc/yum/repos.d/netdna.repo
везде поставить enabled = 0

Открываем конфиг и настраиваем его, как написано ниже:
vi /etc/trafficserver/records.config


22.05.2011

Fatal error: Allowed memory size of NNNNNN bytes exhausted (tried to allocate NNN bytes) in ...

Достаточно часто встречающаяся проблема. В интернете все советуют исправить memory_limit (как в php.ini, а и через php_value в .htaccess). Однако размер памяти, выделенной для php-процесса - не единственаня причина, которая могла вызвать ошибку.
Если Вы выкрутили memory_limit до упора, а проблема не исчезла, то попробуйте закомментировать disable_functions в php.ini - очень сильно сузите круг возможных причин.

14.05.2011

Java+ConsoleGUI

Для того, чтобы отрисовать нормальную интерактивную консоль в Windows, можно скачать Eric Berkowitz's в любую директорию, где хранятся jar-файлы. Затем открыть свойства проекта в Eclipse и перейти в раздел, где подключаются библиотеки и добавить этот файл через кнопку Add External JARs...



Теперь в функции main() можно просто создать экземпляр консоли:
        new eric.Console(XXX);
где XXX - размер скроллинга.

10.05.2011

Простейшее скрещивание Python и Apache

Сразу предупреждаю, что на боевые сервера этого ставить нельзя. Во-первых для них существует более современный mod_wsgi, который ставится сложнее и который дает возможность использовать фреймворки, во-вторых данный вариант небезопасный, потому что код будет читаться Апачем, а аналога open_basedir, как у PHP, для Python нет. Этот пример только для тех, кто учит Python и кому нужно побыстренькому поднять вэб-сервер, сосредоточившись на языке, а не на системном администрировании. Вариант для Debian.

Устанавливаем модули Апача, чтобы научить его "хэндлить" Python'ий код:
apt-get install libapache2-mod-python libapache2-mod-python-doc

Пишем общий для всего сервера конфиг Апача, который говорит, что все файлы, которые заканчиваются на .py или .psp, обрабатывать питоньим интерпретатором:
tee > /etc/apache2/mods-available/python.conf

<IfModule mod_python.c>
        AddHandler mod_python .py .psp
        PythonHandler mod_python.publisher | .py
        PythonHandler mod_python.psp | .psp
</IfModule>

07.05.2011

Различие между Ctrl+C и Ctrl+D

Недавно понял в чем разница между этими двумя "горячими клавишами".
Когда пользователь логинится в систему, то терминал, который при этом запускается имеет ряд своих настроек. Вообще он регулируется через ioctl, как положено любому девайсу, но как правило используют через врапперы.
Есть утилита, основанная на ioctl: stty. Через нее можно просматривать и менять настройки терминала.

Если запустить ее с флагом -a, то она покажет все настройки, в том числе и наборы символов, которые терминал понимает так, настроено в этих настройках.


~# stty -a
speed 38400 baud; rows 31; columns 224; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Таким образом ^C означает interrupt (прервать), а ^D означает конец файла.