query string и rewrite в nginx

На одном из сайтов потребовалось сделать 301 редирект всех URL на индекс, я прописал в конфиг вот такую конструкцию:

if ( !-e $request_filename ) {
  rewrite ^.*$ / permanent;
}

Увы, URL, к которым добавлялись какие-то параметры типа http://example.com/url1?test=1 редиректились не совсем правильно: http://example.com/?test=1. Оказалось, чтобы этого избежать, подправить нужно совсем чуть-чуть:

if ( !-e $request_filename ) {
  rewrite ^.*$ /? permanent;
}

И все, редирект теперь срабатывает на http://example.com/

Sony Ericsson j108i (cedar) как модем

Смотрю, ищут подобный вопрос достаточно активно. На самом деле, проблем с этим никаких. Вот что надо сделать.

  1. Подключаем телефон к компьютеру. (Для пользователей Windows 7 есть инструкция)
  2. Запускаем PC Companion, выбираем приложение «Подключение к интернету»
  3. Жмем в нем кнопку «Подключить» и через несколько секунд связь будет установлена

Установка redmine на Debian Squeeze

Попросили сделать хост с редмайном для нескольких проектов, ставлю на Debian 6. В репах squeeze редмайн какой-то совсем старый, аж версии 1.0.1, а в бекпортах 1.1.2, хочется же последний, поэтому ставить буду из testing (или можно из unstable).

В файле /etc/apt/sources.list добавить строчку для testing:

deb http://ftp.us.debian.org/debian/ testing main contrib non-free

Сделать привязку к squeeze в /etc/apt/preferences или preferences.d, например, так

Package: *
Pin: release n=squeeze
Pin-Priority: 700

Package: *
Pin: release n=wheezy
Pin-Priority: -1

Далее установить редмайн командами

apt-get update
apt-get install mysql-server
apt-get install -t wheezy redmine redmine-mysql

Обновить придется половину системы, так что это будет уже не squeeze в чистом виде, но уж если хочется…

Теперь надо выдать через веб только что установленную систему. Есть множество способов это сделать, я использую apache+mod_fcgid

apt-get install apache2 libapache2-mod-fcgid libfcgi-ruby1.8

Создаем сайт для редмайна в /etc/apache2/sites-available/redmine с таким содержимым

SocketPath "/var/run/redmine/sockets/default"
<VirtualHost *:80>
  ServerName redmine.example.com
  DefaultInitEnv RAILS_RELATIVE_URL_ROOT ""
  DefaultInitEnv X_DEBIAN_SITEID "default"

  Alias "/plugin_assets/" /var/cache/redmine/default/plugin_assets/
  DocumentRoot /usr/share/redmine/public

  <Directory "/usr/share/redmine/public">
    Options +FollowSymLinks +ExecCGI
    Order allow,deny
    Allow from all
    RewriteEngine On
    RewriteRule ^$ index.html [QSA]
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
  </Directory>
</VirtualHost>

Включаем сайт

a2ensite redmine

и рерайты

a2enmod rewrite

правим права на некоторые каталоги

chown -R www-data /var/run/redmine

перезапустим апач

service apache2 restart

и можно заходить на свежеустановленный редмайн как admin / admin. Не забудьте поставить скин BaseCamp.

Поиск по истории в mysql-5.5

Обновил недавно некоторые сервера с mysql до версии 5.5 и заметил, что пропал обратный поиск по истории через ctrl-r. Оказалось, что теперь вместо readline по умолчанию используется библиотека editline. Чтобы вернуть привычный поиск, нужно в файл ~/.editrc добавить строчку

bind «^R» em-inc-search-prev

и все будет по-прежнему (ну почти).

Клонирование линукс-систем

Обычно у меня каждый сервер выходит уникальным, т.к. проекты и цели везде разные, а вот тут столкнулся с тем, что надо развернуть идентичный набор на 20 физических серверов (помочь попросили).

Взял по привычке Clonezilla, которая неплохо себя зарекомендовала при копировании систем на Windows. Странным образом она не только отказалась работать с софтовым рейдом в линуксе (ну это было ожидаемо), но и вообще предложила копировать диски посекторно, что при объеме в 1 ТБ обещало вылиться в 20 часов копирования только одной системы.

Почему так? Непонятно, может я что упустил в Clonezilla? В итоге так и пришлось руками копировать разделы, создавать новый софт-рейд на клоне и копировать все с мастера через ssh+rsync, восстанавливать загрузчик — путь в общем знакомый. Странно, почему такой фигни нет из коробки?

PS: зато узнал, как убить заголовок ненужного md-рейда:

mdadm --zero-superblock /dev/sda (ну или что-то еще)