вторник, 31 августа 2010 г.

воскресенье, 29 августа 2010 г.

Что такое RAID-Z?

Уверен, многие довольно часто сталкивались с этим модным термином в сфере хранения данных, но мало кто знает, что он из себя представляет. Итак, давайте разберемся, что это за зверь и почему он так крут.

Для начала стоит отметить, что это не какая-то абсолютно новая технология, а, скорее, работа над проблемами, которые имели место в RAID-5. Какие именно недостатки она исправляет? Во-первых, устраняется проблема под название "Write hole", во-вторых, в RAID-5, если была изменена лишь часть страйпа (страйп - это группа блоков, каждый из которых расположен на отдельном жестком диске), то необходимо перечитывать весь страйп для того, чтобы пересчитать его данные четности (а это наносит серьезный урон производительности). То есть, если идет запись всего страйпа целиком, то мы просто асинхронно ее выполняем на всех дисках. Если же переписывается только часть страйпа, то необходимо сначала выполнить синхронное чтение перед тем, как что-либо писать. У железных RAID-5 контроллеров это решается посредством сохранения записываемых данных в кэше на то время пока будет выполнено синхронное чтение.

Как же указанные проблемы решаются в RAID-Z? Во-первых, в ZFS RAID-Z используется динамический размер старйпа (что автоматически устраняет случай "частичной перезаписи страйпа"). Таким образом, устранение частичных записей страйпа вместе с принципом записи copy-on-write (новые данные не записываются поверх старых, а пишутся в новое место, а потом атомарно происходит переустановка указателя на новое расположение данных) полностью решают проблему "Write hole". Также, RAID-Z имеет преимущество в скорости, так как ему не нужно выполнять чтение перед записью (так как отсутствуют частичные записи страйпов).

Уход от фиксированного размера страйпа, очевидно, усложняет устройство RAID-массива, так как теперь невозможно пройти весь массив и, допустим, разбив его на блоки 64 килобайта высчитать их ключевые суммы. В связи с динамическим размером страйпа необходимо где-то хранить метаданные о размере страйпов. Что таит в себе еще одну проблему - теперь файловая система (где хранятся эти метаданные) и RAID массив представляю собой единое целое, что делает невозможным раздельную реализицию файловой системы и RAID контроллера. То есть, требуется взгляд как со стороны механики, так и со стороны логики устройства ФС.

Усложнение структуры файловой системы не может не сказаться на скорости работы. Но будет ли это приводить к замедлению? Совершенно нет, так как при синхронизации будут копироваться только блоки с данными, а пустые блоки не будут. Также стоит обратить внимание, что в ZFS блоки хешируются 256 битными ключевыми суммами, в то время как в обычном RAID используется простейший xor.

ZFS RAID-Z также обеспечивает беспрецедентный уровень защиты данных от повреждения по механическим причинам, так как защищает не только от отказа отдельного жесткого диска, но и позволяет обнаруживать отказы отдельных блоков на диске. Когда Вы считываете с RAID-Z блок он сравнивается с его ключевой суммой. Если данные не соответствуют ключевой сумме, то ZFS считывает данные о четности и пытается реконструировать данные, а также при этом выясняет, какой из дисков послужил источником проблемы и, разумеется, уведомляет об этом администратора. Таким образом, приложение запросившее данные получает корректные данные без каких-либо ошибок.

Очень важнй чертой технологии ZFS RAID-Z является то, что она не предъявляет никаких требований к аппаратной части сервера (не считая повышенных требований к оперативной памяти).

Кроме RAID-Z также существует его модификация RAID-Z2 (близка к RAID-6), которая устойчива к отказу двух жестких дисков. Кроме этого, уже существует (но пока только-только портирована во FreeBSD) версия RAID-Z3, которая выдерживает отказ до трех дисков массива.

По материалам: http://blogs.sun.com/bonwick/entry/raid_z и http://en.wikipedia.org/wiki/Non-standard_RAID_levels#RAID-Z

ZFS Deduplication во FreeBSD 8.1

Пока отсутствует, так как эта фича была реализована лишь в 21 версии ZFS (ссылка), а во FreeBSD 8.1 используется ZFS версии 14 (ссылка).

Update: фича портирована в HEAD версию FreeBSD: http://www.opennet.ru/opennews/art.shtml?num=27828

RAID-5 write hole

Если система отказывает в тот момент, когда имеются активные операции записи на диск, то данные четности и непосредственно данные могут стать несовместимыми (неконсистентными) друг с другом. Если эта проблема не будет исправлена до отказа одного из жестких дисков массива или блока жесткого диска, то данные могут быть потеряны в следствие использования некорректных данных четности для восстановления потерянных блоков в массиве. Эта проблема часто называется "Write hole". Для избежания этой проблемы используется кэш-память с резервным питанием (батареей), которая минимизирует вероятность подобного развития событий. Аналогичной проблеме подвержены RAID-6 массивы.

Оригинал:
In the event of a system failure while there are active writes, the parity of a stripe may become inconsistent with the data. If this is not detected and repaired before a disk or block fails, data loss may ensue as incorrect parity will be used to reconstruct the missing block in that stripe. This potential vulnerability is sometimes known as the write hole. Battery-backed cache and similar techniques are commonly used to reduce the window of opportunity for this to occur. The same issue occurs for RAID-6.

Источник: http://en.wikipedia.org/wiki/Standard_RAID_levels

Можно ли выбросить активный диск из Linux Soft-Raid?

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

mdadm /dev/md2 -f /dev/sda3
mdadm: set /dev/sda3 faulty in /dev/md2
mdadm /dev/md2 -r /dev/sda3
mdadm: hot remove failed for /dev/sda3: Device or resource busy

Как видите, нельзя :)

суббота, 28 августа 2010 г.

Образование онлайн от Khan Academy

http://www.khanacademy.org/

libketame - распределение memcached ключей по множеству серверов

http://www.lastfm.ru/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients

Странные ошибки про HDD в dmesg

Имеем вот такой комплект ошибок в dmesg:

