Архив Январь 2010

crypto: gpg

gpg —list-keys // получить список всех ключей установленных в системе
gpg —list-sigs // получить список всех ключей в системе, да еще и со всеми подписями
gpg —sign-key ID // подписать ключ с определенным ID
gpg —import KEY // импортировать ключ в систему.
gpg —export -a -o KEY.asc ID // экспортировать ключ в ascii формате в файл KEY.asc

system: windows 7 wifi

Интересно что в windows7 wifi может не находить точку из-за того что на ней настроен 13ый канал, делаем вывод — 13 канал юзать не кошерно.

(k)ubuntu: 9.10 + Asus K40IN

Мой Asus K40IN ужасно не хотел ребутиться, выключался/засыпал/просыпался — всё прекрасно, а вот в ребут не уходил. Сказывалась проблема с ACPI на всех таких асусах. И вот я её решил:

Для начала обновимся, ну мало ли, вдруг разработчики уже решили эту траблу.
sudo aptitude update -y
sudo aptitude upgrade -y

Далее Граб2 редактируется не простой сменой menu.lst а спец.файлом:
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=»acpi_enforce_resources=lax reboot=p»

А теперь на основе файла конфигурации, генерируем файлы для работы граб2
sudo update-grub

Всё теперь, чтобы мягко отключить сервисы делаем
sudo reboot
после того как всё повиснет выключаем, а затем включаем питание.

а для 1ого grub, достаточно в /boot/grun/menu.lst сделать что-то типа:
linux /vmlinuz-2.6.30-084 root=/dev/sda3 ro GRUB_CMDLINE_LINUX= reboot=p

Ну и мы получили систему которая грузится и ребутится с удовольствием ;)

system: full hdd backup (mirror)

Создаем полное зеркало винта, для этого 2ой винт должен быть по вместимости не меньше 1ого.
dd if=/dev/sda of=/dev/sdb BS=4M

В результате получается зеркало 1ого винта на 2ом, т.е. если накрывается 1ый ставим 2ой и всё.
Кстати uuid’ы тоже скопируются, т.ч. лучше /etc/fstab перевести с них на стандартные имена разделов типа /dev/sda1.

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

System: monitoring (monit)

Устанавливаем: aptitude install monit
nano /etc/default/monit
startup=1

Настраиваем: nano /etc/monit/monitrc
set daemon 30 # проверять объекты каждые 30 секунд
with start delay 240 # первое обновление через 4 минуты после старта монита

set logfile syslog facility log_daemon

include /etc/monit/conf.d/* # каталог с конфигами.

Будем мониторить php-cgi который мы ставили в предыдущей статье.
nano /etc/monit/conf.d/php-cgi

check process php-cgi with pidfile /var/log/nginx/php.pid
start program = "/etc/init.d/php-fastcgi"
stop program = "/usr/bin/killall php-cgi"
if failed unixsocket /tmp/php-cgi.sock then restart

Перезапускаем монит:
/etc/init.d/monit restart

Далее killall php-cgi и ждем 4 минуты
А ошибки в настройке монита можно промониторить тут:
cat /var/log/message |grep monit

Web: nginx+php-cgi+spawn-fcgi

Apache+php — связка старая, стабильная, хорошая, но порой по сравнению с тем же nginx медленная и прожорливая… исправим этот недостаток.
Итак, устанавливаем необходимые компоненты:
aptitude install nginx php5 php-cgi spawn-fcgi

#Вариант 1
Запускаем php-cgi с помощью spawn-fcgi:
spawn-fcgi -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

#Вариант 2
или используя юникс сокеты:
exec /usr/bin/spawn-fcgi -s /tmp/php-cgi.sock /usr/bin/php-cgi -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

Пишем скрипт для запуска в несколько процессов:
#!/bin/bash
exec 2>&1
PHP_FCGI_CHILDREN=3 \
PHP_FCGI_MAX_REQUESTS=1000 \
#Вариант 1 (его оставлю закомменчиным)
#exec /usr/bin/spawn-fcgi -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data
#Вариант 2
exec /usr/bin/spawn-fcgi -s /tmp/php-cgi.sock /usr/bin/php-cgi -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

spawn-fcgi – одна из составных частей проекта Lighttpd. Предназначен он для того, что бы запустить php, как FastCGI сервер, ну а с этим сервером может работать потом практически любой http сервер.

Правим конфиг nginx’a для работы с php:
nano /etc/nginx/sites-available/default


location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}


location ~ \.php$ {
fastcgi_intercept_errors on;
#Вариант 1
#fastcgi_pass 127.0.0.1:9000;
#Вариант 2
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

Cтартуем nginx:
/etc/init.d/nginx start

Теперь проверим как работает пыха:
cat > /var/www/nginx-default/index.php
<? phpinfo(); ?>

далее заходим на http://server_ip/index.php

если видим информация о пхп, то всё ок, если не видим, то перечитываем внимательно статью.

php: default charset

Была необходимость выводить на страничку результат скрипта. В системной консоле скрипт выдавал определенные данные с датами вида:
Fri Jan 15 08:14.
Когда же мой скрипт выводил их на страничку, то вывод был уже таков:
Пят Янв 15 08:14, при этом все моя страница имела кодировку cp1251, а вывод со скрипта шел в KOI8-R.

А решение проблемы оказалось простейшим:
Открываем на редактирование php.ini.
Находим переменную default_charset
и присваиваем ей значение default_charset = «CP1251 » .