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 градусов), но то, что слабым местом в предыдущей конфигурации стала сетевая карта (кстати в теплых условиях работающая стабильно), это мы выяснили, то есть, для низких температур не всякое железо подойдет.

29 января 2009 г.

rtorrent в debian etch

rtorrent в debian etch зачастую страдает ошибкой time out подключения к трекерам. Иными словами, rtorrent не соединяется.
Решение такое: http://libtorrent.rakshasa.no/ticket/1546

if you have a fresh debian installation you need to install the actual libcurl ( http://curl.haxx.se/download.html ) with the actual c-ares ( http://c-ares.haxx.se/ )

first install c-ares then libcurl (libcurl: ./configure --enable-ares)

After that .. compile libtorrent and rtorrent.

4 января 2009 г.

Боль

Лизочке. 2009

Люди любят боль. Соли не дай, дай почувствовать боль. Хотя, может и соль наоборот нужна, чтобы боль была несколько приятней. Главное в том, что боль должна быть не закрывающей разум, чтобы сам человек мог на больное надавить — солью. И он будет жалеть себя. А это только начало всего приятного. Слезы за свою боль — что может быть приятнее?
Да не было ничего, а нам надо чтобы из-за этого болело. Нельзя просто проживать жизнь. Боль позволяет остановить время. Боль позволяет переоценить ценности. Боль дает надежду на выздоровление. Боль дает право на сочувствие. Боль даже может оправдать безделье.
Да и не было ничего, а нам надо...
А что хочет получить человек, насаждая себе боль? Да все ответы абзацем выше. Главное не что он хочет получить, а как он ее себе привлекает. Это самая интересная часть человеческого. Даже животное не способно на это.
Главное в самоболи (давайте назовем ее так) — человек должен не переусердствовать с ней. Лучший вариант боли — депрессия. Имеено та депрессия, которая так часта в юности. Проследим ее логику. Человек безопытен, человек впечатлен, человек не чувствует меру времени. Из этих тезисов вытекает очень простая картина — человек не понимает, как можно ценить время, не понимает, как можно использовать свой потенциал и не понимает, почему может обмануть человек ближний (не близкий!). В итоге человек начинает причинять себе боль. Да! Это не все. У некоторых, более разумных существ, есть причина весомее — почему человек не знает, что будет после смерти? Но эта причина вытекает от собственной ненаправленности в жизни. Все мы знаем, что надо искать себе Бога, и кто он будет не важно, главное чтобы он был, тогда можно будет не причинять себе боль.
Так вот, главное не переусердствовать с самоболью. Но это юность понимает на начальном пути, она привыкла, что раньше ее боль была востребованна, ее боль была апофеозом ее миросозидания. Но вдруг все рухнуло. Ее мелкая боль перестала восприниматься, юношеское создание вдруг все стали воспринимать взрослым черствым практиком. Оно стало уходить в боль, ласкаться ею, играть с ней. Боль стала смыслом существования, боль стала перекрывать все. Все можно было оправдать болью. Оправдание самоболью — саможаление. Любой поступок можно было оправдать болью. Но время идет, кто не смог контролировать боль — ушел, кто решил что он умнее чем боль — остался. Но никто не потерял веру в боль.
Тот, кто не потерял веру в боль, оставшись в жизни — стал практиком. Практиком жизни, с рычагом регулирования жизни — самоболью. Да зачем мне рассказывать вам, что дает этот рычаг? Вы остались — значит вы сами знаете, а если не знаете, значит пользуетесь этим рычагом на подсознательном уровне.
Обидели? Изобрази боль.
Несогласен? Изобрази боль.
Скучно? Изобрази боль.
Замучало однообразие? Изобрази боль.
И самое главное твое изображение боли будет не воображением — это будет самая настоящая боль. И ты будешь требовать от окружающих удовлетворения свой боли. Как будто у них самих ее нет. Да может у них боль больше. Да может у них не самоболь, в конце концов! Бывает же настоящая боль. А это тебя не волнует. Ты болен, пожалуйста — дайте мне свою боль «выстрадать»! Да не лезтье вы ко мне! А, ну погладьте, погладьте...
Рычаг найден.
А вот какой в нем смысл?
Да тот, о котором говорилось в начале. Боль — это рычаг, во-первых, -во-вторых, повышение внутренней любви себя, в-третьих — яркий отпечаток периодов самоболи (это еще один рычаг на будущее — можно будет им воспользоваться).
Мы пришли к выводу — самоболь — искусство личности обуславливать свое пустое самосуществование. Жаль только, что не каждая личность понимает, что она — соломинка в жизни, и боль властвует над ней, а не она над болью, и что надо всей совокупностью личностей уничтожать боль, а не пытаться воспользоваться ею, что возможно, даже в узком кругу совокупностей.