Про Чехию

Скоро лето — пора отпусков. Как и любой нормальный человек, я тоже люблю отдыхать, но к сожалению, удаётся это пока не так часто как хотелось бы. Особенно с учётом, что на серверах порядок, всё работает как часы и большинство процессов выполняется автоматически.

Но тем не менее, иногда удаётся вырваться в какое-нибудь интересное место, которое настолько западает в душу, что начинаешь подумывать, а не остаться ли там жить навсегда? Одно из таких мест — Карловы Вары в Чехии.

Во-первых, Чехия широко известна на весь мир своим пивом, а пиво — один из лучших друзей хорошего админа. 😉 Во-вторых, в этом городе сформировалась довольно большая русская община, найти людей по интересам намного проще, чем где-нибудь на островах в Тихом океане. Единственный минус, но и в тоже время плюс — недешёвая недвижимость. Судя по информации с каталога недвижимости в Чехии, город не растёт, поэтому квартиры довольно дорогие. Впрочем, можно попробовать купить дом или квартиру в ипотеку — проценты в местных банках всё же поменьше, чем у нас. У меня в Чехии хватает друзей-знакомых айтишников, которые в своё время перебрались туда — ни один не вернулся, всё им там нравится. Вот и я глядя на них начал задумываться о переезде 🙂

Установка и настройка Redmine в Debian Squeeze с Ruby-on-Rails и Apache2-Passenger

Потребовалось поставить на одном сервере redmine для управления проектами. Сказано — сделано 😉

Сначала ставим необходимые пакеты:

warehouse:~# apt-get install mysql-server ruby rubygems rails libcurl4-openssl-dev libssl-dev zlib1g-dev apache2-prefork-dev libapr1-dev libaprutil1-dev apache2 libapache2-mod-fastcgi libfcgi-ruby1.8 libmysql-ruby libopenssl-ruby1.8 ruby-dev ruby libzlib-ruby rdoc irb libmysql-ruby libopenssl-ruby1.8

Создадим каталог, в котором будет лежать redmine:

warehouse:~# mkdir /var/redmine

Качаем исходники:

warehouse:~# wget http://rubyforge.org/frs/download.php/74128/redmine-1.1.1.tar.gz

распаковываем архив:

warehouse:~# tar zxf redmine-1.1.1.tar.gz

копируем файлы в папку

warehouse:~# cp -r redmine-1.1.1/* /var/redmine/

Поставим недостающие компоненты:

warehouse:~# gem install rails -v=2.3.5
warehouse:~# gem install rails —include-dependencies
warehouse:~# gem install rack -v=1.0.1
warehouse:~# gem install -v=0.4.2 i18n
warehouse:~# gem install passenger
warehouse:~# gem install mysql
warehouse:~# cd /var/redmine
warehouse:/var/redmine# rake generate_session_store

Скопируем пример конфигурационного файла:

warehouse:/var/redmine# cp config/database.yml.example config/database.yml

Создадим базу данных и пользователя redmine в mysql:

warehouse:/var/redmine# mysql -u root -p
mysql> create database redmine character set utf8;
mysql> create user ‘redmine’@’localhost’ identified by ‘my_password’;
mysql> grant all privileges on redmine.* to ‘redmine’@’localhost’;

Сконфигурируем доступ redmine к mysql в секции production:

warehouse:/var/redmine# mcedit config/database.yml

и укажем там логин-пароль mysql

production:
adapter: mysql
database: redmine
host: localhost
username: root
password: my_password
encoding: utf8

Теперь выполняем следующее:

warehouse:/var/redmine# RAILS_ENV=production rake db:migrate
warehouse:/var/redmine# RAILS_ENV=production rake redmine:load_default_data

На вопрос о выборе языка я указал английский:

Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] en
====================================
Default configuration data loaded.

И наконец запустим тестовый сервер

warehouse:/var/redmine# ruby script/server webrick -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
/var/redmine/config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-03-11 22:09:12] INFO WEBrick 1.3.1
[2011-03-11 22:09:12] INFO ruby 1.8.7 (2010-08-16) [i486-linux]
[2011-03-11 22:09:18] INFO WEBrick::HTTPServer#start: pid=16467 port=3000

Как видно, всё прошло успешно и запустилось 🙂

Теперь вторая часть — прикрутим redmine к вебсерверу Apache.

Установим passenger:

warehouse:~# /var/lib/gems/1.8/bin/passenger-install-apache2-module