[1545760.918827] ata1.00: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x6 frozen
[1545760.918876] ata1.00: failed command: READ FPDMA QUEUED
[1545760.918908] ata1.00: cmd 60/10:00:b7:ef:69/00:00:06:00:00/40 tag 0 ncq 8192 in
[1545760.918909] res 40/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x4 (timeout)
[1545760.918997] ata1.00: status: { DRDY }
[1545760.919022] ata1.00: failed command: READ FPDMA QUEUED
[1545760.919053] ata1.00: cmd 60/08:08:ef:ef:69/00:00:06:00:00/40 tag 1 ncq 4096 in
[1545760.919054] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[1545760.919142] ata1.00: status: { DRDY }
[1545760.919166] ata1.00: failed command: READ FPDMA QUEUED
[1545760.919197] ata1.00: cmd 60/08:10:ef:ee:69/00:00:06:00:00/40 tag 2 ncq 4096 in
[1545760.919199] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[1545760.919286] ata1.00: status: { DRDY }
[1545760.919310] ata1.00: failed command: READ FPDMA QUEUED
[1545760.919341] ata1.00: cmd 60/08:18:07:ef:69/00:00:06:00:00/40 tag 3 ncq 4096 in
[1545760.919343] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[1545760.919430] ata1.00: status: { DRDY }
[1545760.919459] ata1: hard resetting link
[1545761.238312] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[1545761.309374] ata1.00: configured for UDMA/133
[1545761.309403] ata1.00: device reported invalid CHS sector 0
[1545761.309431] ata1.00: device reported invalid CHS sector 0
[1545761.309458] ata1.00: device reported invalid CHS sector 0
[1545761.309486] ata1.00: device reported invalid CHS sector 0
[1545761.309520] ata1: EH complete
[1670305.969322] sd 0:0:0:0: Attached scsi generic sg0 type 0
[1670305.969365] sd 1:0:0:0: Attached scsi generic sg1 type 0
[1670305.969404] sd 4:0:0:0: Attached scsi generic sg2 type 0
[1670305.969444] sd 5:0:0:0: Attached scsi generic sg3 type 0

Тут проблема в том, что не указано, какой диск сбоит (sda, sdb, sdc или sdd), а лишь указано, что это "ata1.00". Как это расшифровать я пока что не знаю. Сейчас посмотрим в коде ядра и добавим :)

Установка Gentoo c не Gentoo LiveCD

Ага, это тоже вполне себе возможно: http://www.gentoo.org/doc/en/altinstall.xml

среда, 25 августа 2010 г.

ISPManager: PHP ошибка доступа

Ошибка возникает при создании сайта с поддержкой PHP (от имени root) для какого-то пользователя, у которого не активирована поддержка PHP. Чтобы избавится от проблемы, нужно пройти в раздел "Пользователи" и активировать пользователю поддержку PHP (например, в режиме "Модуль Апача").

DNSManager имеет поддержку PowerDNS

Очень удивительная новость лично для меня :) Вот ссылка: http://ru.ispdoc.com/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_PowerDNS_c_DNSmanager

понедельник, 23 августа 2010 г.

Текущее состояние системы контейнеризации jail во FreeBSD 8 и FreeBSD 8.1, а также ее перспективы

В последнее время заинтересовался состоянием развития системы контейнеризации jail во FreeBSD. В первую очередь в недавних релизах 8.0 и 8.1, но также интересно было бы ознакомиться с планируемыми нововведениями в этой подсистеме. Если Вы ранее не сталкивались с jail, то вкратце - это технология очень похожая на Linux OpenVZ, но с меньшими возможностями по изоляции (тут с OpenVZ поспорить сложно, да).

FreeBSD 8.0

Была добавлена поддержка полностью виртуализированного сетевого стека для jail инстанций. В оригинале звучит так:
A new virtualization container named “vimage” has been implemented. This is a jail with a virtualized instance of the FreeBSD network stack and can be created by using jail(8) command.

FreeBSD 8.1

Тут лишь небольшое добавление в фреймворк pfill для поддержки той самой виртуализации сети. В оригинале звучит так:
The pfil(9) framework for packet filtering in FreeBSD kernel now supports separate packet filtering instances like ipfw(4) for each VIMAGE jail.

FreeBSD 9.x

Согласно письму, недавно распространенному FreeBSD Foundation (10 июня 2010), они осознают всю важность подсистемы jail и планируют вывести ее на новый уровень в 9й ветке. Для этого разработчику ядра FreeBSD (Bjoern A. Zeeb) был выделен грант, который позволит довести jail до законченного решения (позволяющего полноценную изоляцию виртуальных контейнеров). Среди систем, которые планируется улучшить упоминаются SYSV, Posix IPC. Также очень большое внимание отдается отсутствию регрессий кода jail и максимально возможное снижение оверхеда, возникающего при использовании jail. Так что, технология вполне себе живет и имеет хорошие перспективы :)

Вот оригинал:
Dear FreeBSD Community,

We are pleased to announce that Bjoern A. Zeeb has been awarded a grant
to improve FreeBSD's jail based virtualization infrastructure and to
continue to work on the virtual network stack. His employer, CK Software
GmbH is matching the Foundation's funding with hours.

FreeBSD has been well known for its jail based virtualization during the
last decade. With the import of the virtual network stack, FreeBSD's
operating system level virtualization has reached a new level.

This project includes cleanup of two years of import work and
development and, more notably, brings the infrastructure for a network
stack teardown. Cleanly shutting down a network stack in FreeBSD will be
the major challenge in the virtualization area to get the new feature to
production ready quality for the 9.x release
lifecycle.

Further, the project includes generalization of the virtual network
stack framework, factoring out common code. This will provide an
infrastructure and will ease virtualization of further subsystems like
SYSV/Posix IPC with minimal overhead. All further virtualized subsystems
will immediately benefit from shared debugging facilities, an essential
feature for early adopters of the new technology.

"Improved jail based virtualization support, that continues to be very
lightweight and as easily manageable as classic jails, will be a killer
feature for the next few years," said Bjoern A. Zeeb, FreeBSD developer.
He also added, "It will allow people to partition their FreeBSD server,
run simulations without racks of hardware, or provide thousands of
virtual instances in hosting environments fairly easy and efficiently.
While this follows the trend of green computing, it also adds to
FreeBSD's virtualization portfolio with Xen or other more heavyweight
hypervisor support, which can be mixed with jails as needed."

While work in this area will have to continue, the funding for this
project will end mid-July 2010.

Sincerely,

The FreeBSD Foundation

Resource Containers Project

Это также очень серьезная веха в развитии FreeBSD jail, так как этот функционал позволит лимитировать ресурсы для каждого контейнера в отдельности (память, процессор, сеть и проч.), чего ранее в jail не было. Более подробно можно прочесть вот здесь: http://freebsdfoundation.blogspot.com/2010/07/resource-containers-project.html

Update:
А вот уже и новости с полей о добавлении вирутализации сетевого стека (о чем я писал выше, это уже есть в 8.1) и других улучшениях подсистемы jail: http://freebsdfoundation.blogspot.com/2010/08/update-on-freebsd-jail-based.html, следующим шагом стоит ожидать виртуализации SYSV/POSIX IPC.

Также очень много интересной технической информации на wiki странице проекта FreeBSD jail: http://wiki.freebsd.org/Jails

Достаточно ли 7 лет поддержки для RHEL в наше время?

