23 февраля 2009 г.

googlefight.com

Набрел на забавный сервис http://www.googlefight.com/, подсчитывает количество страниц результатов по данному запросу в гугле и выявляет победителя, например:
http://www.googlefight.com/index.php?lang=en_GB&word1=linux&word2=windows
http://www.googlefight.com/index.php?lang=en_GB&word1=linux&word2=freebsd
http://www.googlefight.com/index.php?lang=en_GB&word1=jazz&word2=pop

22 февраля 2009 г.

bash во freebsd 6.2

При установке серверов в freebsd скрипты запуска обычно копируются в /usr/local/etc/rc.d/ . Установив по необходимости систему именно freebsd и парочку серверов был озадачен тем, что скрипты-то не запускаются. То есть, ни ошибок, не предупреждений - ничего. Очень давнишний опыт настройки сервера помог мне вспомнить, что в freebsd по умолчанию стоит не bash, а как выяснилось csh.

Посему, устанавливаем bash из портов, меняем редактор по умолчанию с vi на ee (лично мне он удобнее):


# cd ~
# ee .cshrc

Изменяем setenv EDITOR ee

Перелогинились.

# cd ~
# ee .profile

Добавляем
export EDITOR=ee


# chpass

Меняем shell на /usr/local/bin/bash.

Перезагружаемся.

Кстати, я так и не понял, на чем скрипты. Но на bash у они таки заработали.

14 февраля 2009 г.

Запуск (установка и быстрая настройка) сервера subversion в debian lenny

Устанавливаем сервер и создаем репозиторий:

# apt-get install subversion
# svnadmin create /path/to/svnrepo/
# groupadd subversion
# chown -R root:subversion /path/to/svnrepo/
# chmod -R ug+rw /path/to/svnrepo/

Создаем файл:

/etc/init.d# cat svnserver
svnserve -d -r /path/to/svnrepo/
/etc/init.d# chmod 755 svnserver

Регистрируем в init.d для автозагрузки:

# update-rc.d svnserver defaults

Можно пользоваться:

# svn co svn://localhost/path/to/svnrepo/


ps. Помните, серверу svnserve не обязательно указывать существующий репозиторий. Путь, указанный в аргументе - только лишь указание серверу с какого места начинать просмотр директорий. Поэтому, путь может быть таким:

/path/to/svnrepos

в поддиректориях которого могут располагаться несколько репозиториев:

/path/to/svnrepos/repo1
/path/to/svnrepos/repo2
..
/path/to/svnrepos/repoN

12 февраля 2009 г.

Моя установка (перемещение с windows) trac на debian lenny с базой postgresql

Устанавливаем базу postgresql и дополнительные нужные пакеты:

# apt-get install postgresql postgresql-client postgresql-contrib-8.3

Считаем, что python уже стоит:

# apt-get install python-psycopg2
# apt-get install postgresql-plpython-8.3
# apt-get install python-svn python-subversion

Первый пакет предоставляет доступ к базе из python.
Второй пакет устанавливает возможность писать хранимые процедуры в БД на языке python, которые используются в trac.
Третий позволяет работать с svn репозиториями из python.

Создаем базу данных для trac и пользователя (роль) для базы данных:

# su postgres
$ createuser tracuser -P
Enter password for new role:
Введите снова:
Shall the new role be a superuser? (y/n) y

Тут дописываем: /etc/postgresql/8.3/main/pg_hba.conf .

local trac tracuser md5

Это надо для того, чтобы мы могли соединяться к базе через локальный сокет с помощью нашей роли в базе, а не через tcp/ip . По умолчанию все соединения через local идут для роли безопасности в конфигурационном файле indent sameuser - вкратце, необходимо наличия такого же системного пользователя.

После изменения - "$/etc/init.d/postgresql-8.3 restart" .

Создаем базу данных:

$ createdb -T template0 -h localhost -U tracuser -W trac

Устанавливаем trac и создаем проект:

# wget ftp://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
# tar zxfv Trac-0.11.2.1.tar.gz
# cd Trac-0.11.2.1
# python ./setup.py install
# trac-admin /path/to/myproject initenv

Это для создания нового проекта, для перемещения старого (в моем случае) копируем папку окружения, изменяем конфиг. Делаем бекап базы данных.

Например с windows:

c:\Program Files\PostgreSQL\8.3\bin>pg_dump -U admin trac > tracplain.dump

Восстанавливаем на lenny созданную базу (createlang plpythonu pg_dump сам предусмотрительно прописывает, для этого мы сделали пользователя суперюзером):

# psql -U tracuser -W -f trac.plain trac

Устанавливаем trac через mod_wsgi

# apt-get install libapache2-mod-wsgi

Прописываем в конфиге apache2

WSGIScriptAlias /trac /path/to/trac/mysite.wsgi

WSGIApplicationGroup %{GLOBAL}
AuthType Basic
AuthName "Trac"
AuthUserFile /homr/svn/passwd
Require valid-user
Order deny,allow
Allow from all


Файл с пользователями создаем с помощью passwd.

Содержание файла /path/to/trac/mysite.wsgi:

# cat mysite.wsgi
import os

os.environ['TRAC_ENV'] = '/path/to/trac/'
os.environ['PYTHON_EGG_CACHE'] = '/path/to/trac/eggs'

import trac.web.main
application = trac.web.main.dispatch_request

import site
site.addsitedir('/usr/lib/python2.5/site-packages')

Ресинхронизируем окружение:

