Как найти вирус на сайте

Оказывается, что популярные php-вирусы вполне хорошо обнаруживает серверный антивирус clamav. Это очень хорошо, потому что всякие Ai-Bolit`ы и Manul`ы мне не очень нравились, поскольку сами они работают на php, а значит каждый раз надо что-то куда-то скачать, обновить, запустить, долго ждать и т.п. Хотя если зараженный сайт висит на чужом виртуальном хостинге, то именно эти продукты являются хорошим и единственным решением. Но, к счастью, есть и простое серверное решение. Читать полностью

Как настроить авторизацию по ключу для ssh?

О том, что такое публичные/закрытые ключи и ssh-сервер я тут рассказывать не буду. Но вот авторизация по ключу иногда не хочет работать из коробки. Особенно это касается VPS на CentOS (ведь у каждого хостера свой базовый образ). Чтобы авторизация завелась в 99% случаев достаточно проверить лишь несколько моментов. Читать полностью »

Как установить PHP 5.6 на CentOS 6.x

На голом сервере проблема решается в две строчки. Сначала подключаем репозиторий webtatic, где всегда есть самые свежие версии PHP (кстати, на момент написания этой заметки там есть и PHP 7 для CentOS 6). Потом ставим ряд нужных нам пакетов (php 5.6 и его популярные расширения) из нового репозитория. Но есть нюансы, если у вас уже стоит php 5.3

Освобождаем место на сервере (чистим логи и т.д.)

Ротированные логи у нас на сервере имеют примерно такие имена файлов:
/var/www/site/public-access.log-20151001

Часть из них уже пожата, и, значит, имеет имена вида:
/var/www/site/public-access.log-20150201.gz

Задача: сжать те логи, которые уже ротированы, но ещё не сжаты. Решение:
find /var/www/* -type f -name "*.log-*" -not -name "*.gz" -exec gzip -9 {} \;

Настраиваем сервер samba на CentOS 7. Делаем шары для анонимных пользователей и с авторизацией

C одной стороны, истинным линуксоидам samba-шары ни к чему. Но, с другой, есть много современных устройств (типа умных телевизоров), которые живут в вашей домашней сети и уже сразу из коробки умеют работать с «самбой». Я уж молчу о том, что с самбой умеет работать любой компьютер на любой версии Windows. К тому же, samba очень быстрая (и протокол вообще, и его текущая реализация для Linux). Например, у меня на сервере в гигабитной сети с обычным жестким диском (не SSD) при записи на шару получается скорость 60–70 мегабайт в секунду, т.е. более 500 Мбит/с. В общем, будем настраивать. Читать полностью »

Что делать, если не отправляется почта из PHP

Тривиальные ситуации, когда имеется непорядок со значением sendmail_path в конфигурации php, решаются легко. Проверьте через phpinfo();, чтобы у вас было задано значение типа /usr/sbin/sendmail -t -i в конфиге, и чтобы за /usr/sbin/sendmail действительно скрывался установленный и работающий MTA. Но сегодня пришлось побеждать менее типовую проблему: из php-скрипта почта как бы отправлялась, но где-то дальше сообщения терялись. Читать полностью »

Установка PhantomJS на CentOS 7

PhantomJS отсутствует в базовом репозитории и в epel в виде готового rpm. Но его можно установить через npm. Однако если сразу пытаться ставить, то выплывет ошибка:
Phantom installation failed { [Error: Command failed: tar (child): bzip2

Причина её в том, что в CentOS 7 из коробки отсутствует bzip2. Но это не единственная проблема: следующая будет ждать вас при первом запуске phantomjs, он заругается на то, что не может найти libfontconfig.so.1. К счастью, обе проблемы решаются очень просто. Читать полностью »

Шпаргалка по postfix с прицелом на борьбу с исходящим спамом

Посмотреть длину очереди исходящей почты

Вывод в виде одного числа, удобно использовать в скриптах. Представленный ниже конвейер считаем, по сути, количество идентификаторов сообщений в очереди.

mailq | grep -c '^[0-9A-Z]'

Посмотреть длину очереди и суммарный объём писем в ней

Этот конвейер просто парсит последнюю строчку вывода postqueue.

postqueue -p | tail -1

Очистить всю очередь исходящей почты:

postsuper -d ALL

Показать пользователей (uid`ы), которые отправили больше всего писем

cat /var/log/maillog | grep 'uid=' | awk -F 'uid=' {'print$2'} | awk {'print $1'} | \
sed 's/,//g' | sort | uniq -c | sort -n | tail -10 | \
awk {'print "UID:",$2,"MESSAGES COUNT:",$1'}

Аналог apt-get purge для yum

В дебиановском менеджере пакетов apt-get есть два варианта удаления пакета: apt-get remove package — удаляет бинарники, но сохраняет файлы конфигурации, а вот apt-get purge package — удаляет принудительно и файлы конфигурации тоже. Последнее бывает удобно, когда после установки пакета вы такого навертели в конфигах, что проще начать всё заново с дефолтных.

В yum есть тоже две команды: yum erase package и yum remove package. Но они — лишь синонимы, не смотря на то, что некоторые ребята считают erase аналогом дебиановского purge. Оба этих синонима ведут себя при удалении пакета следующим образом: они удаляют все бинарники и все дефолтные конфиги, но сохраняют с расширением .rpmsave те конфиги, которые чем-то отличались от дефолтных. Читать полностью »

Как сменить hostname в CentOS 6 без перезагрузки

Команда hostname без параметров возвращает текущее имя хоста (часть хостнейма, скорее всего, вам и так показывается в приглашении bash). Если запустить команду с параметром в виде валидного доменного имени, например, hostname host1.mydomain.ru, то имя хоста сменится, но не на постоянной основе. Рассказываю, как сменить хостнейм навсегда и без перезагрузки. Читать полностью »