Интересное рассуждение на тему сабжа от Dag Wieers: http://dag.wieers.com/blog/is-7-years-of-rhel-support-still-sufficient

Читать в первую очередь тем, у кого в подчинении сотни и более машин с CentOS / RHEL.

Update: а вот и новость от RedHat о возможности продлить подписку еще на 3 года: http://www.opennet.ru/opennews/art.shtml?num=27678

Отключение квот в Debian

Временами бывает, что квоты вешают сервер при загрузке (или просто тормозят загрузку после горячего ребута), поэтому, если они не нужны, то наиболее простое решение - отключить их вовсе.

Это можно сделать так (отключаем демона квот):
update-rc.d -f quota remove

Также еще стоит отредактировать /etc/fstab и там также отключить квоты.

После этого потребуется перезагрузка:
shutdown -r now

quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown

Что это такое? Это расширенный формат классических Linux квот с поддержкой журналирования, который призван помочь избежать долгих пересчетов всех блоков на диске при горячей перезагрузке.

Огромный каталог модулей Апача

http://modules.apache.org/

воскресенье, 22 августа 2010 г.

VDSManager FreeBSD, список изменений внесенных в стандартное ядро

http://ru.ispdoc.com/index.php/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_FreeBSD

Занялся уборкой блога

Из текущих изменений:
1. Добавлено облако тегов, все старые теги удалены и произведена переустановка всех тегов для всех постов. Так что теперь возможна полноценная навигация по блогу посредством облака тегов :)
2. Добавлена удобная ссылка на добавление блога в RSS
3. Изменен дизайн (да, да! Теперь у меня новый Blogger шаблог оформления!)
4. Выбрал новый удобный редактор для записей (читателем этого не видно, фича исключительно для меня) :)

Invisible Internet Project

Для тех, кто не слышал: http://ru.wikipedia.org/wiki/I2P

пятница, 20 августа 2010 г.

Быстрое удаление папки bin-tmp при использовании ISPManager

cd /var/www/username/data

yum install -y screen # или apt-get intstall -y screen
install -d -g `stat -c "%G" bin-tmp` -o `stat -c "%U" bin-tmp` -m 700 bin-tmp2
mv bin-tmp bin-tmp-old
mv bin-tmp2 bin-tmp
/etc/init.d/apache2 restart
screen
rm -rf bin-tmp-old

четверг, 19 августа 2010 г.

Вертикаль управления технологическими процессами :)

http://ketamin.livejournal.com/374157.html

Кривая кодировка в Linux консоли, как бороться?

Многие пользователи уж очень любят ставить русскую локаль в SSH, при поддержке же это выливается в постоянные проблемы с кракозяблами :) Так мало того, что машину нужно починить, так еще и кракозяблы победить нужно!

Итак, есть универсальное решение вот такой проблемы:

apt-get install locales-all
?????? ??????? ???????... ??????
?????????? ?????? ????????????
?????? ?????????? ? ?????????... ??????
??? ??????????? ????? ????? ?????? locales-all.
????????? ?????? ??????????????? ????????????? ? ?????? ?? ?????????:
libdns45 libisccc40 liblwres40 libbind9-40 libisccfg40 libisc45
??? ?? ???????? ??????????? 'apt-get autoremove'.
????????? 0, ??????????? 0 ????? ???????, ??? ???????? ???????? 0 ???????, ? 0 ??????? ?? ?????????.
?? ??????????? ?? ????? ??? ??????? 1 ???????.
????? ?????? ????????, ??ߣ? ???????? ????????? ???????????? ??????ԣ? ?? 0B.
????????????? ????? acct (6.4~pre1-6) ...
chown: ???????? ??????: `root:adm'
dpkg: ?? ??????? ?????????? ???????? acct (--configure):
?????????? post-installation script ????????? ??? ?????? 1
??? ????????? ????????? ??????? ????????? ??????:
acct
E: Sub-process /usr/bin/dpkg returned an error code (1)


Мало понятного, не правда ли?

При запросе текущей локали получаем имя виновницы торжества:

locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=ru_RU.KOI8-R


А теперь узнаем, какие переменные среды за нее отвечают:

env | grep KOI
LC_ALL=ru_RU.KOI8-R
LANG=ru_RU.KOI8-R


И теперь, вуаля:

LANG=C LC_ALL=C apt-get install locales-all
Reading package lists... Done
Building dependency tree
Reading state information... Done
locales-all is already the newest version.
The following packages were automatically installed and are no longer required:
libdns45 libisccc40 liblwres40 libbind9-40 libisccfg40 libisc45
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0B of additional disk space will be used.
Setting up acct (6.4~pre1-6) ...
chown: invalid group: `root:adm'
dpkg: error processing acct (--configure):
subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
acct
E: Sub-process /usr/bin/dpkg returned an error code (1)


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

среда, 18 августа 2010 г.

Интересный аудио-сайт

http://prostopleer.com

Самые дорогие специалисты Москвы

http://ural.hh.ru/article.xml?articleId=1168

[emerg] 3728#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

Чтобы исправить, делаем следующее:

vi /etc/nginx/nginx.conf


После этого в блок http { } в самый его верх добавляем следующее:

server_names_hash_bucket_size 512;


Перезапускаем Nginx:
/etc/init.d/nginx restart


Вуаля :)

Подробнее: http://wiki.nginx.org/NginxHttpCoreModule#server_names_hash_bucket_size

OpenVZ, ошибка при миграции конетйнера. Error: Most probably some iptables modules are not loaded

Вот такой текст при вызове vzmigrate:


Setting devices
Error: undump failedStopping container ...
: Invalid argument
Restoring failed:
Error: iptables-restore exited with 2
Error: Most probably some iptables modules are not loaded
Error: rst_restore_net: -22
Container start failed
Container was stopped
Container is unmounted
Error: Failed to undump container
Resuming...
vzquota : (error) Quota is not running for id 3722


Проблема вызвана тем, что не все модули iptables из тех, что доступны контейнеру, присутствуют на target машине (на которую осуществляется перенос). Как решение - вырубить все iptables модули на время переноса, а потом включить, что потребуется (а обычно они не требуются).

вторник, 17 августа 2010 г.

Анализ естественного языка в ЖЖ

Как ни странно, но сообщество ЖЖ, посвященное анализу естественного языка забито сплошь профессионалами сабжевой профессии - спамерами: http://community.livejournal.com/ru_compling/ Очень редко встретишь столько профессионалов и в одном месте :)

понедельник, 16 августа 2010 г.

FastCGI vs SCGI

Очень здравое сравнение протоколов http://utcc.utoronto.ca/~cks/space/blog/programming/SCGIvsFastCGI

О пожарах в России: Обращение к Шойгу