# trac-admin /path/to/trac/ resync

Осталось настроить права для каталога окружения проекта и все должно работать.
Также можно урезать права пользователю tracuser с помощью ALTER ROLE

И напоследок, Postgresql quickstart:

1. To start postgres
# /etc/init.d/postgresql start
2. To stop postgres
# /etc/init.d/postgresql stop
3. To start using postgres, change to user postgres
$ su - postgres
4. To create new database
$ createdb dbname
5. To delete database
$ dropdb dbname
6. To access database
$ psql dbname
7. To dump database (backup)
$ pg_dump dbname > backup.out
8. Reload db from file
$ psql -d dbname -f db.out
9. To dump all database to file
$ pg_dumpall > dumpall.sql
10. Reload all from file
$ psql -f dumpall.sql
11. List database
$ psql -l
12. Clean all database
$ vacuumdb --quiet --all

Commands inside psql (PostgreSQL interactive terminal)

1. Access psql
# psql
2. Get help about commands
# \h
3. Quit psql
# \q
4. Import from file
# \i input.sql
5. Show databases
# \l
6. Show tables
# \dt
7. Show users
# \du
8. Connect to database
# \c dbname
9. Change user password
# \c template1
# ALTER USER postgres with password 'new_password';
10. Clean database
# VACUUM FULL;
11. Help on syntax command
# \h SYNTAXNAME

9 февраля 2009 г.

Александр Блок

Александр Блок

Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века -
Все будет так. Исхода нет.

Умрешь - начнешь опять сначала,
И повторится все, как встарь,
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.

1 февраля 2009 г.

"Серверная" на балконе

Решил я обезопасить и сделать более комфортным свое жилище. Обезопасить - это потому, что у меня инет канал обычно не пустует, зачем ему зря пропадать, как говориться, а меня иногда не бывает дома - а комп работает - я случаев таких не знаю, но есть вероятность воспламенения компьютера. Более комфортным - это понятно - нет ночного гула.

Начнем с железной части.

Так как дело происходит зимой, то главный вопрос, который возникает - а выдержит ли холода система.
На одном форуме доказывал человек о стойкости железа к морозам, приводя в пример системы моментальных платежей, аргументируя это тем, что в них находятся обычные комплектующие.
Я решил проверить это. Сначала я поставил системник (pentium 1200 с 512 Mb DIMM) просто голым, проведя предварительно питание и сеть, больше ничего не надо. Проработал ночь при 0 градусов на улице (балког застеклен, не не утеплен), с утра отвалился, пинги не шли, но все крутилось. Думал - холодно ему, надо сделать ящик, да и от внешнего воздействия не помешает. Сделали ящик, попутно устанавливая софт, все это заняло около недели.

О софте.

Поставлен debian etch - единственный дистрибутив, который у меня был 32 битным. Иксы ставить не стал, ибо незачем =). Настроил sshd, samba (подключен сетевой диск с шарой к винде), для закачек поставлен дополнительный винт 160 Гб, который отформатирован в файловую систему reiser fs; apache, установлен rtorrent, последний из svn, как написано тут, но wtorrent ставить не стал - точнее поставил, но отказался, нашел более интересную веб морду - называется ruTorrent, практически аналог utorrenta, но в вебе, почти все на яваскрипте, ниже скрин.



Текущая версия ruTorrent - 1.6, на скрине 0.1. Единственный момент - пришлось скачать по ссылке файлик settings.txt и поместить его в папку settings.
Веб мордочка очень понравилась. Единственный минус, правда это минус самого rtorrent - нет очереди закачки. Но есть приоритеты и ограничения глобальных слотов скачки. В принципе, это тоже самое.

Вернемся к железной части. Когда все было готово, ящик покрашен и высушен, пришла пора проверить его в деле. Вот он собственно сам:



А вот как устроена связь:



Процесс размещения системы в стойке =) Естественно, комп был прогрет дома и запущен сразу.



А вот так он выглядит в боевом состоянии:



Так вот, первый заход оказался неудачным - те же симптомы, что и при первой пробе, но быстрее, ибо температура на улице минус 10 градусов - пинг пропадает, хотя по звуку все крутится. Проработал полчаса, вот температура, снятая сенсорами каждые 5-10 минут:

M/B Temp: +17°C (high = +105°C, hyst = +0°C)
CPU Temp: +36.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +14°C (high = +105°C, hyst = +0°C)
CPU Temp: +29.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +28.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)

Дальше он не отвечал на запросы.
Вернул системник назад - открыл - потрогал руками самые холодные места - сетевая была самой холодной. Это было какая-то сетевушка под названием complex, очевидно качество не очень. Решил заменить, нашел acorp с чипом realtek. Провел ту же процедуру помещения в стойку =). Вечером похолодало до -12 градусов. ПРоцесс снятия температуры:

M/B Temp: +14°C (high = +105°C, hyst = +0°C)
CPU Temp: +34.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +12°C (high = +105°C, hyst = +0°C)
CPU Temp: +26.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +26.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)

M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +23.0°C (high = +100°C, hyst = +92°C)

Как видно, гораздо более низкие температуры и все в порядке, процессор еще остывает, но на материнке установилась стабильная температура.
Клиент торрента работает, посмотрим, как проживет система ночь (довольно холодную, так как половина января температура была не больше -5 градусов), но то, что слабым местом в предыдущей конфигурации стала сетевая карта (кстати в теплых условиях работающая стабильно), это мы выяснили, то есть, для низких температур не всякое железо подойдет.