Ubuntu. Откат PHP с 5.3.2 на 5.2.10

Операционные системы 17.05.2010

Некоторое время назад я обновил свою Ubuntu на 10.04, при этом обновились все пакеты в соответствии с репозиторием новой убунты. Мне это не подходило, так как PHP стал 5.3.2 и Zend Optimizer в нем не работал, а он мне был срочно нужен на рабочей системе.

Как откатить?

Нам необходимо добавить старые репозитории.
Добавьте в конец файла «/etc/apt/sources.list»:

deb http://ru.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://ru.archive.ubuntu.com/ubuntu/ karmic main restricted

Далее, зайдите в «System > Administration > Synaptic Package Manager» и нажмите «Reload» (1).
После чего выберите пакет «php5» (2) (и другие, необходимые для даунгрейда) и нажмите «Ctrl+E» (или "Package > Force Version..." (3)) и выберите версию, у меня это «5.2.10» (4).

Если не появится версия «5.2.10» в Force Version, то зайдите в «Settings > Repositories > Other Software» и выберите репозитории, которые вы указали в конце файла «/etc/apt/sources.list».

Первые меры безопасности во FreeBSD

Операционные системы 09.04.2010

Не так давно попросили меня написать о первых мерах безопасности во FreeBSD. Я конечно протянул время, но статью всетаки публику, авось кому пригодиться.

Закрываем SSH

Отредактируйте в файле /etc/ssh/sshd_config следующие строки:

# Будет добавлено к названию версии, посмотреть можно через telnet на 2244 порт
VersionAddendum SuperPuperSSH-9.8.7
# Указываем порт который будем слушать, главное чтобы он отличался от 22-го,
# так как много тупых ботов подбирающих пароли на 22 порт
Port 2244
# Внешний адрес моей машины
ListenAddress 82.146.63.195

И еще рекомендую закрыть доступ для пользователя root, все в том же sshd_config закомментируйте строку:

#PermitRootLogin yes

От перебора паролей по SSH вам может помочь DenyHost.

Читать полностью »

Восстановление GRUB

Операционные системы 06.04.2010

Удалось мне немного поломать граб, из-за того что я удалил перед ним стоящий раздел с NTFS, ибо Windows мне уже не нужен. Что и следовало ожидать — появилась проблема:

error: unknown filesystem
grub rescue >

Читать полностью »

Ubuntu. Рабочее окружение Nginx+PHP5.3+FPM+MySQL

Операционные системы 16.03.2010

Собирали с васяцом на выходных рабочее окружение на своих нетбуках и решили юзать PHP 5.3 и PHP-FPM. Для себя я решил ставить все наиболее простым способом, если это возможно, поэтому сначала прибегаю к apt-get, а потом уже к сборке из сорцов. Кстати, если у вас уже установлен какой-либо PHP, то предварительно удалите его (libapache2-mod-php5 в том числе, если он есть).

Вообще эта инструкция применительна и к FreeBSD, просто вместо «apt-get install» используйте установку из портов.

Добавляем пользователя

Для начала создадим пользователя и группу www, от которой будет работать Nginx и PHP.

addgroup www
adduser --shell /usr/sbin/nologin --no-create-home --ingroup www --disabled-password --disabled-login www

Читать полностью »

MySQL. Остановка выполнения sql-запроса через триггер

Базы данных 02.03.2010

Как приостановить выполнения SQL после триггера? То есть, при определенных условиях, описанных в триггере надо остановить выполнения SQL который и вызвал этот триггер.
Я размышлял и гуглил на эту тему, но единственное что у меня получилось, это выполнять ошибочный SQL-код, тем самым останавливать выполнение SQL кода, который выполнится после триггера.

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

Ну это все слова, а теперь покажу реализацию:

delimiter //
DROP TRIGGER IF EXISTS `customers_update_status`//
CREATE TRIGGER `customers_update_status` BEFORE UPDATE ON `customers` FOR EACH ROW BEGIN
    IF new.`status` < old.`status` THEN
        BEGIN
            INSERT INTO `customers` SET old.`status` = "STOP_SQL_QUERY";
        END;
    END IF;
END//
delimiter ;

Поле status имеет тип ENUM и у него нет значения STOP_SQL_QUERY, поэтому происходит ошибка и SQL-запрос идущий за триггером не выполняется. Это не корректное, но единственное найденное мной решение. Вообще, наверное еще лучше чтобы был не INSERT, а UPDATE. Тогда будет ошибка более корректна с виду.

зы. Кстати на официальной страничке CREATE TRIGGER в камментах приводится именно такой способ по остановке выполнения sql-запроса.

Горящие туры в Турцию, заказать . путевки и туры в Египет