http://annabaskakova.livejournal.com/284963.html

Как запретить само-регистрацию юзеров в Mantis?

Открываем конфиг:
vi config_inc.php


И добавляем в самый низ до закрывающегося тега:

$g_allow_signup = OFF;


После этого функция "Зарегистрироваться самостоятельно" пропадет в принципе.

Серьезная проблема безопасности в стандартной конфигурации Mantis

Mantis имеет две неприятные фичи - вновь созданный проект стандартно становится публичным, а регистрация пользователей доступна в автоматическом режиме. То есть, если Вы нечаянно сделали свои проекты public (Manage projects - View Status - Public) и не залочили автоматическую регистрацию юзеров (это можно сделать вот так), то любой зарегившийся увидит все Ваши сакральные тикеты. Прекрасно, не правда ли?

Установка Microsoft Hyper-V на NHS-1, NHS-2, NHS-3, NHS-24 от Fastvps.ru

При его использовании на FastVPS есть особенность - сеть не будет корректно работать, если для всех дополнительных IP не заказать MAC адреса. Сделать это можно в нашей поддержке :)

При этом проблем со встроенной сетевой картой, как правило, не возникает.

воскресенье, 15 августа 2010 г.

О важности страхования

Если Вы считаете, что страхование - бесполезный процесс и развод на деньги, прочтите эту заметку пожалуйста, гарантирую, она изменит Ваш взгляд на страхование навсегда: http://strahovkablog.ru/?p=453&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+strahovkablog+(StrahovkaBlog.ru)

суббота, 14 августа 2010 г.

EXT3-fs warning (device md2): ext3_dx_add_entry: Directory index full!

Такая красота вызвана тем, что превышено максимальное число файлов в папке, допустимое для файловой системы ext3.

При этом на машине дела с айнодами обстоят так (прошу не смущаться цифре в 100%, айноды свободные есть):

df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/md2 19144704 18994479 150225 100% /
tmpfs 506008 7 506001 1% /lib/init/rw
udev 506008 1232 504776 1% /dev
tmpfs 506008 1 506007 1% /dev/shm
/dev/md1 131648 44 131604 1% /boot



Более подробно:


Using a filesystem with 4k blocks, and assuming the filenames are of
the same average length, you should be able to get approximately 200k
* (4**3) = 12.8 million files in a single directory. If you use a 2k
block filesystem, the limit will be approximately 200k * (2**3) = 1.6
million files in a single directory.


Как решить проблему? Найти папки, где произошло данное событие и удалить из них файлы.

http://kerneltrap.org/mailarchive/linux-kernel/2008/5/18/1865234

Как подключить к RDP сессии из Linux?

rdesktop server.hostname.ru -p qwerty -u Administrator

Nginx как Comet сервер

http://highload.com.ua/index.php/2010/07/21/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D0%BC-nginx-%D0%BA%D0%B0%D0%BA-long-polling-comet-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/

пятница, 13 августа 2010 г.

Тестирование памяти в Linux

Как протестовать память в Linux? Утилитой memtester, memtest86+ же не подходит по причине отсутствия физического доступа к машине.

Устанавливаем в CentOS:
yum install -y memtester


Устанавливаем в Debian:
apt-get install -y memtester


Запускаем:
memtester 1024 1
# 1024 -- размер выделяемого блока памяти в мегабайтах (его нужно брать из расчета свободной памяти на машине, top и поле "free"), 1 -- число повторений

Хм, как бы то ни было странно, но Linux Soft Raid-1 можно сделать на более чем двух дисках :)

Например, для трех все будет выглядеть так:
mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Thu Jan 14 10:02:29 2010
Raid Level : raid1
Array Size : 4200896 (4.01 GiB 4.30 GB)
Used Dev Size : 4200896 (4.01 GiB 4.30 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Fri Aug 13 13:10:35 2010
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

UUID : 277ac32f:2e3f0881:776c2c25:004bd7b2 (local to host rescue)
Events : 0.70

Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1


Рекомендуется всем с врожденной боязнью за свои данные :)

CPU1: Temperature above threshold, cpu clock throttled

Заметил в dmesg вот такую красоту:

CPU2: Temperature/speed normal
CPU0: Temperature/speed normal
CPU4: Temperature/speed normal
CPU7: Temperature/speed normal
CPU6: Temperature/speed normal
CPU3: Temperature/speed normal
CPU5: Temperature above threshold, cpu clock throttled
CPU1: Temperature above threshold, cpu clock throttled


Это намекает на проблемы с охлаждением. Стоит проверить температуру компонентов: http://phpsuxx.blogspot.com/2009/12/centos-5_14.html

Опрос популярности различных системы мониторинга

Вот http://www.linuxjournal.com/node/1010972/results и вот http://www.opennet.ru/opennews/art.shtml?num=27597

Debian 6 Squeeze выйдет в декабре!

http://www.linuxjournal.com/content/debian-60-track-december-release

среда, 11 августа 2010 г.

Монтирование удаленного ssh сервера как файловой системы в Debian

Ставим:
apt-get install -y sshfs


Создаем точку монтирование и монтируем:
mkdir /ssh
sshfs root@ip.ad.dr.es/: /ssh/


Отмонтируем:
fusermount -u /ssh/


Вот и все :)

Сброс пароля на Windows 2008 Web / Standard Edition посредством Linux LiveCD

ВНИМАНИЕ! ИСПОЛЬЗОВАНИЕ ДАННОГО МАНУАЛА МОЖЕТ ПРИВЕСТИ К ПОТЕРИ ДАННЫХ И НЕРАБОТОСПОСОБНОСТИ ОС СЕРВЕРА!!!

ВНИМАНИЕ!!! ИНСТРУКЦИЯ НЕ ТРЕСТИРОВАЛАСЬ!!!

Возможен посредством вот этой тулзы:
http://pogostick.net/~pnh/ntpasswd/

Для Дебияна:
apt-get install -y ntfs-3g pwgen