Установщик у него умный, если чего-то не будет хватать, он подскажет. В моём случае всё необходимое было установлено, поэтому он принялся за сборку модуля passenger для Apache.

После отработки установщика получится модуль апача, который предстоит прописать в конфигурационных файлах:

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.5
PassengerRuby /usr/bin/ruby1.8

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific configuration!

Press ENTER to continue.

Сделаем то, что просит установщик 🙂

warehouse:~# mcedit /etc/apache2/mods-available/passenger.load

и добавим туда строчку:

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.5/ext/apache2/mod_passenger.so

warehouse:~# mcedit /etc/apache2/mods-available/passenger.conf

и добавим туда строчки:

PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.5
PassengerRuby /usr/bin/ruby1.8

После этого активируем модуль passenger:

warehouse:~# a2enmod passenger

Теперь добавим ещё один виртуальный хост:

warehouse:~# mcedit /etc/apache2/sites-available/redmine.local

и поместим в файл следующие строчки:

<VirtualHost *:80>
ServerName redmine.local
DocumentRoot /var/redmine/public
<Directory /var/redmine/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>

Только не забываем указать ваш хост и путь до redmine.

Создаём символическую ссылку:

warehouse:~# ln /etc/apache2/sites-available/redmine.local /etc/apache2/sites-enabled/redmine.local

Разрешим загрузку модуля rewrite:

warehouse:~# ln /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

Последние штрихи:

warehouse:~# cp /var/redmine/public/htaccess.fcgi.example /var/redmine/public/.htaccess
warehouse:~# cp /var/redmine/public/dispatch.fcgi.example /var/redmine/public/dispatch.fcgi

Рестартуем апач:

warehouse:~# /etc/init.d/apache2 restart

И открываем redmine по указанному адресу. В моём случае это redmine.local. Теперь можно зайти в систему под администратором: логин — admin, пароль — admin. Пароль рекомендуется сменить 😉

На этом всё. Если у вас что-то не получилось в процессе установки — добро пожаловать в комментарии.

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

Логирование файловых операций в Samba

Информационный партнер: мобильные телефоны Philips. Раньше я скептически относился к телефонам этой марки, но в последнее время изменил своё мнение. Есть у них и вполне достойные модели.

Понадобилось мне вести учёт всех операций доступа к расшаренным файлам на Samba сервере. Как оказалось, сделать это очень просто.

Добавляем в конфигурационный файл /etc/samba/smb.conf следующие строки:

[Incoming]
path = /media/disk1/Incoming
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%s
full_audit:success = open opendir read pwrite unlink
full_audit:failure = all
full_audit:facility = LOCAL7
full_audit:priority = ALERT

Эта конструкция будет записывать в лог операции открытия файла, открытия каталогов, чтения, удаления и записи файлов.

Теперь нужно добавить в файл /etc/rsyslog.conf строчку:

local7.* /var/log/samba/audit.log

Рестарт samba и rsyslogd:

warehouse:~# /etc/init.d/samba restart && /etc/init.d/rsyslogd restart

Вуаля — в файле /var/log/samba/audit.log будут появляться логи операций. Полный список переменных в full_audit:prefix можно посмотреть здесь. Список доступных к логированию операций — тут.

Настройка домена .РФ в nginx и apache

Довелось сегодня настроить .рф домен в nginx. Моё личное отношение к .рф доменам — это какой-то несмешной анекдот. Но, личное отдельно, а работа отдельно.

Итак, чтобы настроить .рф домен в nginx в server_name нужно прописать его в пуникоде, то есть «xn--d1acufc.xn--p1ai», а не «домен.рф». Тоже также надо писать в конфиге Apache, если он у вас используется.

Для перевода имени домена в пуникод используйте конвертер, например www.punycoder.com

Вышел Debian 6.0 «Squeeze»

Debian Squeeze наконец-то стал стабильным и можно обновиться с Lenny. Сейчас содержимое /etc/apt/sources.list у меня выглядит так:

deb http://http.us.debian.org/debian lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib

Меняю его следующим образом:

deb http://http.us.debian.org/debian squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib

и запускаю обновление системы:

warehouse:~# apt-get update && apt-get dist-upgrade

После окончания процесса обновления системы обновляю grub:

warehouse:~# upgrade-from-grub-legacy

Перезагрузил сервер — всё работает отлично.

Действительно ли Linux намного стабильнее Windows?