FastNetMon

Saturday, 31 July 2010

Установка 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

Установка 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/

Наиболее популярные баг-трекеры

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

1. Mantis BT, офсайт. Довольно универсальный баг-трекер, нет явной ориентации на разработку ПО, может быть использован для почти любой сферы деятельности. По тем же причинам, не имеет интеграции с VCS. Не отличается наглядностью, не имеет поддержки графиков.
2. Trac, офсайт. Баг-трекер жестко ориентированный на разработку ПО, имеет ряд полезных функций для этого - встроенную wiki и интеграцию с VCS. Это старожил данного типа ПО со всеми вытекающими последствиями, имеет проблемы с расширяемостью и не имеет многих новых фич типа того же Agile.
3. Redmine, офсайт. Представитель нового поколения, написан на модном Ruby, имеет интеграцию с VCS (svn, git, Darcs, cvs, Mercurial, Bazaar), имеет поддержку wiki, имеет поддержку диаграм Гантта, имеет поддержку Agile, имеет поддержку плагинов (вот их каталог), а также отличается очень красивым и удобным интерфейсом. Пожалуй, лучший баг-трекер из OpenSource решений.
4. BugZilla, офсайт. Из всего этого списка BugZilla - самый настоящий динозавр среди баг-трекеров, никаких новационных фич, никаких удобств для пользователя, никакого удобного интерфейса. Только самое нужное, спартанский набор. Не рекомендую для новых проектов.
5. JIRA, офсайт. Платный баг-трекер с очень широким функционалом и закрытым кодом. В этот список я его включил лишь потому, что лицензия на 10 разработчиков стоит лишь $10, что делает его почти бесплатным. Функционал же этого продукта просто поражает, список их клиентов тоже (один Boeing чего стоит) :)
6. FogBugz, офсайт. Баг-трекер на C#, от знаменитого Джоэла Спольски. Сильно платный ($999 для 5 пользователей либо Hostd решение в расчете $25 за пользователя в месяц), только для Windows, включен в список лишь для общей информации.
7. TrackStudio - функционально ближе всего к JIRA (из комментариев).


Еще очень много баг-трекеров можно найти в вике: http://en.wikipedia.org/wiki/List_of_project_management_software

Tuesday, 27 July 2010

Миграция с Mantis на RedMine

http://blog.foaa.de/2010/04/non-destructive-migration-from-mantis-to-redmine/

Редактирование образов для OpenVZ

Часто возникает задача скорректировать какой-либо конфиг в образе для OpenVZ, которые представляет собой обычный tar.gz архив.

Создаем папку, где будем собирать образ:
mkdir /tmp/newimage_debian-5.0-x86_64-ispmanager-superlite


Копируем в нее образ, который планируем изменить:
cp debian-5.0-x86_64-ispmanager-superlite.tar.gz /tmp/newimage_debian-5.0-x86_64-ispmanager-superlite


Переходим в новую папку:
cd /tmp/newimage_debian-5.0-x86_64-ispmanager-superlite


Распаковываем образ в текущую папку:
tar -xf debian-5.0-x86_64-ispmanager-superlite.tar.gz


Удаляем исходный образ:
rm debian-5.0-x86_64-ispmanager-superlite.tar.gz


Готовимся к чруту:
mount --bind /dev dev
mount --bind /proc proc
mount --bind /sys sys


Чрутимся в папку образа и выполняем требуемые изменения:
chroot ./


Далее, допустим, обновляем систему:
apt-get update;
apt-get upgrade;
# чтобы кэш пакетов место не занимал
apt-get clean;


Либо пример для CentOS:
yum update
yum clean all


После того, как изменения внесены, выходим из chroot:
exit


Размонтируем:
umount dev
umount proc
umount sys


Архивируем образ обратно:
tar -cpzf ./debian-5.0-x86_64-ispmanager-superlite.tar.gz *


Все, образ изменен без потери функциональности :)

За ошибки нужно платить, миллионами


В «Ведомостях» сообщили, что Аэрофлот срочно порвал контакты с банком «ВТБ-24», отказавшись от системы «Ассист».
Решение было принято в связи с тем, что из-за хакерской атаки на систему Аэрофлот почти неделю не мог принимать электронные платежи за билеты.
Ежедневно страдали десятки тысяч людей, не имевших возможности приобрести билеты без очередей и со скидками.
Руководство «Аэрофлота» «считает недопустимым» то, что на устранение последствий хакерской атаки ушло семь дней, и с сегодняшнего дня авиакомпания начнет переходить на систему интернет-платежей Альфа-банка.


Крайне показательно, крайне ПРАВИЛЬНО. А еще напомню, что Аэрофлот был крупнейшим клиентом системы Ассист.

источник: http://community.livejournal.com/ru_telecom/535279.html

Сравнение MySQL и PostgreSQL на уровне устройства

http://www.ibm.com/developerworks/ru/library/os-mysql-postgresql/01/index.html?ca=drs-

Восстановление удаленных фотографий с флеш-карты

http://www.debian-administration.org/article/Recovering_deleted_images_from_flash_cards

Структура данных "Фильтр Блума"

Очень интересно, рекомендую к ознакомлению: http://alenacpp.blogspot.com/2010/07/blog-post_27.html