Скачиваем сборку с офсайта (в репозитории старая и некорректно работающая с 2008 версия):
apt-get install unzip
mkdir /opt/chntpw
cd /opt/chntpw
wget http://pogostick.net/~pnh/ntpasswd/chntpw-source-100627.zip
unzip chntpw-source-100627.zip
rm chntpw-source-100627.zip
mv chntpw-100627/* ./
rm -r chntpw-100627


Далее просматриваем таблицу разделов:
fdisk -l


И монтируем диск:
mount -t ntfs-3g /dev/sda1 /mnt -o force


Переходим в системную папку:
cd /mnt/Windows/System32/config


Запрашиваем список имеющихся юзеров:
/opt/chntpw/chntpw.static -l SAM


Генерируем новый пароль:
pwgen 8 1


Меняем пароль:
/opt/chntpw/chntpw.static -u Administrator SAM


На первом шаге нажимаем 2, потом указываем пароль, потом нажимаем y и соглашаемся с изменением.

Это выглядеть будет так:
/opt/chntpw/chntpw.static -u Administrator SAM
chntpw version 0.99.6 100627 (vacation), (c) Petter N Hagen
Hive name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c
Page at 0x8000 is not 'hbin', assuming file contains garbage at end
File size 262144 [40000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 247/20456 blocks/bytes, unused: 25/7992 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length : 0
Password history count : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator | ADMIN | dis/lock |
| 01f5 | Guest | | dis/lock |

---------------------> SYSKEY CHECK <----------------------- SYSTEM SecureBoot : -1 -> Not Set (not installed, good!)
SAM Account\F : 0 -> off
SECURITY PolSecretEncryptionKey: -1 -> Not Set (OK if this is NT4)
Syskey not installed!

RID : 0500 [01f4]
Username: Administrator
fullname:
comment : Built-in account for administering the computer/domain
homedir :

User is member of 1 groups:
00000220 = Administrators (which has 1 members)

Account bits: 0x0010 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |

Failed login count: 5, while max tries is: 0
Total login count: 8

- - - - User Edit Menu:
1 - Clear (blank) user password
2 - Edit (set new) user password (careful with this on XP or Vista)
3 - Promote user (make user an administrator)
4 - Unlock and enable user account [probably locked now]
q - Quit editing user, back to user select
Select: [q] > 2
New Password: newpasswd
Password changed!

Hives that have changed:
# Name
0
Write hive files? (y/n) [n] : y
0 - OK


Потом перезагружаемся в Windows:
cd
umount /mnt
shutdown -r now


Ну и да... у меян не сработало, я нечаянно сбросил пароль на пустой и тем самым сильно облома себе счастье.

Источник: http://www.howtogeek.com/howto/windows-vista/change-your-forgotten-windows-password-with-the-linux-system-rescue-cd/

-bash: /bin/rm: Argument list too long

Эта ошибка выдается при попытке удалить все файлы в папке с очень большим числом файлов:
rm * -f


Но есть обходной путь решения этой проблемы:
find | xargs --no-run-if-empty -n 500 rm -f


При таком подходе файлы будут поступать на вход rm по 500 штук и все быстро удалится.

вторник, 10 августа 2010 г.

Open Source Web Design

http://www.oswd.org/

Порт vim на Mac

http://code.google.com/p/macvim/

Как полностью рекурсивно скачать удаленный ftp сервер?

Посредством ftp клиента lftp!

Ставим его и screen:
apt-get install -y lftp screen


Запускаем screen (так как иначе выгрузка отвалится, если мы отключимся от машины):
screen


Создаем папку, куда будем класть скаченные файлы:
mkdir /opt/mirror
cd /opt/mirror


Запускаем lftp:
lftp логин@сервер


Даем команду на загрузку всего ftp (либо можете указать mirro имя_папки, если требуется только одна папка):
mirror /


Все, теперь ждем, пока все файлы будут слиты :)

Источник: http://bethesignal.org/blog/2008/12/04/recursive-get-with-lftp/

понедельник, 9 августа 2010 г.

Новый экстеншен к ISPManager

Easy way to change MX for domain to Google, Yandex, Rambler, Pochta. Required Python >= 2.5


Весьма полезно :)

Как установить FreeBSD на FastVPS.ru ?

Для начала стоит оговориться, что без проблемная установка FreeBSD возможна только на сервера NHS-1, 2, 3, 24.

1. Заходите в панель Robot
2. Выбираете FreeBSD 64 bit, если требуется 64 битная ОС (более 3 гб памяти) либо FreeBSD 32 bit, если требуется 32 битная ОС.
3. Выбираете Activate Rescue System и записываете где-либо выданный пароль
4. Если сервер доступен по ssh - презагружаете его командой shutdown -r now если же недоступен идете в Роботе на вкладку: Reset и выбираете "Execute a automatic hardware-reset"
5. После этого подключаетесь к серверу по ssh и запускаете команду installimage
6.
Выбор версии ОС
Далее выбираете FreeBSD 7.3 или FreeBSD 8.1. Мы рекомендуем 8.1.

Выбор битности
Далее выбираете битность, если более 3гб памяти, то 64, иначе 32.

Настройка RAID
Далее появится окошко настройки RAID, если желаете, чтобы оба диска были в RAID-1 (зеркало), то ставим крестики посредством пробела около каждого из двух дисков (если у Вас их три, то выбирайте только первые два). После этого щелкаем ок.

Выбор файловой системы
Далее предлагается файловая система - UFS или ZFS. Мы рекомендуем проверенную временем UFS.

Выбор размере файла подкачки
Достаточно 4 гигабайт.

Указание хостнейма и пароля
Потом вводим хостнейм (например, freebsd.fastvps.ru) и желаемый пароль.

Уведомление об уничтожении всех данных
Соглашаемся с форматированием обоих дисков и откидываемся на спинку стула :)

После окончания установки (она занимает около 10-15 минут) требуется перезагрузить машину командой
shutdown -r now
и после этого можно приступать к работе!

Установка XenServer 5.0 на сервера FastVPS.ru

Для корректной работы сети для всех дополнительных IP требуется взять MAC адреса, инчае все будет работать очень плохо. Но я бы не рекомендовал это решение, все равно проблем довольно много с ним.

Puppet, OpenVZ + отстающее или убегающее время

Подобная связка факторов может привести к неожиданным проблемам с Puppet, в частности он может просто отказываться авторизироваться (сброс на SSL шаге) или выдавать очень необычные ошибки. Так что будьте в курсе.

Также стоит следить за тем, чтобы время как на клиенте, так и на сервере было точным. Это тоже избавит еще от целого вороха проблем.

По теме пожаров

http://umalx.livejournal.com/4430.html

Установка VmWare ESXi 4.0 на NHS-1, NHS-2, NHS-3, NHS-24 от fastvps.ru

Стандартно, к сожалению, невозможна. Выдается ошибка - "No compatible network adapter found. Please consult the product's Hardware Compatibility Guide (HCG) fro a list of supported adapters."



И поэтому нужно ставить адаптер Intel e1000, это платно - 35 евро единоразово + 15 евро / месяц ( flexi pack ).

Также для корректной работы сети, необходимо для всех дополнительных IP запросить MAC адреса, иначе сеть работать корректно не будет.

Да и в целом, заставить эту софтину работать корректно - стоит многого, мы не рекомендуем.

воскресенье, 8 августа 2010 г.

Установка Rsync сервера на CentOS Linux

По мотивам статьи http://phpsuxx.blogspot.com/2010/04/rsync.html решил написать мануал по установке rsync сервера и для CentOS.

Ставим xinetd (необходим для запуска rsync сервера):
yum install -y xinetd


Ставим сам rsync:
yum install -y rsync


Открываем конфиг rsync для xinetd:
vi /etc/xinetd.d/rsync


И заменяем в конфиге:
disable = yes

на
disable = no


Применяем настройки xinetd:
/etc/init.d/xinetd restart


Добавляем xinetd в автозапуск:

chkconfig xinetd on


Убеждаемся, что теперь xinetd слушает порт rsync:

netstat -lnpt | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7721/xinetd


Далеее создаем конфиг /etc/rsyncd.conf по аналогии с мануалом http://phpsuxx.blogspot.com/2010/04/rsync.html, но указываем немного другие имена групп:

uid = nobody
gid = nobody


После чего применяем изменения:
/etc/init.d/xinetd restart


Все, настройка закончена :) Базовые операции с rsync можете просмотреть в статье, ссылку на которую я привел выше.

Источник: http://am3n.profusehost.net/index.php?id=70

Возможные проблемы при автоматическом обновлении OpenVZ образов посредством yum

http://www.lamolabs.org/blog/1114/keeping-centos-5-openvz-images-up-to-date-with-yum/

Отличная обзорная книга по Debian

http://linux.togaware.com/

Установка Rsync сервера на Debian 6 Squeeze Linux через init.d

Ставим rsync:
apt-get install -y rsync


Если есть желание составить конфиг самому, то вот пример:
vi /usr/share/doc/rsync/examples/rsyncd.conf


В противном случае, создаем файл конфига:
vi /etc/rsyncd.conf


И вносим туда следующие строки:
# Global config
# pid file=/var/run/rsyncd.pid

[filearchive]
comment = Rsync file storage
path = /var/www/rsync
use chroot = yes
lock file = /var/lock/rsyncd
read only = yes
list = yes
uid = nobody
gid = nogroup
strict modes = yes
ignore errors = no
timeout = 600
transfer logging = yes
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz


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

Теперь создаем папку для хранения файлов, которые будем раздавать по rsync протоколу:
mkdir /var/www/rsync


Ради примера зальем туда небольшой tar.gz архив:
wget -P /var/www/rsync http://download.openvz.org/template/precreated/debian-6.0-x86_64.tar.gz

Настройка через /etc/init.d (рекомендуется)

Открываем конфиг:
vim /etc/default/rsync

Корректируем там:
RSYNC_ENABLE=false

Запускаем:
/etc/init.d/rsync start


Убеждаемся, что запустились:
ps aux |grep rsync
root 19542 0.0 0.0 2168 836 ? S 02:27 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
root 19553 0.0 0.0 1780 584 pts/0 S+ 02:27 0:00 grep rsync

Не стоит пугаться тому, что rsync работает от имени рута, при подключении клиентов они форкаются с заданными правами (nobody 20248):
ps aux|grep rsy
root 11901 0.5 0.0 35512 1864 ? Sl Mar29 2:17 /usr/sbin/rsyslogd -c4
root 19989 0.0 0.0 2168 832 ? S 02:37 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
nobody 20248 4.4 0.0 3576 1900 ? S 02:42 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
root 20256 0.0 0.0 1780 584 pts/0 S+ 02:42 0:00 grep rsy

Проверяем, слушается ли порт:
netstat -lnpt |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 19608/rsync
tcp6 0 0 :::873 :::* LISTEN 19608/rsync

Настройка через inet.d (не рекомендуется)

Ставим inetd демон:
apt-get install -y openbsd-inetd


Добавляем rsync в конфиг inetd (результат работы команды можно наблюдать в /etc/inetd.conf):
update-inetd --add 'rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon'


Перезапускаем inetd:
/etc/init.d/openbsd-inetd restart


Убеждаемся, что все хорошо и что inetd слушает 873й порт (порт rsync):
netstat -lnpt | grep inetd
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 11880/inetd

Тестирование


Теперь с удаленной машины либо локально делаем запрос листинга "хранилищ" rsync:
rsync localhost::
filearchive Rsync file storage


Это означает, что все хорошо и мы получили список, состоящий из нашего единственного ресурса.

Попробуем теперь получить список файлов ресурса filearchive:
rsync xx.xx.xx.xx::filearchive
drwxr-xr-x 4096 2010/08/08 03:54:38 .
-rw-r--r-- 140180113 2010/07/10 07:59:47 debian-5.0-x86_64.tar.gz


И, наконец, попробуем выполнить синхронизацию файла с удаленного ресурса filearchive с локальной папкой:

mkdir /root/archivecopy
rsync --progress xx.xx.xx.xx::filearchive/debian-5.0-x86_64.tar.gz /root/archivecopy


В результате получим файл в требуемой папке:

ls -la /root/archivecopy
total 134M
drwxr-xr-x 2 root root 4.0K 2010-08-08 04:02 .
drwxr-xr-x 16 root root 4.0K 2010-08-08 03:58 ..
-rw-r--r-- 1 root root 134M 2010-08-08 04:02 debian-5.0-x86_64.tar.gz


Но это еще не все! Если повторить предыдущую команду еще раз, то файл не будет скачен повторно, так как rsync выясняет, что файл не был изменен и его не нужно переливать повторно:
140180113 100% 116.55MB/s 0:00:01 (xfer#1, to-check=0/1)

sent 82988 bytes received 47504 bytes 52196.80 bytes/sec
total size is 140180113 speedup is 1074.24


Также можно выгрузить ресурс целиком:
rm -rf /root/archivecopy
mkdir /root/archivecopy
rsync -av xx.xx.xx.xx::filearchive /root/archivecopy


Вот результат:
ls -la /root/archivecopy
total 134M
drwxr-xr-x 2 root root 4.0K 2010-08-08 03:54 .
drwxr-xr-x 16 root root 4.0K 2010-08-08 04:09 ..
-rw-r--r-- 1 root root 134M 2010-07-10 07:59 debian-5.0-x86_64.tar.gz


Но тут надо быть аккуратнее, так как rsync может за компанию изменит права и самой папке /root/archivecopy, тут я не уверен в его поведении.

http://www.togaware.com/linux/survivor/Rsync_Server.html

четверг, 5 августа 2010 г.

ISPManager:При cookie-аутентификации, в конфигурационном файле необходимо задать парольную фразу установив значение директивы $cfg['blowfish_secret'].

Фикс: идем в возможности и выключаем / включаем phpmyadmin.

Либо вот так:
/usr/local/ispmgr/sbin/pkgctl activate myadmin

И кому будет нужна вся эта Ваша нефть через 20 лет?


На CrunchGear тест-драйв нового Nissan Leaf, четырехдверного компакта с полностью электрическим двигателем. $33,000 новая, плюс в США есть правительственная программа, позволяющая получить обратно до $7,500 (списанных с налогов) в случае покупки электрической машины, итого удовольствие за $25,500. Одного заряда батареи хватает на 150 км, итого Nissan позиционирует машину как инструмент для поездки на работу.


http://moskalyuk.name/2912

Критическая уязвимость в PhpMyAdmin и работающий эксплоит на нее

По проверенной информации, для PhpMyAdmin имеется эксплоит, позволяющий взломать сервер, как физический, так и виртуальный. Он уже используется как минимум пару дней и как результат его действий может быть наличие файлов /tmp/vm.c и /tmp/dd_ssh, являющихся зловредным ПО. Поэтому требуется в срочном порядке обновить PhpMyAdmin.

Инструкция по обновлению на Debian

Вот репорт об этой проблем от Debian Security Team:
http://www.debian.org/security/2010/dsa-2034

До обновления проверьте используемую версию Debian:
cat /etc/debian_version
5.0.5


Если цифры 5.0.*, то у Вас Lenny и продолжайте читать инструкцию. Если же 4.0.*, то стоит прибегнуть к услугам сторонних администраторов (либо нашей поддержки), чтобы они обновили систему до Lenny.

Для обновления PhpMyAdmin на Debian 5 Lenny сделайте следующее:
apt-get update;
apt-get upgrade -y phpmyadmin;


Если же Вы обладаете навыками администрирования, то лучше обновите всю систему целиком:
apt-get upgrade -y;


Инструкция по обновлению на CentOS

Сначала нужно подключить Epel репозиторий, это делается по инструкции: http://phpsuxx.blogspot.com/2009/03/centos-rhel.html

yum upgrade -y phpmyadmin;


Либо в идеале, если есть навыки администрирования, то обновляем всю систему:

yum update -y;


Уважаемые клиенты FastVPS! Если у Вас возникнут проблемы с обновлением, пишите в саппорт, мы все можем сделать за Вас!

Гарантированно уязвимые версии:

ii phpmyadmin 4:2.11.8.1-5+lenny3 MySQL web administration tool
ii phpmyadmin 4:2.11.8.1-5+lenny1 MySQL web administration tool


Также, если использовался конфиг PhpMyAdmin от ISPManager, то при входе в PhpMyAdmin после апдейта может выдаваться ошибка:

При cookie-аутентификации, в конфигурационном файле необходимо задать парольную фразу установив значение директивы $cfg['blowfish_secret']


Исправлять ее так: http://phpsuxx.blogspot.com/2010/08/ispmanager-cookie-cfgblowfishsecret.html

Еще тема с обсуждением: http://habrahabr.ru/blogs/infosecurity/101110/

Если я добавлю два MX с одинаковыми приоритетами, то письмо упадет на оба сервера?

Нет, это не так. Никакой почтовый сервер никогда не будет заниматься тем, что дублировать исходящие письма. Отказоустойчивость работы почтовой системы обеспечивается иначе - прописывается два MX, один с большим приоритетом, другой с меньшим. Если основной (у которого цифра меньше) недоступен по тем или иным причинам, то почтовый сервер отправителя подключается на второй MX и отправит письмо на него. То есть, иными словами, письмо упадет на другой сервер. Таким образом, для "удобной" отказоустойчивость кроме двух внешних серверов (их часто называют релеями, 'relay'), нужно предусмотреть отказоустойчивую систему хранения и доступа к письмам.

Если же так сильно требуется отказоустойчивость, воспользуйтесь сервисами Google для домена, это намного проще.

Как отредактировать тикет в RedMine - пошаговое руководство в картинках

http://www.question-defense.com/2009/04/27/redmine-how-to-edit-an-issue-description-and-issue-subject

RedMine: Subversion репо с доступом по https и ошибка "The entry or revision was not found in the repository"

А в логах:

Line:
Position:
Last 80 unconsumed characters:
Output was:
?xml version="1.0"?
list
list
path="https://svn.domain.ru/repo"
Rendering template within layouts/base
Completed in 1648ms (View: 40, DB: 36) | 500 Internal Server Error [http://redmine.domain.ru/projects/repo/repository]


Проблема вызвана тем, что сертификат https коннекта к репо самоподписной.

Создадим новую папку для конфига svn:

mkdir /opt/svnredmine
chown redmine:redmine /opt/svnredmine/


А также немного подправим логику работы RedMine:

vi /opt/redmine/lib/redmine/scm/adapters/subversion_adapter.rb


И на строке заменяем:

SVN_BIN = "svn"


на:

SVN_BIN = "svn --non-interactive --config-dir /opt/svnredmine"


Теперь входим под юзером redmine и делаем чекаут:
su redmine
cd /tmp
svn --config-dir /opt/svnredmine co https://svn.domain.ru/repo --username=redmine


И при предложении принять сертификат щелкаем p и получаем чекаут.

Теперь перезапускаем апача:

/etc/init.d/apache2 restart


И после этого идем во вкладку Repository в RedMine и через несколько секунд получаем репозиторий :)

понедельник, 2 августа 2010 г.

jailbrake в законе!

Принятая Конгрессом в понедельник поправка к DMCA в ряде случаев признаёт правомерность обхода технических средств защиты авторских прав и иных ограничений, относящихся к устройствам и данным.

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


via http://feedproxy.google.com/~r/org/LOR/~3/bSA31f8PkLQ/5162211

воскресенье, 1 августа 2010 г.

ГОСТ "Техническое задание на создание автоматизированной системы"

http://www.nist.ru/hr/doc/gost/34-602-89.htm

Официальный твиттер Перзидента Рссоии :)

Добро пожаловать: http://twitter.com/KermlinRussia !

Надеюсь, Вы в курсе, что rm -rf / не работает (по крайней мере на Debian) ?

НЕ ПОВТОРЯТЬ ОПАСНО ДЛЯ ЖИЗНИ!!!!

rm -rf /
rm: cannot remove root directory `/'


НЕ ПОВТОРЯТЬ ОПАСНО ДЛЯ ЖИЗНИ!!!!

Установка Passenger (mod_rails) на Debian 5 Lenny

Итак, это самый правильный на данный момент способ запуска Rails софта, но в стандартных репо Passenger отсутствует, поэтому будем собирать его почти из сорцов.

Ставим Апача и Ruby
apt-get install -y apache2 apache2-mpm-prefork ruby1.8 rubygems1.8


Скачиваем gem Passwngerа:
gem install passenger


Ставим дополнительные gem ы:

gem install bacon


Ставим dev пакеты, необходимые для сборки модуля:
apt-get install -y libapr1-dev apache2-prefork-dev


Запускаем инсталлятор модуля:

/var/lib/gems/1.8/bin/passenger-install-apache2-module


Please edit your Apache configuration file, and add these lines:

После установки скрипт выдаст конфиг, который нужно вписать Апачу:
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby1.8


Создаем файл:
vi /etc/apache2/mods-enabled/passenger.conf

И добавляем в него указанные строки.

Перезапускаем Апача:
/etc/init.d/apache2 restart


Проверяем, подцепился ли модуль к Апаче:
apache2ctl -M 2>&1 | grep pass
passenger_module (shared)


Теперь остается дело за малым - подключить собственно Rails приложение для работы под Passenger ом, для примера сделаем это с RedMine:

rm /etc/apache2/sites-enabled/000-default
vi /etc/apache2/sites-enabled/000-default


Вносим в конфиг следующие строки:

<VirtualHost *:80>
DocumentRoot /opt/redmine/public
<Directory /opt/redmine/public>
AllowOverride None
</Directory>
</VirtualHost>


Перезапускаем Апача:

/etc/init.d/apache2 restart


Вуаля, теперь заходя на 80й порт сервера можно видеть отлично работающий RedMine под Апачем :)

Кстати, Passenger с недавнего времени есть в репо Debian:

libapache2-mod-passenger - Rails and Rack support for Apache2


Источник: http://articles.slicehost.com/2009/7/3/debian-lenny-installing-passenger-with-apache

ERROR: While executing gem ... (...) bad response Moved Permanently 301

Имеем вот такую ошибку:

gem list -r

*** REMOTE GEMS ***

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
bad response Moved Permanently 301 (http://gems.rubyforge.org/latest_specs.4.8)


Делаем следующее:
gem sources -a http://production.s3.rubygems.org/
gem sources -r http://gems.rubyforge.org/


Взято с: http://www.zeux.at/node/54

Установка RedMine 1.0 с интеграцией в svn на Debian 5 Lenny на Passenger

Что это такое и зачем нужно подробно можно прочесть здесь: http://www.redmine.org/projects/redmine/wiki


mkdir /opt/redmine
cd /opt/redmine
wget http://rubyforge.org/frs/download.php/71723/redmine-1.0.0.tar.gz
tar -xf redmine-1.0.0.tar.gz


Удаляем дистрибутив и изменяем имя папки:
rm -f redmine-1.0.0.tar.gz
mv redmine-1.0.0/* ./
rm -r redmine-1.0.0


Теперь можем прочесть инструкцию по установке:
vi doc/INSTALL


Ставим зависимости:
apt-get install -y ruby librmagick-ruby1.8 rubygems1.8 libmysql-ruby libopenssl-ruby subversion ruby-dev libfcgi-dev g++


Создаем бд redmine с пользователем redmineuser и заданным паролем по этому мануалу: http://phpsuxx.blogspot.com/2009/12/mysql-debian5-lenny.html

Перемещаем конфиг БД:

mv config/database.yml.example config/database.yml


Открываем конфиг БД:
vi config/database.yml


Ищем там блок "production" и там указываем имя БД, имя юзера и пароль к только что созданной базе.

При установке gem`ов может вывалиться ошибка про 301 move permanently, вот так ее фиксить:
http://phpsuxx.blogspot.com/2010/08/error-while-executing-gem-bad-response.html

Ставим ряд необходимых расширений:

gem install rake
gem install rack --version=1.0.1
gem install test-spec
gem install camping
gem install fcgi
gem install memcache-client
gem install mongrel
gem install --version=2.0.1 ruby-openid
gem install thin


Генерируем секретный ключ для сессий:

/var/lib/gems/1.8/bin/rake generate_session_store


Создаем структуру базы данных:

/var/lib/gems/1.8/bin/rake db:migrate RAILS_ENV="production"


Если же юзать rake из репозитория, то будет выдана ошибка:
rake aborted!
undefined method `reenable' for [environment]>:Rake::Task


Конфигурируем почту:

mv config/email.yml.example config/email.yml
vi config/email.yml


И там приводим блок production в следующий вид:
production:
delivery_method: :sendmail
smtp_settings:
address: 127.0.0.1
port: 25
domain: example.net
authentication: :none
user_name: "redmine@example.net"
password: "redmine"


Создаем юзера для работы redmine:
useradd redmine


Создаем папки необходимые для работы RedMine:
mkdir -p tmp public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets


Зааааапускаем:

su redmine
ruby script/server -e production


Открываем бразуре страницу: http://xx.xx.xx:3000 и логинимся под паролем admin / admin :)

После этого нужно выполнить первичную инициализацию, для этого идем на вкладку Administration и выбираем кнопочку "Load the default configuration data (roles, trackers, statuses, workflow) and to adjust the application settings". Все, на этом установка закончена.

Далее рекомендую сделать следующее - Administration - Settings - Authentication - Self-registration - Disabled, это запретит возможность регистрации сторонних юзеров в баг-трекере. Также на той же вкладке рекомендую поставить "Autologin", 7 days, чтобы каждый раз не вводить пароль. Также еще стоит снять галочку "Lost password", чтобы запретить восстановление паролей. Также на вкладке General я бы рекомендовал увеличить размер аттача, "Attachment max. size" 51200. Также я бы рекомендовал отключить уведомления о своих же правках тикетов, для этого идем в "My account", а далее снимаем галочку с " I don't want to be notified of changes that I make myself".

Но использовать такую связку в продакшене я бы не рекомендовал, для этого лучше использовать mod_passenger, установку которого я описал в следующей статье: http://phpsuxx.blogspot.com/2010/08/passenger-modrails-debian-5-lenny.html

Также я бы рекомендовал переключить Апача в режим "только https".

Для этого выполняем на машине с уже настроенным Passanger следующее:


a2enmod ssl
/etc/init.d/apache2 restart


Далее ставим пэкадж, который сгенерирует самоподписные SSL сертификаты (подробности в /usr/share/doc/apache2.2-common/README.Debian.gz):
apt-get install -y ssl-cert


Далее корректируем конфиг vhost панельки:

vi /etc/apache2/sites-enabled/000-default


Добавляем туда следующее:



<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

DocumentRoot /opt/redmine/public
<Directory /opt/redmine/public>
AllowOverride None
</Directory>
</VirtualHost>



И перезапускаем Апача:
/etc/init.d/apache2 restart


После этого идем в настройки RedMine - Administration - Settings - Protocol - HTTPS. Это сделает все письма в почте https ными.

Update:
и вполне оправданное не работает:

Protocol used to generate links in email notifications. Default: http

Links in email are "guessed", but can't determine whether you're using an unsecure web server (http) or a secure one (https -> http over SSL).

Хостинг будущего

http://heroku.com/